之前介绍了如何在宝塔上如何利用Gunicorn部署Flask,今天要介绍的是Supervisor和Gunicorn部署Flask。 为啥需要Supervisor呢?
Supervisor是一个进程管理系统,它通过fork/exec的方式将这些被管理的进程当作它的子进程来启动,若该子进程异常中断,则父进程可以准确地获取子进程异常中断的信息。
参考:https://blog.csdn.net/guolindonggld/article/details/83386920
我之前写的网站一直都运行正常,所以没有机会使用Supervisor。但直到今天,我上传了重构的网站并运行成功,于是乎我就退出SSH,但我发现退出SSH之后网站就停止运行了。。。google了很多资料才发现需要Supervisor来管理FLASK的后台进程,以防止自动退出。
▌第一步, 安装supervisor
sudo apt install supervisor
▌第二步,建立conf文件
安装完supervisor之后你会发现etc下会出现了supervisor的文件夹,接下来我们要在/etc/supervisor/conf.d/
这个目录下新建一个xxx.conf
的文件,这个文件是用于填写相关的运行命令。
[program:hello_world]
directory=/home/ubuntu/hello_world
command=/home/ubuntu/.env/bin/gunicorn app:app -b localhost:8000
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_world/hello_world.err.log
stdout_logfile=/var/log/hello_world/hello_world.out.log
上面的directory是指你项目的具体位置
command是指gunicorn的所在目录,例如,我的vps上安装了virtualenv
,所以我的gunicorn所在目录为/xxxx/py3env/bin
stderr_logfile和stdout_logfile是记录文件的地址,我们需要在/var/log/
的目录下新建一个名为hello_world
的文件夹以便supervisor生成hello_world.err.log
和hello_world.out.log
。
▌第三步,运行
上面的步骤都做好之后,我们可以开始运行了
$ sudo supervisorctl reread
$ sudo service supervisor restart
查看运行状态
$ sudo supervisorctl status
这样就大功告成了。