http://zhangweide.cn/archive/2013/supervisor-note.html
Supervisord
supervisord的出现,结束了我这苦恼的问题,它可以帮你守护任何进程,当然如果它的进程也挂了就全都over了。实际情况是上线三个多月运行非常好,没有发现进程掉过。
CentOS下安装Supervisord
# yum install python-setuptools
# easy_install supervisor
创建配置文件
# echo_supervisord_conf > /etc/supervisord.conf
修改配置文件
# vi /etc/supervisord.conf
在末尾添加
配置说明:
command 要执行的命令
priority 优先级
numprocs 启动几个进程
autostart supervisor启动的时候是否随着同时启动
autorestart 当程序over的时候,这个program会自动重启,一定要选上
启动Supervisord
# supervisord
查看帮助
启动时指定配置文件
# supervisord -c /etc/supervisord.conf
进入ctl模式
# supervisorctl
ctl中的简单命令
help 查看命令帮助
status 查看状态
stop XXX 停止某一个进程
start XXX 启动某个进程
restart XXX 重启某个进程
reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
测试
这里以守护nginx进程来演示,首先在/etc/supervisord.conf加入
然后启动supervisord
查看nginx的进程
杀掉nginx进程
然后接着重新查看nginx进程
起死回生了,并且pid已经由14037变成14038。搞定!
通过web管理
supervisord可以通过web管理进程以及查看进程状态,需要在配置文件里开启
找到[inet_http_server]这一段,修改成
其中port这个字段要各位注意,如果*:9001表示允许所有ip访问,如果指定单个IP可以 xx.xx.xx.xx:9001 这样既可。如果你开启了iptabls记得要在规则里允许port指定的端口号。
然后保存配置,重启supervisord