使用Supervisor和Gunicorn部署Flask

之前介绍了如何在宝塔上如何利用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.loghello_world.out.log

第三步,运行

上面的步骤都做好之后,我们可以开始运行了

$ sudo supervisorctl reread
$ sudo service supervisor restart

查看运行状态

$ sudo supervisorctl status

这样就大功告成了。

参考:https://medium.com/ymedialabs-innovation/deploy-flask-app-with-nginx-using-gunicorn-and-supervisor-d7a93aa07c18

阅读量: | 柯西君_BingWong | 2018-12-18