安装部署supervisor+gunicorn
一、 gunicorn
gunicorn 可以做为wsgi容器,用来部署 python。
1. 下载安装gunicorn
# pip 下载安装gunicorn
pip3 install gunicorn
2. 建立软链接
# 其中/usr/local/python3/bin 上一步的下载路径
ln -s /usr/local/python3/bin/gunicorn /usr/bin/gunicorn
3. 运行项目
此时我们可以切换到flask项目目录下使用gunicorn命令启动项目
gunicorn -w 4 -b 127.0.0.1:5000 -t 300 -D myapp:app
# 其中-w表示启动的进程数,-b表示启动的ip和端口号,-t是超时时间,-D是deamon守护进程,myapp是Python文件名,app是文件中的变量名或者函数名。
但是每次使用gunicorn对管理项目非常不友好,因此我们使用supervisor管理进程。
二、 supervisor
Supervisor是一个进程管理系统,它通过fork/exec的方式将这些被管理的进程当作它的子进程来启动,若该子进程异常中断,则父进程可以准确地获取子进程异常中断的信息
1. 下载安装supervisor
# pip 下载安装supervisor
pip3 install supervisor
下载完后的supervisor应该在python3/bin目录下
2. 建立软链接
# 其中/usr/local/python3/bin 上一步的下载路径
ln -s /usr/local/python3/bin/echo_supervisord_conf /usr/bin/echo_supervisord_conf
ln -s /usr/local/python3/bin/supervisord /usr/bin/supervisord
ln -s /usr/local/python3/bin/supervisorctl /usr/bin/supervisorctl
3. 生成并修改配置文件
# 生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
# 修改 supervisor 配置文件,添加 gunicorn 进程管理
vim /etc/supervisord.conf
在配置文件最后添加项目
# supervisord.conf
[program:myapp]
command=gunicorn -w 4 -b 127.0.0.1:5000 -t 300 myapp:app // 项目启动命令
directory=/root/project/ // 项目目录
startsecs=0 // 启动时间
stopwaitsecs=0 // 终止等待时间
autostart=true // 是否自动启动
autorestart=true // 是否自动重启
stdout_logfile=/root/project/logs/gunicorn.log // log日志
stderr_logfile=/root/project/logs/gunicorn.err // 错误日志
由于修改完配置后,启动时往往会出现unix:///tmp/supervisor.sock no such file的问题,顺带在配置文件中一并解决。
参考自: supervisor命令出现 unix:///tmp/supervisor.sock no such file.
# supervisord.conf
#file=/tmp/supervisor.sock ; (the path to the socket file)
file=/var/run/supervisor.sock ; (the path to the socket file)
#logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile=/var/log/supervisord.log ; (main log file;default $CWD/supervisord.log)
#pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
#serverurl=unix:///tmp/supervisor.sock 改成
serverurl=unix:///var/run/supervisor.sock
修改权限
chmod 777 /run
chmod 777 /var/log
创建supervisor.sock
touch /var/run/supervisor.sock
chmod 777 /var/run/supervisor.sock
4. 以新的配置文件启动supervisor
supervisorctl shutdown
supervisord -c /etc/supervisord.conf
附上几个supervisor命令
//更新新的配置到supervisord
supervisorctl update
//重新启动
supervisorctl reload
//查看进程
supervisorctl status
//启动某个进程
supervisorctl start xxxx
//停止某个进程
supervisorctl stop xxxx
//重启某个进程
supervisorctl restart xxxx
//关闭supervisord
supervisorctl shutdown
Nginx不再赘述,参考其他文章