1.什麼是supervisor
supervisor是用python寫的乙個程序管理工具,用來啟動,重啟,關閉程序。
2.supervisor的安裝
pip install supervisor3.supervisor的配置檔案
supervisor安裝完畢後,會有乙個配置檔案supervisord.conf
執行
echo_supervisord_conf命令,可輸出檔案詳細
我們使用重定向運算子將配置檔案定向到/etc路徑下(方便管理)
echo_supervisord_conf>/etc/supervisord.conf4.配置檔案詳解
file=/tmp/supervisor.sock ; unix socket 檔案,supervisorctl 會使用
;chmod=0700 ; socket 檔案的 mode,預設是 0700;chown=nobody:nogroup ; socket 檔案的 owner,格式: uid:gid
;[inet_http_server] ; http 伺服器,提供 web 管理介面
;port=127.0.0.1:9001; web 管理後台執行的 ip 和埠,如果開放到公網,需要注意安全性
;username=user ; 登入管理後台的使用者名稱
;password=123; 登入管理後台的密碼
[supervisord]
logfile=/tmp/supervisord.log ; 日誌檔案,預設是 $cwd/supervisord.log
logfile_maxbytes=50mb ; 日誌檔案大小,超出會 rotate,預設 50mb
logfile_backups=10 ; 日誌檔案保留備份數量預設 10loglevel=info ; 日誌級別,預設 info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 檔案
nodaemon=false ; 是否在前台啟動,預設是 false,即以 daemon 的方式啟動
minfds=1024 ; 可以開啟的檔案描述符的最小值,預設 1024minprocs=200 ; 可以開啟的程序數的最小值,預設 200; the below section must remain
in the config file for
rpc; (supervisorctl/web inte***ce) to work, additional inte***ces may be
; added by defining them
inseparate rpcinte***ce: sections
[rpcinte***ce:supervisor]
supervisor.rpcinte***ce_factory =supervisor.rpcinte***ce:make_main_rpcinte***ce
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通過 unix socket 連線 supervisord,路徑與 unix_http_server 部分的 file 一致
;serverurl= 通過 http 的方式連線 supervisord
; 包含其他的配置檔案
[include]
files = relative/directory/*.ini ; 可以是 *.conf 或 *.ini
5.程序program配置
[program:usercenter]將程序配置新增到supervisord.conf檔案中directory = /home/leon/projects/usercenter ; 程式的啟動目錄
autostart =true ; 在 supervisord 啟動的時候也自動啟動
startsecs = 5 ; 啟動 5秒後沒有異常退出,就當作已經正常啟動了
autorestart =true ; 程式異常退出後自動重啟
startretries = 3 ; 啟動失敗自動重試次數,預設是 3user =leon ; 用哪個使用者啟動
redirect_stderr =true ; 把 stderr 重定向到 stdout,預設 false
stdout_logfile_maxbytes =20mb ; stdout 日誌檔案大小,預設 50mb
stdout_logfile_backups = 20; stdout 日誌檔案備份數
; stdout 日誌檔案,需要注意當指定目錄不存在時無法正常啟動,所以需要手動建立目錄(supervisord 會自動建立日誌檔案)
stdout_logfile = /data/logs/usercenter_stdout.log
; 可以通過 environment 來新增需要的環境變數,一種常見的用法是修改 pythonpath
; environment=pythonpath=$pythonpath:/path/to/somewhere
推薦將各個程序配置放到單獨的檔案中,然後通過[include]配置項引用
[include]6.supervisor服務啟動files = /etc/supervisor/*.conf
執行命令
supervisord -c /etc/supervisord.conf啟動服務
若服務已啟動會報以下錯誤:
查詢服務程序,kill,重新執行
7.supervisor服務客戶端管理
可以使用supervisord的命令列客戶端管理工具supervisorctl,來管理程序。
$ supervisorctl status8.supervisor web管理介面$ supervisorctl stop usercenter
$ supervisorctl start usercenter
$ supervisorctl restart usercenter
$ supervisorctl reread
$ supervisorctl update
;[inet_http_server] ; http 伺服器,提供 web 管理介面在瀏覽器中輸入可進入web管理介面;port=127.0.0.1:9001; web 管理後台執行的 ip 和埠,如果開放到公網,需要注意安全性
;username=user ; 登入管理後台的使用者名稱
;password=123 ; 登入管理後台的密碼
supervisor 使用詳解
簡介 supervisor是用python開發的乙個client server服務,是linux unix系統下的乙個程序管理工具。可以很方便的監聽 啟動 停止 重啟乙個或多個程序。用supervisor管理的程序,當乙個程序意外被殺死,supervisor監聽到程序死後,會自動將它重啟,很方便的做...
supervisor 使用詳解
簡介 supervisor是用python開發的乙個client server服務,是linux unix系統下的乙個程序管理工具。可以很方便的監聽 啟動 停止 重啟乙個或多個程序。用supervisor管理的程序,當乙個程序意外被殺死,supervisor監聽到程序死後,會自動將它重啟,很方便的做...
supervisor 使用詳解
簡介 supervisor是用python開發的乙個client server服務,是linux unix系統下的乙個程序管理工具。可以很方便的監聽 啟動 停止 重啟乙個或多個程序。用supervisor管理的程序,當乙個程序意外被殺死,supervisor監聽到程序死後,會自動將它重啟,很方便的做...