supervisor + virtualenv + gunicron

supervisor + virtualenv + gunicron_第1张图片
image.png

前言:
后端服务用pythonFlask框架写了,在部署的时候用了gunicron部署的。
在我没有采用supervisor来进行进程管理时。
我启动服务是通过以下命令

cd /home/servicePath/service
source bin/activate
gunicorn -c gunicron.py run:api

但是这样每次服务挂了,重启,或者手动结束,启动很麻烦。
我希望能通过supervisor来管理进程。因为用了virtualenv虚拟环境(为了隔离python2.x和python3.x的环境依赖)。所以产生的问题就是在配文件supervisord.conf里无法直接通过command=/home/xxxuser/xxxapp/bin/gunicorn -c gunicornPath/xxx.py run:api这种启动。

后来经同事指点,可以采用bash脚本,脚本里面source virtualenv和启动服务,然后supervisor去调那个bash脚本的方式来管理进程。

1.在工程目录下创建bash脚本文件

cd /home/myTestProjectPath
vi testBash.sh

2.bash中写入如下命令,其实就是把前面gunicorn启动服务的过程写在bash脚本中

supervisor + virtualenv + gunicron_第2张图片
image.png

然后 :wq保存

3.到/etc目录下配置supervisord.conf

vi supervisord.conf

在末尾加上配置信息

[program:udeean]
command= /home/myTestProjectPath/testBash.sh
autorestart=true
user=root

具体配置参数的说明可以参考http://www.cnblogs.com/ajianbeyourself/p/5534737.html

supervisor + virtualenv + gunicron_第3张图片
image.png

4.reloadsupervisorctl

supervisorctl reload

成功之后可以看到自己的服务是RUNNING状态

image.png

the end

你可能感兴趣的:(supervisor + virtualenv + gunicron)