安装配置Supervisor

来源:互联网 发布:vmware 8.5 mac破解版 编辑:程序博客网 时间:2024/06/05 02:39

应用场景

应用程序需要24小时不间断运行,这时可使用 supervisor 监控应用程序的进程,当发生应用程序内部错误退出、进程被杀死等情况时,自动重启应用程序。

官方网站 http://supervisord.org


支持的系统

Supervisor 是一个 UNIX 下的进程管理软件
Supervisor 不可以在任何版本的 Windows 上运行
Supervisor 可以运行在 Python 2.4 或者更高的 Python版本,但是不可以在任何 Python 3 的版本上运行。

1:安装

[root@oncloud0 ~]# pip install supervisor

安装完成后出现:

[root@oncloud0 ~]# ll /usr/bin/super*-rwxr-xr-x 1 root root 402 725 14:39 /usr/bin/supervisorctl-rwxr-xr-x 1 root root 398 725 14:39 /usr/bin/supervisord

说明
supervisor服务守护进程:/usr/bin/supervisord
supervisor服务控制程序:/usr/bin/supervisorctl
使用supervisord的命令行客户端管理工具supervisorctl,来管理进程

2:配置

运行 echo_supervisord_conf命令,可输出详细的配置文件内容,配置文件中分号“;”的功能为注释

[root@oncloud0 ~]# echo_supervisord_conf

将默认的配置文件重定向至/etc路径下(方便管理)

[root@oncloud0 ~]# echo_supervisord_conf > /etc/supervisord.conf

文件最后有个配置项:

[include];files = relative/directory/*.inifiles = /etc/supervisor/*.conf

可以把需要监控的脚本单独写在一个文件中,在这里配置路径进行监控

[root@oncloud0 supervisor]# ll /etc/supervisor/*.conf-rw-r--r-- 1 root root 566 8月   2 18:27 /etc/supervisor/flaskzhuzhong.conf

flaskzhuzhong.conf 这个文件(用 Python 和 Flask 框架编写的一个服务)就是单独配置的需要监控的程序,以下是具体配置内容:

[root@oncloud0 supervisor]# cat /etc/supervisor/flaskzhuzhong.conf[program:falsk_zhuzhong]directory=/data/disk2/jiudian/hotelSystemPro_V2/flaskWebServicecommand=python NPS_zhuzhongDianping_invocated_real_time_update.pyredirect_stderr=truestdout_logfile=/data/disk2/jiudian/log/flask_zhuzhong_supervisor.logautostart=true                  ; 程序是否随supervisor启动而启动  autorestart=true                ; 程序停止时,是否自动重启  stopasgroup=true                ; send stop signal to the UNIX process group (default false)killasgroup=true                ; SIGKILL the UNIX process group (def false)

Notice: 如何停止子进程

场景:如果supervisord.conf中配置的command是执行一个bash,而bash里执行Java,那么当使用supervisorctl stop [programname]停止程序时,只有上层进程被停止,而java进程没有被停止。
解决办法:
在配置文件中设置:
stopasgroup=true
killasgroup=true

3:启动 supervisor

[root@oncloud0 supervisor]# supervisord -c /etc/supervisord.conf

4:查看监控的程序

方式1:使用supervisorctl管理程序

开启/停止某个程序
supervisorctl [start | stop] [program名称] //在supervisord.conf中定义的
查看进程状态
$supervisorctl status

$ supervisorctl status$ supervisorctl stop usercenter$ supervisorctl start usercenter$ supervisorctl restart usercenter$ supervisorctl reread$ supervisorctl update

方式2:启动 web 管理界面

修改如下:

[root@oncloud0 supervisor]# vim /etc/supervisor/supervisord.conf[inet_http_server]         ; inet (TCP) server disabled by defaultport=115.182.40.160:9001        ; ip_address:port specifier, *:port for all ifaceusername=xxxxx              ; default is no username (open server)password=xxxxx               ; default is no password (open server)

浏览器打开 http://115.182.40.160:9001 进行访问,需要输入上面配置的用户名密码。


参考链接:
http://www.cnblogs.com/shijingjing07/p/6024066.html
http://www.ttlsa.com/linux/using-supervisor-control-program/
http://blog.csdn.net/slx_2011/article/details/44751951
http://www.cnblogs.com/ajianbeyourself/p/5534737.html
http://www.jianshu.com/p/326da8d1ba84