最近為了讓在伺服器上的 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 進行開發,專注於架構研究,你可以在這個部落格看到我精選的筆記內容,希望對你會有所幫助。
更多關於我的訊息,可至關於關於頁面。