Supervisord安装和配置
安装
推荐使用 yum 安装(easy_install安装有坑):
yum install epel-release
yum install -y supervisor
默认配置文件:/etc/supervisord.conf
进程管理配置文件放到:/etc/supervisord.d/目录下即可
配置文件
编辑配置文件
参考地址
注:
运行supervisord服务的时候,需要指定supervisor配置文件,如果没有显示指定,默认在以下目录查找:
$CWD/supervisord.conf
$CWD/etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf (since Supervisor 3.3.0)
../etc/supervisord.conf (Relative to the executable)
../supervisord.conf (Relative to the executable)
$CWD表示运行supervisord程序的目录。
编写/etc/supervisor/dirini/test.ini内容:
touch crawl_syn_server.ini
[program:crawl-syn-server]
user = root
directory = /sh
command = /bin/bash crawl_syn_server.sh
autostart = true
startsecs = 10
redirect_stderr = true
stdout_logfile = /var/log/crawl_syn_server.log
参数说明:
program: 程序名称,名字不同于进程名子
user=root: 用哪个用户启动进程,默认是root
command: 执行的命令,最好写绝对路径
directory: 执行命令的路径
autostart: 随supervisor启动
startsecs: 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart: 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=60 : 启动失败自动重试次数,默认是3
priority=999: 进程启动优先级,默认999,值小的优先启动
redirect_stderr: 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=50MB : stdout 日志文件大小,默认50MB
stdout_logfile_backups = 10 : stdout 日志文件备份数,默认是10
stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/var/log/supervisord/queue-groupon-success-listen.log
stderr_logfile=/var/log/supervisord/queue-groupon-success-listen.log
loglevel=info : 日志的级别
stopasgroup=false: 默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false: 默认为false,向进程组发送kill信号,包括子进程
Supervisord管理命令
systemctl stop supervisord
systemctl start supervisord # 开启 supervisord 进程守护(一定记得开启)
systemctl status supervisord
systemctl reload supervisord
systemctl restart supervisord
控制进程
1、交互终端
supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。
2、bash终端
supervisorctl status #查看当前运行的进程列表
supervisorctl reload #载入所有配置文件,并按新的配置启动、管理所有进程(会重启原来已运行的程序)
supervisorctl update #更新新的配置到supervisord(不会重启原来已运行的程序)
supervisorctl reread #当一个服务由自动启动修改为手动启动时执行一下就ok
supervisorctl start xxx #启动某个进程
supervisorctl stop xxx #停止某一个进程(xxx),xxx为[program:theprogramname]里配置的值
supervisorctl restart xxx #重启某个进程
supervisorctl stop all #停止全部进程
supervisor开机自动启动
在目录/usr/lib/systemd/system/ 新建文件supervisord.service,并添加配置内容
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
[Install]
WantedBy=multi-user.target
启动服务 supervisord
systemctl enable supervisord
验证一下是否为开机启动
systemctl is-enabled supervisord
注:如果启动成功后无法登陆web端,则允许9001端口通过防火墙或者关闭防火墙,关闭selinux,把supervisord.conf中的port=127.0.0.1:9001中的127.0.0.1修改成IP地址重启服务进行访问