使用 Supervisor 管理 Laravel 佇列和 Horizon

Hesunfly發表於2020-10-27

    Supervisor 是 unix 系統上用於監控和管理程式的工具,我們在執行 Laravel 開發的應用時,可能會用到佇列和 Horizon。但是執行它們的命令有個缺陷,就是關閉終端後,將停止執行,這顯然是不合理的,所以我們需要使用 Supervisor 來管理它們。接下來介紹一下實現的步驟:

安裝 Supervisor

Supervisor 的官方文件,這裡有詳細的安裝和使用說明,我使用的 ubuntu 系統,使用 apt-get 可以直接安裝。

# ubuntu
$ sudo apt-get install supervisor -y
# 通用的安裝方式(需要先安裝 pip)
$ pip install supervisor

配置使用

Supervisor 的配置檔案在 /etc/supervisor 目錄下,supervisord.conf 是主配置檔案,我們需要在同級目錄下的 conf.d 目錄中建立配置檔案。

cd /etc/supervisor/conf.d

vim laravel-worker.conf

配置內容

# 使用program 後的引數區分不同的應用
[program: larave-worker-queue]   # 佇列應用
# 執行的命令
command=php /www/laravel/artisan queue:listen
# 指令碼執行的使用者身份
user=root
process_name=%(program_name)s_%(process_num)d
# 應用目錄
directory=/www/laravel
# 日誌目錄
stdout_logfile=/www/laravel/storage/logs/supervisord.log
redirect_stderr=true
numprocs=1

[program: larave-worker-horizon]  # horizon 應用
command=php /www/laravel/artisan horizon
user=root
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)d
directory=/www/laravel
stdout_logfile=/www/laravel/storage/logs/supervisord.log
redirect_stderr=true
numprocs=1

執行

//啟動
sudo supervisord -c /etc/supervisor/supervisord.conf
// 檢視執行狀態
sudo supervisorctl status

執行成功的話,佇列和 Horizon 就可以正常使用了!如果需要新增應用需要先 kill掉 supervisor,然後重新啟動即可。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章