Laravel使用Supervisor管理linux自动队列

队列处理器 & 部署#
由于队列处理器都是 「常驻」 进程,若是代码改变而队列处理器没有重启,他们是不能应用新代码的。因此最简单的方式就是从新部署过程当中要重启队列处理器。你能够很优雅地
只输入 queue:restart 来重启全部队列处理器。php

php artisan queue:restart

这个命令将会告诉全部队列处理器在执行完当前任务后结束进程,这样才不会有任务丢失。由于队列处理器在执行 queue:restart 命令时对结束进程,你应该运行一个进程管理器,
好比 Supervisor 来自动从新启动队列处理器laravel

Supervisor 是一个 Linux 操做系统上的进程监控软件,它会在 queue:listen 或 queue:work 命令发生失败后自动重启它们。在 Ubuntu 安装 Supervisor,能够用如下命令:spa

sudo apt-get install supervisor

配置 Supervisor#
Supervisor 的配置文件通常是放在 /etc/supervisor/conf.d 目录下。在这个目录中你能够建立任意数量的配置文件来要求 Supervisor 怎样监控你的进程。例如咱们建立一个
laravel-queue-worker.conf 来启动与监控一个queue:work进程:操作系统

[program:laravel-queue-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/vagrant/www/ucenter/artisan queue:work
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
user=vagrant
stdout_logfile=/home/vagrant/www/ucenter/worker.log

线上环境把路径和user修改为对应的vagrant

启动 Supervisor#
当这个配置文件被建立后,你须要更新 Supervisor 的配置,并用如下命令来启动该进程:rest

1 sudo supervisorctl reread 
ERROR: CANT_REREAD: Invalid user name forge in section 'program:laravel-queue-worker' (file: 
'/etc/supervisor/conf.d/laravel-queue-worker.conf')

若执行reread报错,在conf文件中添加user=vagrantcode

1 sudo supervisorctl update
2 sudo supervisorctl start laravel-queue-worker:*
vagrant@homestead:/etc/supervisor/conf.d$ vi laravel-queue-worker.conf
vagrant@homestead:/etc/supervisor/conf.d$ sudo supervisorctl reread
laravel-queue-worker: available
vagrant@homestead:/etc/supervisor/conf.d$ sudo supervisorctl update
laravel-queue-worker: added process group
相关文章
相关标签/搜索