前言:
后端服务用python
的Flask
框架写了,在部署的时候用了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
脚本中
然后
: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
4.reload
supervisorctl
supervisorctl reload
成功之后可以看到自己的服务是RUNNING
状态
the end