Supervisor 的文档地址:http://www.supervisord.org/
安装 Supervisor
1 | yum install -y epel-release |
2. 配置 Supervisor
Supervisor 的配置文件为:/etc/supervisord.conf
,Supervisor 所管理的应用的配置文件放在 /etc/supervisord.d/
目录中,这个目录可以在 supervisord.conf 中配置。
启动 Supervisor
1 | supervisord -c /etc/supervisor.conf |
通过这种方式启动,服务器重启后 Supervisor 不会自动启动,不建议使用这种方式启动Supervisor。
安装 Supervisor 后,在 /usr/lib/systemd/system/
目录中会有一个 supervisord.service
文件,用下面的内容替换:
1 | # supervisord service for sysstemd (CentOS 7.0+) |
启用开机启动
1 | systemctl enable supervisord.service |
启动Supervisor
1 | systemctl start supervisord.service |
查看Supervisor状态
1 | systemctl status supervisord.service |
1 | [root@web rainbow]# systemctl status supervisord.service |
如果在启动的时候遇到如下错误:
Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program
使用以下命令:
1 | find / -name supervisor.sock |
找到supervisor.sock,然后unlink即可
1 | unlink /path/supervisor.sock |
3. 应用配置
Supervisor 管理应用的进程,需要对每个应用进行配置。在 /etc/supervisor.d
中创建 helloworld.ini
,每个应用对应一个配置文件即可。
下面是配置文件的示例:
1 | [program:helloworld] ;程序的名称 |
创建好配置文件后,重启 Supervisor
1 | supervisorctl reload |
或热重启,不会重启其他子进程
1 | supervisorctl reread |
为确保没有错误,可以正常启动,使用前文提到的查看Supervisor状态的命令查看。或者查看要管理的进程是否启动,本例中可以使用下面的命令:
1 | ps -ef | grep HelloWorld.dll |
4. Supervisor 管理进程
有两种方式可以管理进程,命令行和Web管理。
命令行
1 | supervisorctl shutdown #关闭所有任务 |
Web管理
启用 Web 管理,首先将 /etc/supervisord.conf
配置文件中的 inet_http_server
节点取消注释。
1 | [inet_http_server] ; inet (TCP) server disabled by default |
修改后重启 Supervisor
1 | supervisorctl reload |
在浏览器中打开地址,如下图所示。
下面是第三方Supervisor的Web管理工具:
cesi : https://github.com/Gamegos/cesi
suponoff: https://github.com/GambitResearch/suponoff
gosuv: https://github.com/codeskyblue/gosuv
supervisord-monitor: https://github.com/mlazarov/supervisord-monitor
supervisord-monitor改进版:https://github.com/WisZhou/supervisord-monitor