安裝 Supervisor:
Supervisor 是一個讓使用者於 UNIX-like 作業系統上管理 Processes 的軟體,其運作原理請參考文件。以我的暸解,Supervisor 主要由 supervisord 與 supervisorctl 組成,前一個負責 Processes 啟動、管理,後面一個則是讓你可以針對每個 Process 下達命令的工具。Supervisor 安裝方式有很多種,接下來將使用 pip 來安裝,指令如下:
pip install supervisor
建立 Supervisor 設定檔:
安裝完畢後,接著來建立設定檔。Supervisor 有提供一個指令,可以快速產生設定檔,指令如下:
echo_supervisord_conf > /etc/supervisord.conf
但是自動產生的設定檔內容太繁雜,所以我們先來手動建立一個簡單設定檔。注意,設定檔內可以同時加入多個應用,但本範例僅以單個應用為主,內容如下:
; group 區塊
; 此區塊內指定哪些程序屬於同一個群組,
; 範例內指定了一個群組(app),它目前擁有一個成員(app1)
[group:app]
programs=app1
; program 區塊
; 此區塊內必須詳細的定義執行程式名稱、路徑及 Log 存放路徑
[program:app1]
command=python /your/path/test.py -port=8888 -ip=yourip
directory=/your/path
autorestart=true
redirect_stderr=true
loglevel=info
stdout_logfile=/your/path/app1.log
; inet_http_server 區塊
; Supervisor 提供網頁管理介面,從瀏覽器中就可以直接操控
[inet_http_server]
port=127.0.0.1:9001
[supervisord]
[supervisorctl]
serverurl=http://127.0.0.1:9001
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
注意,rpciterface 區塊若沒有如上面範例加入設定檔中,會出現錯誤訊息:Sorry, supervisord responded but did not recognize the supervisor namespace commands that supervisorctl uses to control it. Please check that the [rpcinterface:supervisor] section is enabled in the configuration file (see sample.conf).
基本上錯誤訊息都會直接告訴你缺少哪一個設定區塊,依指示補上即可。若沒有其他設定上的意外,基本的 Supervisor 設定就完成了,接下來只需將它啟動。
使用 Supervisor:
下面直接列出常用的指令:
# 啟動 supervisord,並指定設定檔
supervisord -c /etc/supervisord.conf
# 查看 Process 狀態
supervisorctl status
# 重新載入設定
supervisorctl reload
# 重新啟動
supervisorctl restart
# 停止特定 Process
# 延續設定檔範例,若要停止群組 app 內的 app1
supervisorctl stop app:app1
# 停止所有 Prcoess
supervisorctl stop all
Environment :
・ Mac OS X
・ Python 2.7
Reference :
・ Tornado
・ Supervisor