Supervisor的服务器端称为supervisord,主要负责在启动自身时启动管理的子进程,响应客户端的命令,重启崩溃或退出的子进程,记录子进程stdout和stderr输出,生成和处理子进程生命周期中的事件。可以在一个配置文件中配置相关参数,包括Supervisord自身的状态,其管理的各个子进程的相关属性。配置文件一般位于/etc/supervisord.conf。
Supervisor的客户端称为supervisorctl,它提供了一个类shell的接口(即命令行)来使用supervisord服务端提供的功能。通过supervisorctl,用户可以连接到supervisord服务器进程,获得服务器进程控制的子进程的状态,启动和停止子进程,获得正在运行的进程列表。客户端通过Unix域套接字或者TCP套接字与服务端进行通信,服务器端具有身份凭证认证机制,可以有效提升安全性。当客户端和服务器位于同一台机器上时,客户端与服务器共用同一个配置文件/etc/supervisord.conf,通过不同标签来区分两者的配置。
Supervisor也提供了一个web页面来查看和管理进程状态,这个功能用得人比较少。
官网:http://www.supervisord.org
一、安装supervisord
$brew install supervisord
在mac下安装要比linux下安装方便的多。
二、配置
修改/usr/local/etc/supervisord.ini文件,取消以下几行注释
[inet_http_server] ; inet (TCP) server disabled by default
port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))
这样就可以通过浏览器对进行管理了。
三、添加一个新应用
创建一个a.php文件,内容如下:
while(true){
echo 'a' . time() . "\r\n";
sleep(1);
}
然后在supervisord.ini文件中添加以下几行:
[program:php]
command=php /Users/sxf/web/a.php
autostart=true
autorestart=true
startsecs=1
startretries=3
redirect_stderr=true
stdout_logfile=/Users/sxf/web/supervisord.log
stderr_logfile=/Users/sxf/web/stderr.log
重启supervisord。
$brew services restart supervisord
打开浏览器http://127.0.0.9001,输入用户名和密码,可以看此进程,可以对每个进程进行停止,重启和刷新操作。