安装主管
sudo apt-get install supervisor
配置主管
第一步:进入/etc/supervisor/conf.d目录
cd /etc/supervisor/conf.d
第 2 步:创建一个工作文件 laravel-worker.conf 将监听队列
sudo nano laravel-worker.conf
*注意:现在假设你的 laravel 应用在 /var/www/html 目录中
project folder is : /var/www/html/LaravelApp
第 3 步:将以下代码粘贴到 laravel-worker.conf 中并保存文件
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/LaravelApp/artisan queue:listen redis --queue=default --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile= /var/www/html/LaravelApp/storage/logs/worker.log
*注意:这里假设您使用redis进行队列连接
在.env文件中QUEUE_CONNECTION=redis
command=php /var/www/html/LaravelApp/artisan queue:listen redis
如果您使用其他连接,那么一般语法将是:
command= php [project_folder_path]/artisan queue:listen [connection_name]
[connection_name] 可以是 sync 、 database 、 beanstalkd 、 sqs 、 redis 中的任何一个
第 4 步:创建一个工作文件 laravel-schedule.conf,它将在 每 1 分钟(60 秒) 运行 artisan schedule:run 命令(*您可以更改它根据您的要求)
[program:laravel-schedule]
process_name=%(program_name)s_%(process_num)02d
command=/bin/bash -c 'while true; do date && php /var/www/html/LaravelApp/artisan schedule:run; sleep 60; done'
autostart=true
autorestart=true
numprocs=1
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
第 5 步:启动主管:运行以下命令
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start all
*注意:每当您更改任何配置 .conf 文件时,请运行 Step 5
的上述命令
额外有用的信息:
- 停止所有 supervisorctl 进程:
sudo supervisorctl stop all
- 重启所有supervisorctl进程:
sudo supervisorctl restart all
有用的链接:
https://laravel.com/docs/5.8/queues#running-the-queue-worker
http://supervisord.org/index.html