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
相關文章
相關標籤/搜索