supervisor是用python开发的一个在linux系统下的进程管理工具,可以方便的监听,启动,停止一个或多个进程。当一个进程被意外杀死后,supervisor监听到后,会自动重新拉起进程。
一、supervisor的安装
1、通过easy_install安装
yum -y install python-setuptoolseasy_install supervisor
2、通过yum安装
yum -y install supervisor
3、通过pip安装
yum -y install epel-releaseyum -y install python-pippip install supervisor
安装好后,会生成三个执行命令,echo_supervisord_conf,supervisorctl,supervisord。
二、supervisor的配置文件
supervisor的默认配置文件在 /etc/supervisord.conf 下,如果没有可以通过如下命令生成
echo_supervisord_conf > /etc/supervisord.conf
常用的配置项如下:
[unix_http_server]file=/tmp/supervisor.sock ; unix socket文件,supervisorctl会使用;chmod=0700 ; socket文件权限;chown=nobody:nogroup ; socket文件所属用户和用户组[inet_http_server] ; web管理界面port=127.0.0.1:9001 ; 管理界面的IP和端口username=admin ; 登陆管理界面的用户名password=123456 ; 登陆管理界面的密码[supervisord]logfile=/tmp/supervisord.log ; 日志文件logfile_maxbytes=50MB ; 日志文件大小,为0表示不限制logfile_backups=10 ; 日志文件备份数量,为0表示不备份loglevel=info ; 日志级别,也可设置为 debug,warn,tracepidfile=/tmp/supervisord.pid ; PID文件路径nodaemon=false ; 是否前台启动,为false表示守护进程方式minfds=1024 ; 打开文件描述符的最小值minprocs=200 ; 创建进程数的最小值[supervisorctl]serverurl=unix:///tmp/supervisor.sock ; 通过 unix sokcet 连接supervisord;serverurl=http://127.0.0.1:9001 ; 通过http方式连接supervisord[include]files = /etc/supervisord/confs/*.conf ; 包含其他配置文件,可以是.conf或.ini
我们需要把 [include] 前面的注释打开,并配置 files 的路径。
创建 files 中配置的目录。
mkdir -p /etc/supervisord/confs/
三、配置一个php脚本进程
我们在 /etc/supervisord/confs/ 目录下创建一个 demo.conf 文件。
;demo表示程序名称[program:demo];需要执行的命令command=php demo.php;命令执行的目录directory=/data/wwwroot;环境变量environment=PATH="/data/nmp/php/bin/";哪个用户运行user=root;是否自启动autostart=true;是否自动重启autorestart=true;自动重启时间间隔,单位秒startsecs=3;错误日志文件stderr_logfile=/tmp/demo.err.log;输出日志文件stdout_logfile=/tmp/demo.out.log
demo.php的代码如下:
四、管理进程。
管理进程,需要我们启动 supervisor 服务,这里我们配置 systemctl,开机自动启动 supervisor。
创建 /usr/lib/systemd/system/supervisord.service 文件,配置如下:
[Unit]Description=Supervisor daemon[Service]Type=forkingExecStart=/usr/bin/supervisordExecStop=/usr/bin/supervisorctl $OPTIONS shutdownExecReload=/usr/bin/supervisorctl $OPTIONS reloadKillMode=processRestart=on-failureRestartSec=42s[Install]WantedBy=multi-user.target
启用配置
systemctl enable supervisord.service
启动 supervisord
systemctl start supervisord.service
成功后,就可以通过 supervisorctl 交互命令管理进程脚本了。
读取有更新的配置文件
supervisorctl reread
更新配置文件修改过的程序
supervisorctl update
如果修改过 /etc/supervisord.conf 请使用如下命令
supervisorctl reload
启动,停止,重启,程序。
supervisorctl start 程序名supervisorctl stop 程序名supervisorctl restart 程序名
五、supervisor图形化管理界面
需要开启 /etc/supervisord.conf 文件中的 [inet_http_server]
[inet_http_server]port=0.0.0.0:9001username=adminpassword=123456
设置完后,要开放 9001 端口,并重启 supervisor
firewall-cmd --zone=public --add-port=9001/tcp --permanentfirewall-cmd --reload
重启 supervisor
supervisorctl reload