supervisor使用詳解

2021-08-04 21:34:22 字數 3357 閱讀 6693

1.什麼是supervisor

supervisor是用python寫的乙個程序管理工具,用來啟動,重啟,關閉程序。

2.supervisor的安裝

pip install supervisor
3.supervisor的配置檔案

supervisor安裝完畢後,會有乙個配置檔案supervisord.conf

執行

echo_supervisord_conf
命令,可輸出檔案詳細

我們使用重定向運算子將配置檔案定向到/etc路徑下(方便管理)

echo_supervisord_conf>/etc/supervisord.conf
4.配置檔案詳解

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]

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

將程序配置新增到supervisord.conf檔案中

推薦將各個程序配置放到單獨的檔案中,然後通過[include]配置項引用

[include]

files = /etc/supervisor/*.conf

6.supervisor服務啟動

執行命令

supervisord -c /etc/supervisord.conf
啟動服務

若服務已啟動會報以下錯誤:

查詢服務程序,kill,重新執行

7.supervisor服務客戶端管理

可以使用supervisord的命令列客戶端管理工具supervisorctl,來管理程序。

$ supervisorctl status

$ supervisorctl stop usercenter

$ supervisorctl start usercenter

$ supervisorctl restart usercenter

$ supervisorctl reread

$ supervisorctl update

8.supervisor web管理介面

;[inet_http_server] ; http 伺服器,提供 web 管理介面

;port=127.0.0.1:9001; web 管理後台執行的 ip 和埠,如果開放到公網,需要注意安全性

;username=user ; 登入管理後台的使用者名稱

;password=123 ; 登入管理後台的密碼

在瀏覽器中輸入可進入web管理介面

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監聽到程序死後,會自動將它重啟,很方便的做...