先安装 Python 的 easy_install
,再通过 easy_install 安装 supervisor
# yum install python-setuptools
# easy_install supervisor
生成配置文件,并建立相应目录,管理 supervisor 启动进程
# echo_supervisord_conf > /etc/supervisord.conf
# mkdir -p /etc/supervisord.d/
编辑 /etc/supervisord.conf
,修改 [include] 区块内容:
[include]
files = /etc/supervisord.d/*.ini
这样, supervisor 会加载 /etc/supervisord.d/ 下的所有 .ini 文件
替换 /tmp/supervisor.sock
成 /var/run/supervisor.sock
; /tmp/supervisord.log
成 /var/log/supervisor.log
,/tmp/supervisord.pid
成 /var/run/supervisor.pid
要不容易被linux自动清掉,出现 unix:///tmp/supervisor.sock no such file
的问题。
在 https://github.com/Supervisor/initscripts 下载 CentOS 使用的自动启动服务脚本 centos-systemd-etcs
# wget -O /usr/lib/systemd/system/supervisord.service https://github.com/Supervisor/initscripts/raw/master/centos-systemd-etcs
将 supervisord
服务设为自启动
# systemctl enable supervisord.service
输入 supervisorctl 命令可以进入 supervisor 控制台
新建 /etc/supervisord.d/laravel-work.ini
文件:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/php/bin/php /data/wwwroot/app.com/artisan queue:work database --sleep=3 --tries=3
autostart=true
autorestart=true
user=www
numprocs=8
redirect_stderr=true
stdout_logfile=/data/wwwroot/app.com/storage/logs/queue.log
这里开启了 8 个 queue:work 进程,并监视他们,如果失败的话,自动重启;在项目的 storage/logs/queue.log 记录日志。
启动 supervisor 服务:
# supervisord
至此, supervisor 安装及 Laravel 队列设置完毕
如果以后配置文件有修改,或者新增,进入 supervisor 控制台,执行下面的命令
# supervisorctl
supervisorctl> reread
supervisorctl> update
supervisorctl> start laravel-worker:*