更新提醒(2026-10):本文寫於 2022 年,安裝段落包含 yum、pip、easy_install 與 python-setuptools-devel 等舊式做法,其中部分指令在新版發行版上可能已不適用或套件名稱不同。建議優先使用發行版套件管理器(如 apt)安裝,並以你的系統版本為準。
Supervisor 簡介
先來介紹一下 Supervisor 這個套件。
Supervisor (http://supervisord.org) 是一個用 Python 寫的程序管理工具,可以很方便地用來啟動、重新啟動、關閉程序(不限於 Python 程式)。除了控制單一程序,還可以同時啟動、關閉多個程序。例如伺服器不幸出問題,導致所有應用程式都被終止時,可以用 Supervisor 一次啟動所有應用程式,而不必一個一個輸入指令啟動。
Supervisor 安裝
# 1 配置好yum源後,可以直接安裝
yum install supervisor
#2 Debian/Ubuntu可通過apt安裝
apt-get install supervisor
# 3 pip安裝
sudo yum install python-setuptools-devel
pip install supervisor
# 4 easy_install安裝
sudo yum install python-setuptools-devel
easy_install supervisor
Supervisor 使用
在 /etc/supervisor/conf.d 下新增設定檔。
以 Laravel 啟動 WebSocket 為例:
[program:program_name]
command=/usr/bin/php /var/www/blog/artisan websockets:serve
numprocs=1
autostart=true
autorestart=true
user=www-data
| 指令 | 說明 |
|---|---|
| supervisorctl stop program_name | 停止某個程序 |
| supervisorctl start program_name | 啟動某個程序 |
| supervisorctl restart program_name | 重新啟動某個程序 |
| supervisorctl stop all | 停止全部程序 |
| supervisorctl reload | 載入最新的設定檔,停止原有程序並依新的設定啟動、管理所有程序 |
| supervisorctl update | 根據最新的設定檔,啟動新設定或有變動的程序;設定沒有變動的程序不會受影響而重新啟動 |
延伸閱讀
- 【Laravel】Queue + Horizon 完整實作 - 非同步任務與監控:Supervisor 常見用途之一就是守護 Queue worker,這篇用 Horizon 做完整的佇列管理與監控
- 【RealTime】Laravel Reverb - 官方 WebSocket Server 完整實作:Reverb 這類常駐的 WebSocket 服務同樣需要 Supervisor 守護
No comments yet.