1.nginx复习
1.nginx是什么 nginx是支持反向代理,负载均衡,且可以实现web服务器的软件
在129服务器中查看,我们使用的是淘宝提供的tengine,也是一种nginx服务器
我们下载的是tengine-2.3.0.tar.gz解压之后得到tengine-2.3.0,下面我们cd进入到tengine中
我们发现,下图会有一个脚本文件configure
我们安装好的nginx在opt目录下面的s18tngx中
我们再cd到tengine中的源码包中,
上图最后一步的命令是指定安装路径
我们需要运行的是后两步的命令.
运行完之后,我们主要是操作上边的conf这个文件夹
没事我们就pwd一下,看一下我们的绝对路径是什么.ls命令其实就是 ls点
我们需要关注的就是nginx.conf
2.nginx如何实现404页面,access.log访问日志,多虚拟主机,反向代理等功能 nginx如果出现403(权限不足)的问题: 1.你的nginx代码放在了/root下 2.你的客户端被禁止访问了,去找nginx.conf中的配置
我们通过查看上边的这一条命令,进行查看浏览器的访问,
出现403代表没有权限,也就是权限不足,404代表找不到,也就是请求的url不正确,服务器上找不到这个地址
我们可以捕捉到这个访问的浏览器ip地址:
我们看到的"主人进程"是root, 而工作进程是nobody普通用户, 普通用户不能读取/root
nginx如果出现403(权限不足)的问题: 1.你的nginx代码放在了/root下 2.你的客户端被禁止访问了,去找nginx.conf中的配置
第一种排除了,我们看第二种.
老师的注释:
我的注释:
events表示时间驱动,通过大括号掌控
参考:解决方案:将文件下载到windows中,进行查看研究,解释修改等等
shift+%表示的是找这两个括号
虚拟主机server,这个是有自上到下 的加载顺序的
比如:在浏览器上输入:www.s18sssssssssss.com如果不存就解析成相对应的ip,没有就报错.
我们看到显示,找不到"主机名"
但是,我们ping通了,下面的假的域名,并且解析出了ip,我们是在windows中的cmd解析出来的.
我们在windows中解析这个自定义的域名,就得修改windows的hosts文件.
现在,如果我们想在linux中,也想ping www.s18dnf.com怎么处理?
下面是我们解析的路径:
我们将两个域名解析到一个IP上边:
现在,我们再增加一个taobao.com
清除缓存:
这个时候,我们再次访问,得到上边的403界面
DNS 的解析流程比较麻烦
etc/hosts文件的优先性,是高于DNS解析的.
DNS其实就是将域名转换成IP的过程,最后我们删掉自己写的这个路径对应的淘宝地址.
这个时候,我们再修改etc下面的文件resolv.conf文件
原来的样子:
我们现在修改成:
现在,我们发现结果已经ping不通了
/etc/resolv.conf是填写dns记录的文件
我们再次打开,
我们再写一个备用的ip
保存,退出.
一个是114的一个是腾讯的
这个时候我们再ping的时候,是在腾讯和114这两个大的IP中寻找
因为找不到,所以显示"未知的名称或服务"
我们再linux再次写入
我们需要修改etc下面的文件hosts
我们再写一个ip和域名
保存退出,我们再次ping
这个时候,我们再次ping就可以ping通了.
也就是写了一个强制记录而已.
我们还是删掉这个记录,防止出错
这个时候,我们再次打开nginx配置管理文件
我们必须将域名写在server_name后边,这样nginx才会识别.
我们在nginx.conf配置了两个server,nginx是怎么检测出来的呢?ip和端口都一样,就是通过不同的server_name检测出来的.
这就是基于域名的访问,如果是基于IP的访问,那么就会一直走第一个.
快捷键:
dd就是删除的快捷键
u是撤销
o
保存,退出
修改完的代码,唯一要做的就是重启.
这个时候,我们会发现80已经启用了
端口不能用了,我们可以杀死之后,再次查看,然后再次开启nginx,具体见下图操作
这个时候,我们再平滑加载''
下图表示,检测nginx的语法,显示的结果是没有问题的
如果想要重启怎么操作?
查看帮助,文档看一下怎么重启
ps =>kill也是可以的,如果这种方式不会用的话
再次访问,已经通了
我们自己创建的两个文件夹 dnf和hanju
我们只需要将网站和地址修改就行了.
如将dnf这个地址转到,"我该睡了"?
原来的内容
我们只需要将root对应的路径修改成,下图所示内容即可:
保存退出:
然后,我们重新启动nginx
再次刷新:
如果没有下图所示的部分:
也就是说,加上这一行代码的优先级更高一些。
status是一个全路径匹配的东西。
如果瞎写,会报404错误,如下图
下面我们开始学习集群的概念。
2.集群介绍
3.nginx负载均衡配置1
https://www.cnblogs.com/studybrother/p/10649285.html
4.nginx与项目部署1
https://www.cnblogs.com/pyyu/p/9481344.html
crm项目部署 1.nginx + uwsgi + django + 虚拟环境 + supervisor + mysql 2.django的启动方式 python3 manage.py runserver 为什么不能在生产环境用? django只是一个web逻辑框架,它通过python3 manage.py runserver命令启动的socket服务端 是借助python内置的wsgi框架 wsgiref框架实现的 它是一个单机模块,单进程模块,性能很低 因此在线上需要借助通过c语言编写的uwsgi这个web服务器软件,启动django sanic 旋风小子 由低到高的性能框架 djano flask tornado sanic
3.在进行uwsgi启动django的时候,是需要找到wsgi.py这个文件模块的 如果你报错提示 找不到application ,就是因为uwsgi 找不到wsgi.py
这个问题无法避免,只能一步一步调试
uwsgi就是通过wsgi.py文件里边的application启动的.
保存退出.
4.为什么要用nginx 和uwsgi? nginx 可以解决uwsgi的静态文件问题,并且支持高并发请求,还能限流,保障后台服务器安全等等 为什么要用uwsgi 因为uwsgi支持多进程 多线程的方式,性能很高,启动django性能更好,但是uwsgi不解析django的静态文件 我们以后会收集所有的django项目静态文件,丢给nginx去处理
nginx和uwsg中间有一个socket.接口,无法直接跳到django中,
django处理静态文件的能力很低,nginx处理静态文件的能力很强.
5.准备crm代码
查看虚拟环境存放的目录
上边创建的两个虚拟环境也是两个文件夹.
注意,这种方式是用来调试代码的,以后上线需要用uwsgi处理.
这个时候,我们正常访问是可以的
账号是root@qq.com 密码是123456
输入密码和账户进入:
关键:我们记不住那么多的ip和端口,我们现在只想访问域名,这件事情应该怎么做?
通过什么技术手段?(运用反向代理,80是个代理,通过代理找到8000)
6.准备一个新的虚拟环境,去启动crm,使用virtualenvwrapper创建新的虚拟环境 1.解决虚拟环境依赖的问题,也就是保障本地开发环境和线上一致性的问题 在windows本地 通过 pip3 freeze > requirements.txt 就能将 python3解释器中所有的模块导出到这个文件中 2.将这个 requirements.txt 文件传输到服务器上,进行安装,就可以自动解决所有模块问题 pip3 install -r requirements.txt
所有的程序员都认识这个requirements.txt这个文档.
看一下文件内的内容:
现在我们退出这个虚拟环境:
现在我们再次新建一个新的虚拟环境
这个时候,新的虚拟环境就创建好了
拿到纯净的环境
我们需要的是,文件传输到服务器上解决依赖关系
安装完成之后,下图就是我们已经解决了文件的一致性的问题了
再看一下这个文件内的内容
上边就是解决环境不匹配问题的解决方法.
如果是在windows里边的呢?
一种是将内容导入D盘,另一个是切换目录,再有一个是展示安装的包.
我们不可能一个一个安装.
打开之后,我们发现已经将本地的包名,写在了这个文件里边.
只需要将这个文件传递到服务器上安装即可.
再来一个操作,我们可以在windows里边写出了这个文件之后,复制文件内的内容,在linux中再touch一个文件写入内容.
很多事情都是很灵活的,要敢于向,敢于做事情.
这个名字可以随便起,但是这是一个约定俗成的写法,最好这样写.
现在我们的目的就是:用nginx反向代理到(uwsgi+django)
笔记真的很重要,一定要看
7.使用uwsgi启动crm项目 确保进入虚拟环境,然后安装uwsgi workon nginx_crm 下载uwsgi pip3 install uwsgi
简单看一下,下图这些命令
下面我们安装uwsgi
我已经安装成了uwsgi,见下图
安装完成之后,我们再启动一个项目:
8.使用uwsgi命令启动django项目 uwsgi支持热加载的启动方式命令如下 uwsgi --http :8000 --module mysite.wsgi --py-autoreload=1 uwsgi --http :8088 --module Crm_Project.wsgi --http指定http协议启动在 8088端口 --module 找到项目第二层的目录,里面的wsgi.py文件 如果你想启动一个http页面,提供测试访问,就用--http参数 如果你结合了nginx反向代理,必须用--socket参数 uwsgi --socket :8000 --module Crm_Project.wsgi 由于参数过多,这里引入配置文件的概念 叫做 uwsgi.ini my.cnf nginx.conf
下图我们进入的是第一层
然后我们切换到第二层,找到wsgi.py
我们要确保的是,我们进入的是第一级目录
uwsgi --http :8088 --module Crm_Project.wsgi
上边这条命令中表示的是 Crm_Project表示的是文件夹,wsgi表示的是wsgi.py文件
我们就这样用就可以了.
module 找到项目第二层的目录,里面的wsgi.py文件
现在我们就启动一下这条命令:
warning不是很重要.
运行起来之后,我们访问
上边的login不可以访问,但是admin可以访问了.
crm/login可以访问了
我们已经是开发了,内行应改看F12,注意,我们要看的位置
也就是验证了我们前面说的:
uwsgi不解析django的静态文件
面试题:
1.项目怎么部署的?:nginx+uwsgi
2.uwsgi是否支持热加载也就是热重启,在后台修改代码之后,立即生效?
我们再打开一个窗口
yyp相当于复制一行内容.
保存退出,
我们需要导入一个模块.我们退出查看一下:
退出.
模块是:
from django.shortcuts import render, redirect, reverse, HttpResponse
重新打开,下面的模块:
退出,保存,后端没有任何的变化
再次访问,我们发现没有权限访问.
重新打开这个文件
我们将内容注释掉,然后保存退出
我们现在看不到效果,如何看到具体的热重启?
重新创建一个项目
下边的两张图都不是我们想要的结果
我们进行数据库迁移一下:
下面,我们指定模块再次运行
启动后的页面:
运行admin,出现下面的结果:
访问hello,得到的结果是Not found
现在,我们需要打开hello这个函数:
from django.shortcuts import render, redirect, reverse, HttpResponse
现在,我们想做的事情是,能否在启动项目的情况下,修改后端代码使其生效
保存,退出
这个时候,依然是加载不了的,
我们中断掉,重启加上参数就可以实现热重启了.
最后这一行代码,表示的就是开启了这样的一个功能
这时我们再次访问:
得到上边的结果:
现在我们修改逻辑代码:
保存退出
这个时候已经发生改变.
10.配置crm收集所有的crm静态文件.
总结:
编辑项目的settings.py 写入如下参数
STATIC_ROOT= '/opt/crmstatic'
添加一个静态文件:
保存,退出
11.执行命令,收集crm所有的静态文件 python3 manage.py collectstatic
执行,进行收集内容,也就是在复制内容
132个静态文件,都会拷贝到/opt/crmstatic下面.
上图就是我们用到的所有静态文件了.
我们也可以用tree命令看一下树状图,看一下目录结构:
我们可以将上边的文件,也就是说交给nginx处理,nginx更擅长处理静态文件.
#此时后端的配置完毕!!!!开始搞nginx #此时后端的配置完毕!!!!开始搞nginx #此时后端的配置完毕!!!!开始搞nginx #此时后端的配置完毕!!!!开始搞nginx #此时后端的配置完毕!!!!开始搞nginx 12.配置nginx,一是支持反向代理,二是支持静态文件加载 修改nginx.conf 代码如下 #当用户访问 www.s18dnf.com的时候,就进入这个虚拟主机 location / { uwsgi_pass 0.0.0.0:8000; include uwsgi_params; } #这个location是解决crm的静态文件的问题的 location /static { #alias参数 就是将/static转化为/opt/crmstatic ,也就找到了我们所有的静态文件 alias /opt/crmstatic; }
先找到安装后的nginx目录,找到后,打开配置文件
我们以第一个主机为例,修改成反向代理服务器.
将上图中红框内的内容进行修改.
nginx和uWSGI之间有一个unix的socket,也就是一个桥梁,支持uwsgi协议的一个请求转发.
uwsgi_pass 应该填写公司运行的那台服务器,8000指代的是django运行的那个端口.
include指代的是路由分发的那块.代表的是把外部信息导入进去.
8.使用uwsgi命令启动django项目 uwsgi支持热加载的启动方式命令如下 uwsgi --http :8000 --module mysite.wsgi --py-autoreload=1 uwsgi --http :8088 --module Crm_Project.wsgi --http指定http协议启动在 8088端口 --module 找到项目第二层的目录,里面的wsgi.py文件 如果你想启动一个http页面,提供测试访问,就用--http参数
如果你结合了nginx反向代理,必须用--socket参数 uwsgi --socket :8000 --module Crm_Project.wsgi
我们在上边再写一遍笔记
我们先不做操作,先处理下边的内容
我们需要先关闭防火墙和开启nginx
我们再运行,访问:
我们无法访问这个页面.
出现"无法正常访问网页的原因是:我们用的是http协议打开网页,而我们启动的却是uwsgi协议
还有一个是,代码串太长容易敲错,怎么处理这个问题?
由于参数过多,这里引入配置文件的概念 叫做 uwsgi.ini my.cnf nginx.conf
也就是说我们把启动文件的参数,写到一个文件中.
由于参数过多,这里引入配置文件的概念,叫做uwsgi.ini my.cnf nginx.conf以后还会有很多这样的配置文件
#正式启动环境在这里 #正式启动环境在这里 #正式启动环境在这里 启动crm的配置文件如下 uwsgi.ini内容如下 [uwsgi] # Django-related settings # the base directory (full path) #填写项目的绝对路径(第一层路径) chdir = /opt/Crm_Project # Django's wsgi file #填写crm第二层目录下的wsgi.py文件的路径 module = Crm_Project.wsgi # the virtualenv (full path) #填写虚拟环境的绝对路径 home = /root/Envs/nginx_crm # process-related settings
#master代表这是一个主进程
master = true # maximum number of worker processes #基于uwsgi的多进程,根据cpu来优化,有人根据cpu的3倍计算
processes = 4 # the socket (use the full path to be safe
#如果你用了nginx反向代理,就填写socket参数
#如果你用了nginx反向代理,就填写socket参数
#如果你用了nginx反向代理,就填写socket参数
socket = 0.0.0.0:8000
#如果你没用nginx,想直接通过浏览器测试后端,使用http
#http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
如何进入虚拟环境的绝对路径?
现在,我们需要创建一个ini文件,放在哪里是没有关系的,但是必须创建一个
我们打开这个文件开始编辑
注意点:打开文件之后,不要在第一行插入东西,可能出现问题
确认没有问题之后,我们"保存",退出
此时的启动方式:
uwsgi --ini uwsgi.ini
此时通过uwsgi --ini uwsgi.ini方式启动代码
现在,我们启动了四个工作进程
此时,我们访问的是80端口,找到的是8000
下面我们进行下面的操作.
12.配置nginx,一是支持反向代理,二是支持静态文件加载 修改nginx.conf 代码如下 #当用户访问 www.s18dnf.com的时候,就进入这个虚拟主机 location / { uwsgi_pass 0.0.0.0:8000; include uwsgi_params; } #这个location是解决crm的静态文件的问题的 location /static { #alias参数 就是将/static转化为/opt/crmstatic ,也就找到了我们所有的静态文件 alias /opt/crmstatic; }
在另一个窗口中打开这个文件.
这个时候,我们只需要将下图的内容修改成下面的内容:
还没有修改完毕,我们先保存退出,再查看一下.
运行:
不对,上边是解释器运行的,这样是可以加载静态页面的.
再次访问运行
浏览器再次访问:(显示的是内部服务错误)
指的是我们后台的代码错误.
说明,我们没有wsgi这个对象.,也就是没有找到这个文件.
看一下,能不能如下图这样写
浏览器访问:
依然是这个问题:
下面我们再次回到mysite进行处理
运行:如果是google可能回家再出来,原因是缓存,现在我们换成了"火狐浏览器"
我们最后决定还是用谷歌进行调试一下:首先清除缓存,再访问
我们需要思考,丢失请求的url是怎样走的?这个问题
我们需要配置一个static的入口进行处理,具体如何配置?
我们先找到静态文件
我们看一下路径:
下面我们开始编辑:
这个时候,我们修改的内容如上图:
alias表示别名的意思,也就是将/static 换成 /opt/crmstatic
这个时候,静态文件和返向代理都可以了.
12.
我们保存退出,
13.重启nginx,查看反向代理效果
我们先查看nginx是否有错,然后重启nginx
报错:
原因,缺少了一个分号
上图显示,就没有问题了.
现在我们应该如何访问?
我们直接访问80端口
结果:
现在,我们只需要将ip替换成域名就可以了.
用户名:root@qq.com
密码:123456
原因,上边的重新启动的命令敲错了,我们需要的是下面的命令
这样重新启动,再次访问就可以了
血淋淋的教训,注意这个黑框中区分大小写
点击登录:
这里边还有一个问题是:再次登录时会没有权限
注意项目要启用数据库
pymysql.err.OperationalError: (2003, “Can’t connect to MySQL server on ‘localhost’ ([Errno 111] Connection refused)”)
5.crm项目部署1(下面主要是我们创建虚拟环境)
day77将windows中的crm_project如何拿到linux,直接拖动是不可以的,原因:只能拖动一个,我们通过压缩包拖动
解压缩:
这个时候,我们看到了解压缩的文件
我们现在需要安装虚拟环境:
先创建一个文件夹allenv,再在allenv安装virtualenvwrapper
这个时候,我们就安装成功了
这个时候,我们就看到了wrapper工具了
2.学习virtualenvwrapper工具升级版 1.安装 pip3 install virtualenvwrapper 2.配置个人环境变量配置文件,每次登陆都启动virtualenvwrapper工具 vim ~/.bashrc 3.写入加载变量,使得virtualenvwrapper每次开机可使用 export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的参数,生成干净隔绝的环境 export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 #指定python解释器 source /opt/python36/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本 4.退出回话,重新登录,查看工具是否安装 5.学习virtualenvwrapper工具的命令 1.创建新的虚拟环境 mkvirtualenv mycrm 2.切换多个虚拟环境 workon 虚拟环境的名字 3.列出所有的虚拟环境目录 lsvirtualenv 4.进入当前激活的虚拟环境的目录 cdvirtualenv
添加四个参数:
查找文件路径,和上图对应
退出会话,重新登录,看一下是否生效
再次登录,出现下边的信息
这个时候,我们再创建虚拟环境,创建完成后,,自动进入虚拟环境
退出虚拟环境
我们再创建一个虚拟环境
我们看一下有哪些虚拟环境
下面,我们切换虚拟环境
现在我们进入mycrm虚拟环境,我们再进入Crm_Project项目
运行报错,我们查看报错
我们,我们再mycrm中安装django
安装完成后,我们再次运行:
报错,没有pymysql
我们再安装pymysql在这个虚拟环境中.
安装完成后,我们再次运行
报错:
这里边有一个坑,我们知道需要安装包,但是安装哪个包?
原因:
我们安装的包和模块之间不一定一致.
我们再django中找一下,见下图
安装成功,再次运行:
再次报错,见下图,没有链接mysql
我们需要安装mysql
查看安装,操作了哪些命令
4.还得解决crm项目运行所需的依赖环境 1.手动解决 pip3 install django==1.11.14 pip3 install pymysql pip3 install django-multiselectfield 2.安装mysql数据库,支持crm业务
#yum install mysql-server mysql -y mysql服务端是 mysqld mysql客户端有哪些? mysql -uroot -p pymysql navicate pycharm mysql驱动 安装linux的mariadb服务端 yum install mariadb-server mariadb mysql -y #启动mysql服务端 systemctl start mariadb #检查mysql是否启动 1.查进程 ps -ef |grep mariadb 2.查端口 netstat -tunlp |grep 3306
安装mysql
yum只能有一个人在用,也就是说一个人在用的时候会锁住
此时安装的是服务端
已经安装成功:
下面我们登录,默认是没有密码的,但是报错,见下图:
我们应该先启动"mysql服务端"
注意:虚拟环境不会对操作系统产生影响
激活虚拟环境,只会影响python解释器不会影响其他的内容:
退出虚拟环境
我们现在不确定服务端的名字是什么,所以协程mysql*
还是取消吧
我们安装mariadb
得到下图的mariadb-server才是服务端
选择y
下面,我们启动服务端
再查一下mariadb的进程
查找mariadb的端口查找不到
查找端口是可以的
这个时候,就进入这个MariaDB
原因:我们需要激活虚拟环境:
依然报错,如下
在windows中可以登录数据库
下图是默认地址 ,-h是指定主机的
得到的数据库就在windows下边的system32文件夹下边
我们只需要将数据库拖动到linux中即可
思考,如何用这个数据?
我们以前都是写入,但是这次我们写出
下图中,输入命令"报错"
再次登录查看一下,没见到crm,视频中看到了crm
下面,我们退出
再次启动,加上IP和端口
依然报错,原因是,我上边输入了windows的密码,其实这个导入不需要输密码.再次登录账户和密码,看到结果
第一种是,我输入windows中的密码时候的错误,第二种是我没有输入密码时候的错误,第二种报错没有问题(这是平台的问题)
没有导入之前的数据库
这时候的数据库,我们登录数据库的账户和密码
我们看到了crm这个密码
退出数据库,我们再次运行:
下面重新运行,一定要加上ip和端口号
显示不出来,原因是没有关闭防火墙,下面我们关闭防火墙,再次运行
windows上很难关注到这些问题,当放到linux服务器上才会发现这些问题
出现这个问题:
我们需要编辑"settings.py",见上图,找到allow_host
加上一个*,然后我们保存退出
这个时候,我们再次启动
再次运行,就出现了下图:
CDN服务器:
内容分发网络,CDN是构建在网络之上的内容分发网络.依靠部署在各地的边缘服务器通过中心平台的负载均衡,内容分发
6.crm项目部署2
流程梳理:
7.crm项目部署3
是否有一种工具可以帮助我们进行管理,从手动管理到自动管理?(马蜂窝也在用)
14.配置supervisro工具 注意要退出虚拟环境 注意要退出虚拟环境 注意要退出虚拟环境 原因:我们装这个环境,不仅仅是针对python的应用
我们的目的是管理所有的应用,所以,我们需要装在物理环境之下,需要先退出虚拟环境再安装 1.安装easy_install pip3是python3的软件包管理工具 easy_install 是python2的软件包管理工具 安装这个虚拟工具,也就是easy_install yum install python-setuptools 2.安装supervisor easy_install supervisor 3.创建supervisor的配置文件 echo_supervisord_conf > /etc/supervisor.conf 4.修改supervisor的配置文件,添加启动uwsgi的命令 supervisor其实就是帮咱们执行了,需要手动执行的命令而已 vim /etc/supervisor.conf 写入如下内容,在最底部写 [program:s18crm] command=/root/Envs/nginx_crm/bin/uwsgi --ini /opt/Crm_Project/uwsgi.ini stopasgroup=true killasgroup=true 5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出 5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出 5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出 5.测试用supervisor启动uwsgi ,注意要确保此时uwsgi已经退出 supervisord -c /etc/supervisor.conf #这是启动supervisor服务端命令 supervisorctl -c /etc/supervisor.conf #这是supervisor客户端管理命令 6.学习supervisor的命令 status s18crm #查看状态 start s18crm #启动任务 stop s18crm #停止任务 start all stop all #启停所有的任务 感谢cctv
退出虚拟环境之后,我们开始安装,
下面看一下,supervisor是否能够在python3里边能够安装.
pip3 install supervisor
官网太慢,我们可以直接使用豆瓣的源下载
pip3 install -i https://pypi.douban.com/simple supervisor
上图中,我已经成功安装了这个环境,但是老师当时在python3的环境中安装失败了.老师的截图见下图
打开上边的文件,输入大写的G,回到底部输入
注意:上边也有supervisor其实就是帮助我们执行了,需要手动执行的命令而已
原来的启动方式:(必须来自虚拟环境底下)
保存退出:
启动虚拟环境,查看是都有其他进程,答案是没有的
下面我们开始启动
这个时候s18crm所处的状态是运行中的状态.
主进程是6274
在第二个窗口打开,查看
第一个是主进程是6274,和第一个窗口正好对应起来.
这个时候,我们只需要supervisor管理uwsgi,不需要手动管理了
停止操作(我们在窗口1进行的操作)
状态操作
我们在窗口2查看一下
这个时候已经关闭了
我们再启动所有的内容
现在,我们通过第二个窗口查看又起来了
退出
访问不了页面的原因是没有启动nginx,所以需要启动nginx
再次访问就可以访问了
总结三大要素:重启nginx//重启防火墙//重启数据库
账号:root@qq.com
密码:123456