linux笔记
1.linux的文件目录结构 1.windows底下是一个盘符的概念,有c盘 d盘 e盘等等 硬盘/c盘/文件夹/文件 2.linux目录结构 以 / 为起点,找到 /底下的文件夹目录,例如/bin /opt /mnt 目录相关操作 . 当前目录 .. 上级目录 需求: 在/tmp目录底下创建,yuyan文件夹,然后在yuyan文件夹内,创建php,c,java,golang四个文件夹 [root@localhost tmp]# mkdir yuyan [root@localhost tmp]# cd yuyan [root@localhost yuyan]# mkdir c php java golang #mkdir参数的用法 -p mkdir -p yuyan3/{php,java,c,golang} linux中使用上下左右键,上下可以找到历史命令 ctrl + c #强制中断当前操作 rm -rf ./* windows环境变量:(使用 ; 分号分割环境变量) C:\mysql-5.7.23-winx64\mysql-5.7.23-winx64\bin; C:\ProgramData\Oracle\Java\javapath; c:\gtk\bin;C:\Python35\Scripts\; C:\Python35\; C:\Windows\system32; C:\Windows; C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0\; C:\Python27;C:\Program Files\MySQL\MySQL Server 5.7\bin; C:\Program Files\Git\cmd;C:\Program Files\nodejs\ d:\mysql/bin; linux环境变量(冒号分割环境变量) [root@localhost ~]# echo $PATH /usr/local/sbin: /usr/local/bin: /usr/sbin: /usr/bin: /root/bin python > python3.7 绝对路径,相对路径 #在当前路径下,创建caisong/liuye mkdir -p ./caisong/liuye #找到上一级/上一级的文件夹路径 ls ../../ #找到以/tmp为参照物的路径,找到根 / 文件夹的内容 ls ../../../ 创建虚拟机快照: 找到菜单 虚拟机 > 快照/管理快照 b kb mb gb tb pb eb *1024 linux文件系统: Ext3 linux快捷键: linux底下的tab键,用于命令自动补全 ctrl+l 清空当前终端信息 ctrl + c 强制终端操作 ctrl + d 断开会话 logout history 历史命令 !序号 快速执行历史命令 man rm man帮助手册 rm --help 查看命令帮助 #把echo输出的命令,重定向写入到文件中 #覆盖写入 echo "再困我就让你上来唱歌" > /tmp/s13.txt #追加写入 echo "再困我就让你上来跳舞" >> /tmp/s13.txt #重定向符号 > >> ip addr > /tmp/ip_info.txt #面试题需求 写python脚本,采集服务器的内存,cpu信息,到mysql中,tb2表 >show databases; >use info1; >show tables; >select * from tb1; id name value 1 memory 20G 2 cpu_count 5 思路: 导入os模块,执行查看内存,cpu信息的命令,把命令结果写入到一个文件,然后吧命令结果写入到文件,提取信息(re), 导入pymysql mkdir ../tmp/oldboy2/{python2,linux2} -p mkdir -p /tmp/oldboy/{python,linux} stat 查看文件详细信息
1.查看linux的path变量 echo $PATH 2.简述linux的文档目录结构 根目录 / ,在根目录下有 /root /bin /boot /dev /etc ..,在这些目录下又有别的目录可以存在文件或文件夹 3.递归创建文件夹/tmp/oldboy/python/{alex,wusir,nvshen,xiaofeng} mkdir -p /tmp/oldboy/python/{alex,wusir,nvshen,xiaofeng} 4.显示/tmp/下所有内容详细信息 ls /tmp -la stat /tmp/* 5.简述 / ~ - 的含义 / 根目录 ~ 家目录 - 上一次的目录 6.请简述你如何使用vi命令 vi 文件名 ,进入命令模式,在命令模式下按下i进入编辑模式,编辑完后按ESC返回命令模式,在命令模式下按下:进入末行模式,输入wq!保存并强制退出 7.查看/etc/passwd的内容并且打印行号 cat /etc/passwd -n 8.查看文本有哪些命令? cat tac vim more head tail less 9.linux xshell常用快捷键? Tab 补全 ctrl+l 清空终端信息 Ctrl+c 终止终端操作 Ctrl+d 断开会话 history历史命令 ! + 序号 (! +历史命令的前几个字母)执行历史命令 man 帮助手册 q退出man帮助手册 10.如何用echo清空一个文件? echo '' > 文件名 11.复制/tmp/下所有内容到/home,在修改文件前,先拷贝一份,防止内容被破坏 cp -r /tmp/ /home cp models.py models.py.bak 12.重命名test.py为my.py mv test.py my.py 13.强制删除/tmp下内容 rm -rf /tmp/ 14.找到服务器上的settings.py find / -name settings.py 15.找到/etc下的网卡配置文件,提示网卡配置文件名是ifc开头 find /etc/ -name ifc* 这里题目,请先cp /etc/passwd /tmp/ 拷贝文件 16.过滤出/tmp/passwd下有关root的信息 cat /tmp/passwd|grep 'root' 17.过滤出/tmp/passwd下除了/sbin/nologin的信息,且打印行号 cat /tmp/passwd|grep '/sbin/nologin' -v -n grep '/sbin/nologin' /tmp/passwd -nv 18.查看/tmp/passwd前25行 head -25 /tmp/passwd head -n -25 /tmp/passwd | ln 19.查看/tm/passwd后3行 tail -3 /tmp/passwd 20.不间断打印/var/log/py.log的信息 more /var/log/py.log 21.替换/tmp/passwd中的所有root为ROOT sed -i 's/root/ROOT/' /tmp/passwd 22.用sed删除'/tmp/passwd'中的5,10行 sed -i '5,10d' /tmp/passwd 23.配置rm别名为“禁止你用rm,谢谢”,然后取消别名 alias rm='echo 禁止你用rm,谢谢' unalias rm 24.将服务器1的/tmp/my.py远程传输到服务器2的/opt/目录下 scp /tmp/my.py root@192.168.1.155:/opt/ 25.将服务器2的/opt/test.py拷贝到服务器1的/home目录下 scp root@192.168.1.155:/opt/test.py /home 26.统计/var/log/文件夹大小 du -sh /var/log 27.简述top的常见参数 第一行:系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载 第二行:进程信息 进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数 第三行:cpu信息 第四行:内存信息 第五行:swap信息 28.给settings.py加锁,禁止删除 chattr +a /home/mytest1/mytest/settings.py 29.同步服务器时间到ntp.aliyun.com ntpdate -u ntp.aliyun.com 30.下载http://pythonav.cn/xiaobo.jpg图片 wget http://pythonav.cn/xiaobo.jpg 查看linux命令网址 http://linux.51yip.com/ http://man.linuxde.net/
1.查看yum源仓库 ls /etc/yum.repos.d/ 2.查看CentOs-Base.repo文件 [root@localhost yum.repos.d]# cat CentOS-Base.repo 3.配置yum源 https://opsx.alibaba.com/mirror 找到这个网站,然后找到centos7 执行下载阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all 清空yum软件源 yum makecache 生成缓存 4.查看yum源仓库 ls 5.安装epel源,用于下载第三方额外的软件(nginx,redis等等) yum install -y epel-release #通过这条命令安装epel源, 6.安装nginx软件测试 yum install nginx -y 7.系统服务管理命令 启动nginx服务 systemctl start nginx 启动nginx服务 systemctl status nginx 查看nginx服务存活状态 systemctl stop nginx systemctl restart nginx 8.此时浏览器访问10.0.0.10:80 大家把这个做一下,yum源配置 9.有的同学安装好了,但是windows访问不了,nginx服务 这就是防火墙的问题了 1.关闭系统自带的selinux setenforce 0 临时关闭 getenforce 查看selinux状态 sed -i "s/enable/disable/" /etc/selinux/config 永久关闭(需要重启) 但是!!!在生产环境公司服务器上,慎用!你可别瞎重启!! 2.关闭软件防火墙 iptables/firewalld iptables -F 清空防火墙规则 systemctl disable firewalld #禁止防火墙开机自启 systemctl stop firewalld #关闭防火墙服务 linux dns配置文件: /etc/resolv.conf uname -r 查看内核版本 cat /etc/redhat-release 查看linux发形版本 useradd duan #添加duan这个用户,并且创建duan用户组 passwd duan #修改用户的密码 会输入两次密码 dsbduan 添加普通用时,会在/home/duan 创建一个用户家目录 练习 1.安装lrzsz工具,上传下载文件 yum install lrzsz -y sz filename rz filename 2.查看linux当前用户 id 用户名 3.创建新的普通用户 useradd oldboy #修改oldboy密码 passwd oldboy 4.切换用户,查看/home/底下是否有oldboy文件夹 su - oldboy whoami 查看当前用户是谁 5.(选择性的做) 删除用户 userdel -r oldboy #删除用户和用户家目录 6.练习sudo命令,使用root身份去执行命令 详细配置都在https://www.cnblogs.com/pyyu/articles/9355477.html vim /etc/sudoers 打开文件 写入 ## Allow root to run any commands anywhere root ALL=(ALL) ALL chaoge ALL=(ALL) ALL #允许chaoge在任何地方,执行任何命令 7.然后测试是否能用普通用户执行sudo命令 sudo ls /root/ 文件都有属于自己的,属主(属于哪个用户),属组(属于哪个组) 文件类型 - rw- r-- r-- 1 root root 712819 Oct 15 01:12 girl.gif 4+2+0 400 400 644 755 421 401 401 rwx r-x r-x 700 rwx------ - 代表是普通文件 d 代表是目录/文件夹 b 代表设备文件 r 可读 4 w 可写 2 x 可执行 1 - 占位符,代表没有权限 0 -rw-r--r-- 1 root root 28 Oct 15 01:20 est.txt 普通文件 可读可写 可读 其他用户只读 chmod u+r filename 给文件的用户添加可读 chmod g-w 给文件的用户组的人,去掉可写权限 chmod o+x 给其他用户增加可执行的权限
作业 1.配置好阿里云yum源 生成yum缓存 下载nginx,并且启动nginx服务,使用浏览器访问10.0.0.10:80 nginx服务 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache yum install -y epel-release yum install nginx -y systemctl start nginx 2.下载lrzsz工具,方便linux和windows互相传文件 yum install lrzsz -y sz filename 发文件给window rz 从window下取文件 3.如何手动启动网卡? ifup eth0 4.linux的超级用户是什么?如何查看用户身份信息? root whoami id root 5.简单描述linux的用户管理 同一台机器可以有多个用户,一般这些用户为普通用户,普通用户可以登录计算机相互之间不受影响,但普通用户的权限是有限制的,root用户是管理员拥有所有权限 6.如何创建普通用户,并且修改用户密码,然后使用普通用户登录 useradd 用户名 passwd 密码 su - 用户名 7.在linux下如何切换用户 su - 用户名 8.如何使用root身份执行普通用户的命令?请详细说明配置步骤 visudo 在/etc/sudoers中增加用户名 用户名 ALL=(ALL) ALL sudo 命令 9.简述linux文件的权限有哪些? 读 写 执行 10.linux文件权限的755,700是什么意思? 755 rwxr-xr-x 属主用户可读可写可执行 ,属组中用户可读可执行,其他用户可读可执行 11.如何修改test.py文件权限为700 chmod 700 test.py 12.如何修改test.py属组是oldboy? chgrp oldboy test.py 13.已知test.py文件权限是rwxr--r--,如何修改权限为rw-rw-rw chmod u-x test.py chmod g+w test.py chmod o+w test.py 14.linux如何建立软连接? ln -s 文件路径 指向的软连接 15.linux的PS1变量是什么?如何修改 控制Linux命令提示符 PS1='[\u@\h \W\t]\$' 直接赋值
tar命令,压缩,解压文件 -x 解压 -c 压缩 -z 以gzip格式压缩 tar 命令:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的 tar -zxvf Python-3.7.0b3.tgz #解压 tar -czvf home_all.tar.gz * #压缩当前目录所有内容,压缩格式是tar.gz 查看网络状态 netstat -tunlp netstat [选项] -t或--tcp:显示TCP传输协议的连线状况; -u或--udp:显示UDP传输协议的连线状况; -n或--numeric:直接使用ip地址,而不通过域名服务器; -l或--listening:显示监控中的服务器的Socket; -p或--programs:显示正在使用Socket的程序识别码和程序名称; -a或--all:显示所有连线中的Socket; netstat -tunlp |grep 80 #过滤出web页面的命令 netstat -tunlp |grep 8000 #过滤出django的端口命令 查看进程的命令 ps 命令用于查看系统中的进程状态,格式为“ps [参数]”。 ps 命令常用参数 -a 显示所有进程 -u 用户以及其他详细信息 -x 显示没有控制终端的进程 ps -ef|grep nginx #过滤出nginx进程 ps -ef|grep python #过滤出python进程 杀死进程 kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。 1.先查看进程pid ps -ef|grep nginx 2. 杀掉nginx进程 kill pid linux中文设置: 可以修改变量,临时生效 或者修改写入配置文件 LANG="zh_CN.UTF-8" 咱们修改的PATH变量,PS1变量,LANG语言变量, PATH="" PS1="" LANG="" 但是这样重启就失效了,那咱们需要他永久生效,因此需要写入配置文件 那么和用户环境变量有关的配置文件,叫做/etc/profile , 因此把更改变量的命令,写入到这个文件,以后每次开机,都会读取,达到永久生效的作用 export PS1="[\u@\h \w \t]\$" df命令 df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 df -h 查看磁盘分区使用了多少空间 tree以树状图显示文件夹目录 linux的dns配置文件 cat /etc/resolv.conf 命令查看解析dns nslookup pythonav.cn 所有命令一定要用绝对路径来写! #每分钟执行一次命令 * * * * * 命令 分 时 日 月 周 #每小时的3,15分组执行命令 3,15 * * * * 命令 #在上午8-11点的第3和第15分钟执行 分 时 日 月 周 3,15 8-11 * * * 3,15 8-11 * * * 命令 #每晚21:30执行命令 30 21 * * * 30 21 * * * 命令 #没周六、日的1:30执行命令 30 1 * * 6,0 30 1 * * 6,0 命令 每周一到周五的凌晨1:00 ,清空/tmp目录的所有文件 * * * * * 0 1 * * 1-5 /usr/bin/rm -rf /tmp/* 0 1 * * 1-5 /usr/bin/rm -rf /tmp/* 这里标注一下 * 和 0 的 区别 0是定死的一个时间 而* 代表每分钟,每小时,每天,每月,每周 分 时 日 月 周 * 1 * * * 这个代表每天01点,然后每分钟执行,也就是1:01 1:02 1:03 都执行 0 1 * * * 这个代表每天的凌晨1点整,也就是01:00分,这个整点,只执行一次 #每晚的21:30重启nginx 分 时 日 月 周 30 21 * * * /usr/bin/systemctl restart nginx 30 21 * * * /opt/nginx/sbin/nginx -s reload 不重启服务,热加载nginx新的配置 #每月的1,10,22日的4:45重启nginx 分 时 日 月 周 45 4 1,10,22 * * /opt/nginx/sbin/nginx -s reload 45 4 1,1,10,22 * * /opt/nginx/sbin/nginx -s reload #每个星期一的上午8点到11点的第3和15分钟执行命令 分 时 日 月 周 3,15 8-11 * * 1 3,15 8-11 * * 1 command python: /usr/bin/python2.7-config /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz 编译安装python3,centos7的环境 1.下载源码包,解压缩,进入python3源码包文件夹 2.开始编译安装 -释放编译脚本文件 ./configure --prefix=/opt/python37 #释放编译文件,指定python3的安装路径 用来检测你的平台特性,他会检测你是不是有c或gcc,这个文件是个shell脚本 -编译 make 用来编译的命令,用于从makefile中读取指令,然后编译 -安装 make install 也会从makefile读取指令,然后!!!!!安装python3.7到/opt/python3.7 3.安装完成后,python3应该存在/opt/python37文件夹下 可执行的命令都在/opt/python37/bin 目录底下 4.配置快捷方式或者环境变量 软连接配置python3的方式 ln -s /opt/python37/bin/python3.7 /usr/bin/python3 第二种,更改环境变量的方式 echo $PATH 讲师机上的环境变量是这个: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 我们想把bin目录底下的命令加入到环境变量 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python37/bin 这个写法更nb PATH=$PATH:/opt/python37/bin 为了永久生效环境变量,写入到/etc/profile PATH=$PATH:/opt/python37/bin 写入到最底行 读取配置文件,使得环境变量生效 source /etc/profile 测试python3和pip3能否tab出,快捷使用 测试python3执行django2(注意python3.7和django1.11.15的不兼容,请选择python3.6) 1.安装django pip3 install django 2.创建django项目 django-admin startproject mysite 3.创建django的app django-admin startapp app01 4.在mysite中找到manager.py启动django,修改settings.py 允许外部访问 ALLOWED_HOSTS = ["*"] 5.启动django python3 manage.py runserver 0.0.0.0:8000 6.在windows机器上访问,测试django页面
1。安装软件的方式 yum install 软件名 快速,简单,易用,常用于小的工具,或者说没有特殊需求的软件安装 只有通过yum安装的软件,可以使用 systemctl start/stop/restart/status/ 软件名 yum install nginx 第一天测试安装nginx时候 systemctl start nginx 启动nginx 第一步,查看服务进程,第二步,查看服务的端口 ps -ef|grep nginx netstat -tunlp | grep nginx 如果你没有netstat这个名字,提示comand not found,这是因为你没有安装netstat, yum install net-tools -y (net-tools软件包,包含大量网络服务管理名字) 通过下载源码包,进行编译安装(用的是最多,并且公司线上软件,都是通过编译安装的) 可自定制插件,可自定制安装路径,便于之后对软件的管理 进行源码包安装,需要提前解决所有的软件依赖,防止在编译软件后,发生缺少xxxx依赖 如何解决? 见招拆招,报错缺少了什么组件,就去安装响应的组件。 1.下载所需的软件,源码包 2.解压缩,切换进入源码包目录 3.查看是否有configure这个脚本 ./configure --prefix=/opt/nginx1-12/ 这就是告诉make编译器,我的软件要装到/opt/nginx1-12/ 4.进行编译,编译安装 make && make install 5.进入指定的安装路径,文件夹 6.此时我的nginx1.12这个软件,就在/opt/nginx1-12/底下了,可执行命令,和配置文件都在这里了 什么是配置文件? 安装了一个软件,你想要对他进行功能扩展,或者功能指定,或者打开官方提供给你的功能,那就需要指定配置文件了!! redis-server redis.conf nginx nginx.conf mariadb相关(mysql) 1.yum安装好,启动 一个是mysql服务端,一个是mysql客户端 yum install mariadb-server mariadb 2.初始化mysql,mysql提供了一个初始化脚本命令 systemctl start mariadb mysql_secure_installation 直接执行这个命令,完成mysql初始化步骤,设置root密码,删除匿名用户 3.修改mysql密码 MariaDB [(none)]> set password = PASSWORD('redhat123'); 4.创建mysql用户oldboy,查看oldboy用户信息 oldboy@'%' 代表oldboy用户可以在所有机器上远程登录 oldboy@'127.0.0.1' mysql -uoldboy -p -h 127.0.0.1 oldboy@'localhost' mysql -uoldboy -p -h localhost create user oldboy@'%' identified by 'redhat123'; mysql -uoldboy -p select host,user,password from user where user='oldboy'; 5.使用oldboy登录mysql mysql -uoldboy -p 6.备份数据库,然后测试数据库删除后,恢复导入数据库 第一种备份方法: mysqldump -u root -p --all-databases > /tmp/all_db.dump mysql -uroot -p < /tmp/all_db.dump 导入sql文件的用法: 1.新建一个db create database s13crm; use s13crm; source /tmp/all_db.sql; show tables; 运行多个python环境,环境隔离 virtualenv相关 首先他是python的一个模块,因此可以通过pip3 安装好后,默认会添加在环境变量中,可以直接使用命令 1.pip安装好virtualenv pip3 install virtualenv 创建基于python3的虚拟环境 名字叫做 my_venv_django1.11.15 第一个虚拟环境 virtualenv --no-site-packages --python=python3 my_venv_django1.11.15 第二个虚拟环境 virtualenv --no-site-packages --python=python3 my_venv_py3_django2 2.激活virtualenv(使用虚拟环境) 激活第一个虚拟环境 source my_venv_django1.11.15/bin/activate 激活第二个虚拟环境 source venv2/bin/activate 退出虚拟环境 deactivate 3.查看环境变量的区别 echo $PATH 查看在path的顶端是否是venv的bin目录 4.创建两个虚拟环境,分别安装django1.11.15,django2 ,然后用两个虚拟环境分别启动django项目 1.分别在虚拟环境下创建django项目 (my_venv_django1.11.15) [root@s13linux /home/all_venv 22:15:02]$django-admin startproject mysite_v1 2.第二个虚拟环境创建django (venv2) [root@s13linux /home/all_venv 22:15:49]$django-admin startproject mysite_v2 3.分别修改django的settings.py文件,允许所有主机访问 ALLOWED_HOSTS = ['*'] 4.分别启动django, python3 manage.py runserver 0.0.0.0:8000 python3 manage.py runserver 0.0.0.0:9000 redis相关: 1.编译安装redis,用redis.conf启动 1.下载redis源码 2.解压缩,切换至redis目录 3.编译 和编译安装,(redis没有configure这个脚本,因此直接make && make install ) 4.在make install 结束后,环境变量中就产生了redis相关脚本命令 5.redis-server redis.conf 启动redis服务 对于redis.conf 修改redis端口 port 6380 增加redis登录密码 requirepass redis123 增加后台运行功能 daemonize yes 此时查看redis进程 ps -ef|grep redis redis多实例的概念 redis支持一台服务运行多个redis数据库,也就是多个redis实例 1.先启动第一个redis实例 准备好两个redis.conf配置文件,并且复制重命名为 redis-6379.conf (注意去修改端口为6379) redis-6380.conf redis-server redis-6379.conf redis-server redis-6380.conf 检查redis进程 ps -ef|grep redis [root@s13linux /opt/redis-4.0.10 21:28:52]$ps -ef|grep redis root 2071 1 0 21:27 ? 00:00:00 redis-server 0.0.0.0:6379 root 2076 1 0 21:27 ? 00:00:00 redis-server 0.0.0.0:6380 6.登录redis redis-cli 2.配置redis.conf,设置后台运行redis,redis登录密码,更改redis启动端口 3.登录redis,验证密码 4.练习redis数据操作 strings list sets zsets redis缓存和mysql关系型数据库的区别,应用场景? 1.咱们以取快递,快递公司和站点 mysql > 快递总公司 把快递总公司的部分物件,提前放到驿站 redis > 快递驿站 把一些数据,提前放到redis缓存中,加速查找, nginx相关: 1.编译安装nginx,启动 略 由于咱们之前用yum装过一次nginx,因此yum帮你配置好了nginx的环境变量,可能就会影响你编译安装的nignx运行 很可能就是你运行的是yum哪个nginx 你自己的编译nginx并没有启动,和生效 所以,果断点,yum remove nginx 这时,你的nginx环境变量就没了 2.部署一个自己的web站点,例如pythonav.cn/xiaobo.gif,可以用本地hosts文件测试域名 1.部署一个 my_taobao.com 网站 先在本地搞一个测试域名,就是编辑 hosts哪个文件 hosts文件在C:\Windows\System32\drivers\etc\hosts 10.0.0.10 mytb.com 然后在nginx.conf里面修改配置,如下 server { listen 80; server_name mytb.com; 2.首先打开nginx访问日志功能,用于记录网站访问日志,防止一些二货搞你的网站 编辑nginx.conf 打开以下注释 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; 3.网站文件根路径配置 location / { root html; index index.html index.htm; } 4.拒绝访问一个功能 location / { root html; index index.html index.htm; deny 你要拒绝的ip; } 5.错误页面的配置 这个40x.html是放在 html文件夹下的 /opt/nginx112/html/网站根路径 error_page 404 /40x.html; 6.配置文件设置好了之后,检测你的nginx.conf语法是否正确 使用-t参数检测语法是否正确 [root@s13linux /opt/nginx112 22:31:08]$./sbin/nginx -t nginx: the configuration file /opt/nginx112//conf/nginx.conf syntax is ok nginx: configuration file /opt/nginx112//conf/nginx.conf test is successful 7.还得启动nginx,修了nginx.conf需要重新启动或者热加载 sbin/nginx 直接敲命令是启动 sbin/nginx -t 检测语法 sbin/nginx -s reload 热加载 sbin/nginx -s stop 关闭nginx 3.打开access_log功能,测试访问 tail -f access.log 4.nginx限制一个网站访问,用deny参数 5.nginx错误页面优化 6.完成nginx多域名虚拟主机, 1.目前我们已经有了一个站叫 mytb.com myjd.com我也得做 2.添加hosts windows本地解析 10.0.0.10 myjd.com 也就是在nginx.conf里面添加一个server{} 标签段,填入以下内容(注意!!!写在另一个server{}标签以外,且在http{}标签以内) server { listen 80; server_name myjd.com; location / { root html/jd/; index index.html; } } 7.重新加载nginx服务 8.测试访问 mytb.com myjd.com 如果大家之后vim 打开文件的时候出现以下报错: E325: ATTENTION Found a swap file by the name "/opt/nginx112/conf/.nginx.conf.swp" owned by: root dated: Thu Oct 18 22:37:18 2018 file name: /opt/nginx112/conf/nginx.conf modified: no user name: root host name: s13linux process ID: 2977 (still running) While opening file "/opt/nginx112/conf/nginx.conf" dated: Thu Oct 18 22:35:26 2018 (1) Another program may be editing the same file. If this is the case, be careful not to end up with two different instances of the same file when making changes. Quit, or continue with caution. (2) An edit session for this file crashed. If this is the case, use ":recover" or "vim -r /opt/nginx112/conf/nginx.conf" to recover the changes (see ":help recovery"). If you did this already, delete the swap file "/opt/nginx112/conf/.nginx.conf.swp" 这是由于你未正确关闭文件(vim会帮你保存一个swap文件,防止数据丢失),或者两个人同时操作了一个文件 然后就会生成一个swap文件 /opt/nginx112/conf/nginx.conf.swap这个文件,你把它删了就好了
1.单机启动django项目,性能低,默认使用wsgiref模块,性能低的wsgi协议 python3 manager.py runserver 0.0.0.0:8000 > wsgiref模块中 2.高并发启动django,django是没有这个功能的,而uWSGI模块,遵循uwsgi协议,支持多进程处理django请求 uwsgi 通过他,启动你的django,而不再是python3 manager.py runserver 0.0.0.0:8000 3.公司中一般用 nginx + uwsgi + django + virtualenv + supervisord(进程管理工具) 搭建笔记: 1.确定依赖组件是否安装 yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel nginx 正向代理,反向代理的概念 用户阿段,去访问mycrm.com:80 ,他想直接从80端口,找到hello视图,也就是mycrm.com:80/hello 实现手段就是,阿段去访问 mycrm.com:80 这个nginx服务,并且让nginx,把hello这个请求,丢给后端的 uwsgi+django程序处理 1.基础环境准备好 yum groupinstall "Development tools" yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel 2.准备好python3环境 3.准备好virtualenv 4.安装uWSGI 1.激活虚拟环境 source /opt/all_venv/venv2/bin/activate 2.安装uWSGI (venv2) [root@s13linux ~ 05:18:21]$pip3 install uwsgi 3.检查uwsgi版本 (venv) [root@slave 192.168.11.64 /opt]$uwsgi --version 2.0.17.1 #检查uwsgi python版本 uwsgi --python-version 4.运行一个简单的uwsgi服务器 1.创建一个test.py文件,写入内容 def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] # python3 2.然后用uwsgi命令启动 uwsgi --http :8000 --wsgi-file test.py 参数解释 http :8000: 使用http协议,端口8000 wsgi-file test.py: 加载指定的文件,test.py 5.用uwsgi运行你的django项目(测试使用) 1.准备好mysite,自己写好MTV视图函数 /hello 先确保你在项目文件夹下,例如/opt/mysite/底下 uwsgi --http :8088 --module mysite.wsgi --py-autoreload=1 参数解析 --http 启动在8088端口,--module 指定项目文件夹路径 --py-autoreload是热加载程序 6.配置nginx反向代理uwsgi+django!!!!(此步重要!!!) 1.首先kill杀掉nginx进程 2.配置nginx.conf,通过此步才能生效!! 填入重要两个参数,根据自己目录结构配置,uwsgi_pass通过这个参数,nginx才能转发请求给后端0.0.0.0:9000的应用 include /opt/nginx112/conf/uwsgi_params; uwsgi_pass 0.0.0.0:9000; --------------------------分割线-------------------------------------------------------- server { listen 80; server_name mycrm.com; location / { include /opt/nginx112/conf/uwsgi_params; uwsgi_pass 0.0.0.0:9000; root html; index index.html index.htm; #deny 10.0.0.1; } 配置nginx.conf之后,启动nginx服务,等待配置启动uwsgi+django uwsgi --uwsgi 0.0.0.0:9000 --chdir=/home/mytest1 --home=opt/all_venv/venv2/ --module=mytest.wsgi 7.配置supervisor进程管理工具 1.通过python2的包管理工具easy_install安装 yum install python-setuptools easy_install supervisor 2.通过命令生成supervisor的配支文件 echo_supervisord_conf > /etc/supervisord.conf 3.写入/etc/supervisord.conf配置信息(参数根据自己环境填写) [program:my_crm] command=/opt/all_venv/venv2/bin/uwsgi --uwsgi 0.0.0.0:9000 --chdir=/opt/s13crm --home=/opt/all_venv/venv2/ --module=s13crm.wsgi directory=/opt/s13crm startsecs=0 stopwaitsecs=0 autostart=true autorestart=true ''' [program:my_crm] command=/opt/python36/bin/uwsgi --uwsgi 0.0.0.0:9000 --chdir=/home/mytest1 --module=mytest.wsgi directory=/opt/mytest1 startsecs=0 stopwaitsecs=0 autostart=true autorestart=true ''' 8.启动supervi服务,(同时启动uwsgi+django服务) 最后启动supervisor,完成uWSGI启动django,nginx反向代理 supervisord -c /etc/supervisord.conf #启动supervisor supervisorctl -c /etxc/supervisord.conf restart my #重启my项目 supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all] 9.此时访问网站mycrm.com ,查看是否可以通过80端口,访问到django应用,完成项目发布。 由于nginx的高并发性能,配合uwsgi的多进程性能,可以达到一个线上的django应用发布!!! 内容博客地址: https://www.cnblogs.com/pyyu/p/9481344.html