1. 程式人生 > >supervisor 安裝配置

supervisor 安裝配置

環境centos 6

安裝yum install supervisor

生成配置檔案
echo_supervisord_conf > /etc/supervisord.conf

vim 開啟配置檔案 shift+g 跳轉到檔案最後一行。
可以看到如下配置

;[include]
;files = relative/directory/*.ini

去掉分號註釋,並指定好路徑,supervisor將會載入對應路徑下的*.ini配置檔案。

如果專案不多,也可以直接在該配置資料夾寫入

[program:name]
command = uwsgi --plugins=python --ini  /home/myflask/uwsgi.ini    ##需要執行的命令
startsecs=0 autostart=true #是否自動啟動 autorestart=true #是否自動重啟 stdout_logfile=/var/log/flask.log #標準日誌輸出 stderr_logfile=/var/log/flask_error.log #錯誤日誌輸出

【程序管理】

  1. 啟動supervisord管理的所有程序
    supervisorctl start all

  2. 停止supervisord管理的所有程序
    supervisorctl stop all

  3. 啟動supervisord管理的某一個特定程序
    supervisorctl start program-name // program-name為[program:xx]中的xx

  4. 停止supervisord管理的某一個特定程序
    supervisorctl stop program-name // program-name為[program:xx]中的xx

  5. 重啟所有程序或所有程序
    supervisorctl restart all // 重啟所有
    supervisorctl reatart program-name // 重啟某一程序,program-name為[program:xx]中的xx

  6. 檢視supervisord當前管理的所有程序的狀態
    supervisorctl status

  7. 更新新的配置到supervisord
    supervisorctl update

【遇到問題及解決方案】

在使用命令supervisorctl start all啟動控制程序時,遇到如下錯誤

unix:///tmp/supervisor.sock no such file

出現上述錯誤的原因是supervisord並未啟動,只要在命令列中使用命令sudo supervisord啟動supervisord即可。

【遺留問題】

當叢集規模擴大後,登入到每臺主機使用supervior控制程序也是很麻煩的,能不能用一臺主機作為客戶端,同時連線叢集中的所有主機,以一種中 心化的方式統一管理叢集中的所有程序?之前一直使用的方式是使用互動式工具expect。supervisor本身有沒有提供一種機制實現叢集中所有程序 的中央化管理?

目前測試成功的是使用一臺主機作為客戶端(supervisorctl),控制另一臺伺服器(supervisord)主機上的狀態。方法是在服務 器端配置[inet_http_server]部分,開啟TCP埠監聽。客戶端配置[supervisorctl]部分,指定伺服器端的 serverurl,連線伺服器端監聽的埠。但是一個客戶端只能連線一個伺服器,無法指定多個伺服器