基础环境
系统:Ubuntu 16.04
Python版本:系统自带默认:2.7.10
安装
目前supervisor对于python3的支持还不是很友善,所以默认使用python2的环境安装,但是并不妨碍管理python3环境下的应用和进程。
- 安装
supervisor
$ sudo pip install supervisor
- 重定向配置文件(
需要切换到root账户,sudo都不行
)
$ sudo su # 切换到root
$ echo_supervisord_conf > /etc/supervisor/supervisord.conf
- 修改配置文件
打开/etc/supervisor/supervisord.conf
文件,在最下面,我们会找到如下梁行代码:
;[include]
;files = relative/directory/*.ini 可以是 *.conf 或 *.ini,这里的路径指向项目的supervisor.ini配置文件的存储地方,在这里可以通过软链接来统一管理。
去掉前面的注释 ;
,即可引入自定义配置文件,files 文件后面的配置文件路径即是自己定义的配置文件路径
[include]
files = /data/supervisor-configs/*.ini
这里我们使用软连接,将其软连到我们的项目下的supervisor.ini
配置文件
ln -s /myproject/configs/supervisor.ini /etc/supervisor-configs/myproject.ini
- 配置文件参数参考
[program:myproject]
environment = NEW_RELIC_CONFIG_FILE=/data/www/myproject/configs/newrelic.ini # 通过newrelic去监控程序
directory = /data/www/myproject/configs
command = newrelic-admin run-program /usr/local/bin/uwsgi --ini uwsgi.ini # 启动uwsgi配置文件,根据自己的uwsgi实际安装路径填写
autostart = true
autorestart = true
stopsignal = QUIT
killasgroup = true
buffer-size = 65535
redirect_stderr = true # 错误日志重定向输出
stdout_logfile_maxbytes = 0
stdout_logfile_backups = 0
stdout_logfile = /data/logs/myproject/uwsgi.stdout.log
- 启动使用下面命令:
supervisord
- 然后使用supervisorctl管理工具
supervisorctl
restart xxx # 重启
update # 加载配置
reload # 重新加载,一般用update
start xxx # 启动某个项目
stop xxx # 停止某个项目