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
参考第二篇blog
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 + mysql2.django的启动方式 python3 manage.py runserver 为什么不能在生产环境用?django只是一个web逻辑框架,它通过python3 manage.py runserver命令启动的socket服务端 是借助python内置的wsgi框架 wsgiref框架实现的 它是一个单机模块,单进程模块,性能很低因此在线上需要借助通过c语言编写的uwsgi这个web服务器软件,启动djangosanic 旋风小子 由低到高的性能框架 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项目 确保进入虚拟环境,然后安装uwsgiworkon 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 virtualenvwrapper2.配置个人环境变量配置文件,每次登陆都启动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 mycrm2.切换多个虚拟环境workon 虚拟环境的名字3.列出所有的虚拟环境目录lsvirtualenv 4.进入当前激活的虚拟环境的目录cdvirtualenv
添加四个参数:
查找文件路径,和上图对应
退出会话,重新登录,看一下是否生效
再次登录,出现下边的信息
这个时候,我们再创建虚拟环境,创建完成后,,自动进入虚拟环境
退出虚拟环境
我们再创建一个虚拟环境
我们看一下有哪些虚拟环境
下面,我们切换虚拟环境
现在我们进入mycrm虚拟环境,我们再进入Crm_Project项目
运行报错,我们查看报错
我们,我们再mycrm中安装django
安装完成后,我们再次运行:
报错,没有pymysql
我们再安装pymysql在这个虚拟环境中.
安装完成后,我们再次运行
报错:
这里边有一个坑,我们知道需要安装包,但是安装哪个包?
原因:
我们安装的包和模块之间不一定一致.
我们再django中找一下,见下图
安装成功,再次运行:
再次报错,见下图,没有链接mysql
我们需要安装mysql
查看安装,操作了哪些命令
4.还得解决crm项目运行所需的依赖环境1.手动解决pip3 install django==1.11.14pip3 install pymysqlpip3 install django-multiselectfield2.安装mysql数据库,支持crm业务
#yum install mysql-server mysql -ymysql服务端是 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_installyum install python-setuptools2.安装supervisoreasy_install supervisor3.创建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=true5.测试用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