centos7 + supervisor实现laravel队列常驻进程流程步骤
在centos7系统中使用supervisor进程管理工具来管理保持laravel任务进程状态
一、yum安装supervisor
yum install epel-release
yum install -y supervisor
二、配置supervisor,创建配置文件:
在/etc/supervisord.d/目录下输入
vim laravel-horizon.conf
创建配置文件laravel-horizon.conf:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /www/server/php/81/etc/php-cli.ini artisan horizon sqs --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
stopwaitsecs=3600
注意点:
1、因为我安装了laravel\horizon用于可视化队列,所以没有用queue命令
2、centos7的supervisord配置文件*.conf放在/etc/supervisord.d/下
3、Ubuntu的是/etc/supervisor/conf.d,用于配置单个进程组或者进程的个性化配置
4、确保stopwaitsecs的值大于运行时间最长的作业所消耗的秒数,否则,Supervisor可能会在作业完 成处理之前将其终止。
ps:
分享个queue命令的例子,作参考
// 在/etc/supervisor/conf.d/路径下建立一个 foo.conf 文件,存放一个组名为foo的配置
[group:foo] // 建立一个进程组
programs=bar // 进程组包括的进程,多个进程用逗号隔开
[program:bar] // 建立一个进程
process_name=%(program_name)s_%(process_num)02d // 启动的进程名 : bar_00 bar_01 ...
command=php /data/www/laravel-path/artisan queue:work --sleep=3 --tries=3 // 执行的进程命令
autostart=true // 随supervisor启动自动启动
autorestart=true
user=deploy // 执行进程的用户
numprocs=8 // 进程数
redirect_stderr=true
stdout_logfile=/data/logs/foo.log
//启动supervisor:
supervisord -c /etc/supervisord.conf
//进入supervisor操作台:
supervisorctl
//读取新增加的配置
supervisorctl> reread
supervisorctl> update
//启动foo组下的所有进程
supervisorctl> start foo:*
三、启动supervisor
运行以下命令,就可以安心关闭SSH了
#开机自启动
systemctl enable supervisord
#启动supervisord服务
systemctl start supervisord
# 查看supervisord服务状态
systemctl status supervisord
# 查看是否存在supervisord进程
ps -ef|grep supervisord
备注:
配置文件里的/www/server/php/81/etc/php-cli.ini artisan horizon就是你想要常驻运行的命令路径;
如果你不知道完整路径是什么,你可以先运行 php artisan xxx 然后 ctrl+z,然后再输入jobs就能看到完整路径了,复制该路径到conf文件里就可以了
supervisor的配置说明文档:
https://www.rddoc.com/doc/Supervisor/3.3.1/zh/configuration/#supervisord-section-settings
相关文章