安装

yum install epel-release
yum install supervisor

配置

Supervisor 的配置文件在 /etc/supervisord.conf,文件底部默认加载 /etc/supervisord.d/ 目录下所有的 *.ini 文件作为具体项目的配置文件。

  1. 我要配置一个 Laravel Job
[program:laravel]
process_name=%(program_name)s_%(process_num)02d
command=php /data/www/laravel/artisan queue:work --tries=3
autostart=true ;是否自动启动
autorestart=true ;是否自动重启
startsecs=1 ;自动重启间
user=myUser ;执行进程的用户
numprocs=8
redirect_stderr=true
stderr_logfile=/data/logs/supervisor/laravel.err.log ;标准错误日志
stdout_logfile=/data/logs/supervisor/laravel.out.log ;标准输出日志

启动

打开 /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
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

常用命令

systemctl enable supervisord.service  # 开机启动
systemctl start supervisord.service   # 启动 Supervisor
systemctl status supervisord.service  # 查看 Supervisor 状态
supervisorctl reload                  # 重启
supervisorctl reread                  # 热重启(不重启其他子进程)
supervisorctl shutdown                # 关闭所有任务
supervisorctl stop|start program_name # 关闭或开启某个任务
supervisorctl status                  # 查看所有任务状态

参考

Supervisor 的文档