flask项目部署supervisor+gunicorn+Nginx

一、 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不再赘述,参考其他文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值