最近為了讓在伺服器上的 Laravel Queue Worker 更方便去管理,不用每次重啟伺服器都要上去重新執行,
所以要來安裝官方文件有提到到 Supervisor
這個服務。
Supervisor 是個用 Python 寫的一個程序管理服務,支援自動重啟、執行多程序 …etc。
Install
apt-get install supervisor
建立設定檔
前往 /etc/supervisor/conf.d
建立監看程序的設定檔 xxxxx.conf
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/laravel/prod/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/home/laravel/log/prod/worker.log
[program:xxxx]
: 告訴 supervisor 這是個要被管理的程式的設定檔,:
後面接著一個自己指定的名稱。process_name
: 所執行程序的命名方式。command
: 啟動程序的指令。autostart
: 啟動 supervisor 時是否自動啟動,預設為true
。autorestart
: 自動重啟程序,可為false
、unexpected
或true
,如果為unexpected
則會去檢查 exit code,是屬於exitcodes
才會重啟,而如果為true
則會無條件自動重啟。user
: 執行程序的使用者。numprocs
: 執行程序數,如果大於 1 ,則process_name
需包含%(process_num)
,預設為 1。redirect_stderr
: 將 stderr 導向到 supervisor 的 stdout 文件中,預設為false
。stdout_logfile
: 設定 stdout 要輸出的路徑 (需建立好資料夾,否則啟動會失敗)。
詳細設定可至官方文件。
建立完後要重啟服務
service supervisor restart
檢查服務狀態
service supervisor status
supervisorctl
檢查狀態
supervisorctl status
重讀設定檔
supervisorctl reread # 僅重讀
supervisorctl update # 會重啟動應程序
啟動/停止/重啟 程序
supervisorctl start <name>
supervisorctl stop <name>
supervisorctl restart <name>
如果要一次重起所有程序,可以在名稱中使用萬用字元,如 laravel-worker:*
。
Puck Wang
Hi! 我是 Puck Wang,這個部落格的作者,是一位全端網站開發者,常使用 .Net 和 React 進行開發,專注於架構研究,你可以在這個部落格看到我精選的筆記內容,希望對你會有所幫助。
更多關於我的訊息,可至關於關於頁面。