supervisor的使用
环境:
centOS7.5
python3与python2共存
使用这种方式配置supervisor,可以为每1个flask项目建立 1个配置文件,使用1个supervisorctl统一管理,各种项目之间的配置文件又互不干扰。
通过在jenkins使用shell命令即可完成项目的自动布署
下面这种方式,只能在flask项目中通过supervisord -c xx.conf文件这种方式启动gunicorn,每次布署项目之后,都 需要手动重启,很不方便。
目标:
让supervisor管理gunicorn,可以在gunicorn发生意外的情况下,会自动的重启。
1.supervisor的安装:
在系统级别的python环境下pip install supervisor
。(这里如果你用的是python3写的项目,也可以直接用pip安装启动supervisor,也就是python2,supervisor安装在3或者2,对你的项目没有任何影响)
2.在项目的根目录下创建一个文件叫做program_name_supervisor.conf,目录结构如下:
配置文件内容如下:
注意:
1.注意supervisord配置文件行头不要有空格
2.gunicorn的命令要在虚拟环境下运行(因为gunicorn安装在flaskApi这个虚拟环境中)
# supervisor的程序名字
[program:gotest] #program_name 该名称可以随意设置
# supervisor执行的命令
command=/root/.virtualenvs/flaskApi/bin/gunicorn -w 4 -b 127.0.0.1:8000 wsgi:application
# 项目的目录
directory = /home/wangju/gitProject/flaskDemo
# 开始的时候等待多少秒
startsecs=0
# 停止的时候等待多少秒
stopwaitsecs=0
# 自动开始
autostart=true
# 程序挂了后自动重启
autorestart=true
# 输出的log文件
stdout_logfile=programdir/log/supervisord.log #这里你可能需要先创建log路径
# 输出的错误文件
stderr_logfile=programdir/log/supervisord.err#同上
[supervisord]
# log的级别
loglevel=info
# 使用supervisorctl的配置
[supervisorctl]
# 使用supervisorctl登录的地址和端口号
serverurl = http://127.0.0.1:9001
# 登录supervisorctl的用户名和密码
username = admin
password = admin123456
[inet_http_server]
# supervisor的服务器
port = :9001
# 用户名和密码
username = admin
password = admin123456
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
安装:
yum
install
-y epel-release
yum
install
-y supervisor
验证安装成功:
#测试是否安装成功
echo_supervisord_conf
#创建配置文件
echo_supervisord_conf > /etc/supervisord.conf
通过supervisor启动gunicorn
(flaskApi) [root@67 flaskDemo]# supervisord -c gotest_supervisor.conf
确定supervisord 服务并设置为随机启动:
systemctl start supervisord.service && systemctl enable supervisord.service
浏览器输入url确认一下,gunicron已经把flask启动起来了,可以正常请求并返回内容
参考文档:
https://www.jianshu.com/p/d2da31b95a55
https://www.cnblogs.com/Dicky-Zhang/p/6171954.html