文章目录
所使用的操作系统与环境
操作系统:centos6.5
Python环境:3.7.0
本文前提
- uwsgi+nginx部署Django项目已经完成,并能在浏览器中访问
本文的目的
用supervisor管理uwsgi进程,当uwsgi进程因为某种原因挂掉的时候进行重启
下载并安装
从如下地址中下载得到.whl包,在本地使用pip install安装
https://pypi.org/project/supervisor/#files
为了方便全局使用还需要链接到/usr/bin下
sudo ln -s /home/zeng/anaconda3/bin/supervisor /usr/bin/supervisor
sudo ln -s /home/zeng/anaconda3/bin/supervisord /usr/bin/supervisord
sudo ln -s /home/zeng/anaconda3/bin/supervisorctl /usr/bin/supervisorctl
使用supervisor来启动项目
配置supervisor
先创建log文件夹
mkdir log
修改之前的uwsgi文件,去掉daemonize(已经不需要这个了)
在django项目中新建一个supervisor的配置文件spider_supervisor.conf,填入如下内容(根据程序做一些修改)
# supervisor的程序名字
[program:spider]
# supervisor执行的命令
command=uwsgi --ini spider_uwsgi.ini
# 项目的目录
directory = /home/zeng/cnr/spider
# 开始的时候等待多少秒
startsecs=0
# 停止的时候等待多少秒
stopwaitsecs=0
# 自动开始
autostart=true
# 程序挂了后自动重启
autorestart=true
# 输出的log文件
stdout_logfile=/home/zeng/cnr/spider/log/supervisord.log
# 输出的错误文件
stderr_logfile=/home/zeng/cnr/spider/log/supervisord.err
[supervisord]
# log的级别
loglevel=info
# 使用supervisorctl的配置
[supervisorctl]
# 使用supervisorctl登录的地址和端口号
serverurl = http://127.0.0.1:9001
# 登录supervisorctl的用户名和密码
username = zengraoli
password = 123456
[inet_http_server]
# supervisor的服务器
port = :9001
# 用户名和密码
username = zengraoli
password = 123456
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
启动supervisor和关闭supervisor
如果之前启动了uwsgi,那么首先kill掉
使用命令启动supervisor
supervisord -c spider_supervisor.conf
supervisord启动的进程依然可以使用kill杀掉
其他的一些操作
使用命令进入管理控制台
supervisorctl -c spider_supervisor.conf
在控制台中使用命令stop、start分别启动和停止项目spider
当然还可以通过浏览器进入(端口、用户名和密码均在配置文件中)
杀掉uwsgi进程看看效果
只要supervisord进程还存在,uwsgi就会重启
那正确的停止流程应该是
- 1、supervisorctl中stop对应的项目,比如supervisorctl中stop spider
- 2、kill掉剩下的uwsgi进程
- 3、kill掉的supervisord进程