背景:PHP laravel队列 使用Supervisor 进程监控管理系统
只能Unix系统
Supervisor 官网为 http://supervisord.org/
安装
yum install epel-release
yum install -y supervisor
配置文件
默认配置文件:/etc/supervisord.conf
vim /etc/supervisord.conf
例:新增一个laravel队列的进程
; laravel
[program:laravel-worker] 被管理的进程配置参数,laravel-worker是进程的名称
process_name=%(program_name)s_%(process_num)02d
command=php /data/demo/laravel/artisan queue:work --queue=high,low 程序启动命令
autostart=true 在supervisord启动的时候也自动启动
autorestart=true 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
user=root 用哪个用户启动进程,默认是root
numprocs=1 监控进程数
redirect_stderr=true 把stderr重定向到stdout,默认false
stdout_logfile=/data/demo/worker.log 日志文件,需要注意当指定目录不存在时无法正常启动
[inet_http_server] ;HTTP服务器,提供web管理界面
port=0.0.0.0:9001 ; Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
username=admin ; 用户名 (default is no username (open server))
password=admin ; 密码 (default is no password (open server))
常用命令
supervisorctl status 状态
supervisorctl stop laravel-worker(名字) // 表示停止laravel-worker进程
supervisorctl stop all // 表示停止所有进程
supervisorctl start laravel-worker
supervisorctl restart laravel-worker
supervisorctl reread //重载
supervisorctl update //更新
重启supervisor时,报错:
supervisor “no such file” error.
unix:///tmp/supervisor.sock no such file
原因是服务器长期运行系统会清除tmp文件夹下的文件,我们只需要将tmp目录修改一下即可。
打开配置好的supervisord.conf,将tmp替换为var/run或者var/log具体看情况修改即可。
之后需要杀掉原来的进程。
ps -aux | grep supervisor
kill ***进程号
重启服务
supervisord -c /etc/supervisord.conf