CentOS下通过Supervisor管理虚拟环境的Gunicorn Flask项目,实现开机自启等功能

原文地址 https://www.cyberlight.xyz/pa...
上篇笔记 CentOS下通过Gunicorn+Nginx部署Python Flask网站,并配置https和Nginx访客日志 实现了Gunicorn部署Flask网站,采用新建 独立命令窗口 的方法实现Gunicorn后台运行。然而,实际生产环境中,我们可能需要Gunicorn 随服务器开机自启 或 系统出错时及时重启。下面记录我部署Supervisor的全过程。

这篇笔记建立于 CentOS下通过Gunicorn+Nginx部署Python Flask网站,并配置https和Nginx访客日志 实现后的优化,若您暂没有实现Gunicorn部署上线,请先阅读它。

环境: CentOS 7,  Python 3.6.8

进入CentOS命令窗口,输入如下命令安装Supervisor

yum install supervisor

按提示操作,安装完成后,默认位置为 /etc/supervisord.conf 。我们需要在 /etc/supervisord.d 目录新建一个 ini 配置文件。这里使用 vi 命令新建文件,如下

vi /etc/supervisord.d/xxx.ini #xxx为自定义名称

按下键盘 i 进入编辑页面,输入如下信息(SSH客户端窗口按 Shift + Insert键 粘贴)


[program:xxx] ; :右边是项目名称
directory = /www/flask/xxx ;程序的启动目录,这里是Flask网站根目录

command = /www/flask/xxx/venv/bin/gunicorn -w 4 -t 30 -b 0.0.0.0:5000 app:app ;启动虚拟环境下的gunicorn,这里建议使用绝对路径

autostart = true ; 在 supervisord 启动的时候也自动启动

autorestart = true ;程序异常退出后自动重启

stdout_logfile = /supervisor_log/supervisor.log ;日志存放路径,这个路径需要是已存在的路径

startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了

stopwaitsecs=0 ; 停止等待时间

上述信息中

 ; 是注释符 

command行 /www/flask/xxx/venv/bin/gunicorn 是该项目虚拟环境中Gunicorn的绝对路径,请根据实际路径不同灵活调整(Gunicorn的命令见笔记首部链接的文章)

输入正确信息后,依次按下键盘 esc 键、: 键、w 键、q 键,然后回车(保存并退出)

此时已成功安装并配置Supervisor,Supervisor貌似是自动启动的,在命令窗口输入

supervisorctl reload #保存配置文件并重启

如图,Supervisor已重启

继续输入

supervisorctl

这时能看到    XXX                       RUNNING   字段,代表网站已启动

现在试试重启服务器吧!网站将自动启动。

若更新了Flask源码,输入 supervisorctl reload 即可重启新代码

Supervisor常用命令如下:

关闭所有任务

supervisorctl shutdown

# 启动某个进程

supervisorctl start programxxx

# 重启某个进程

supervisorctl restart programxxx

# 停止全部进程 注:start、restart、stop都不会载入最新的配置文件

supervisorctl stop all

# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。

supervisorctl reload

# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。

supervisorctl update

10 声望
1 粉丝
0 条评论
推荐阅读
生产环境下如何优雅地使用 Docker 运行宝塔面板?
<p>此方案可能是全网最快的 宝塔面板 部署方案。 复习计算机网络时轻度折腾了 Linux、Docker、路由器 等,竟突然想到 Docker 部署宝塔面板的完美解决方案。在此使用 Python 开发并制作了宝塔面板 Docker 镜...

Cyberbolt阅读 2.9k

滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?

良许4阅读 2.3k

又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。

良许5阅读 1.8k

FastAPI性能碾压Flask?
不止一次的听过,FastAPI性能碾压Flask,直追Golang,不过一直没有测试过,今天闲着没事测试一下看看结果。不知道是哪里出了问题,结果大跌眼镜。

二毛erma02阅读 10.2k评论 3

封面图
Python之如何优雅的重试
为了避免偶尔的网络连接失败,需要加上重试机制,那么最简单的形式就是在对应的代码片段加一个循环,循环体里使用异常捕获,连接成功时退出循环,否则就重复执行相关逻辑,此时修改之后的函数f如下

Harpsichord12073阅读 7.3k

Linux终端居然也可以做文件浏览器?
大家好,我是良许。在抖音上做直播已经整整 5 个月了,我很自豪我一路坚持到了现在【笑脸】最近我在做直播的时候,也开始学习鱼皮大佬,直播写代码。当然我不懂 Java 后端,因此就写写自己擅长的 Shell 脚本。但...

良许1阅读 2.1k

基于 EKS Fargate 搭建微服务性能分析系统
近期 Amazon Fargate 在中国区正式落地,因 Fargate 使用 Serverless 架构,更加适合对性能要求不敏感的服务使用,Pyroscope 是一款基于 Golang 开发的应用程序性能分析工具,Pyroscope 的服务端为无状态服务且性...

亚马逊云开发者阅读 7.8k

10 声望
1 粉丝
宣传栏