安裝
如果服務(wù)器上有pip
空厌,則直接運行命令pip install supervisor
安裝宠哄,如果沒有,則需要下載安裝文件房交,之后運行命令python setup.py install
安裝。
以上都需要能連接到互聯(lián)網(wǎng)崖堤。
配置
安裝完成之后,執(zhí)行命令echo_supervisord_conf > /etc/supervisord.conf
即可生成默認配置文件淹办,如果沒有root
權(quán)限,也可以把配置文件保存在用戶自己的目錄下糜烹,運行supervisord
時使用-c
參數(shù)指定配置文件路徑即可。
supervisor
啟動時如果沒有使用-c
參數(shù)比肄,則會自動在當(dāng)前目錄下查找配置文件搪花。
示例如下:
supervisord -c supervisord.conf
運行
這里會使用到一個名稱為BINDIR
的目錄倚聚,和系統(tǒng)中python的安裝目錄相關(guān)。比如粗卜,安裝python
時通過./configure --prefix=/usr/local/py; make; make install
命令续扔,則BINDIR
就是/usr/local/py/bin
识脆。你也可通過查看setup.py install
命令的輸出來確認在你的系統(tǒng)中這個目錄具體是什么悉稠。
運行$BINDIR/supervisord
就可以啟動了猫牡。它會自動進入后臺進程,關(guān)閉當(dāng)前終端也不會退出拨拓。默認會在當(dāng)前目錄下生成一個日志文件($CWD/supervisor.log
)。
在啟動時自動運行
如果你是通過安裝包來安裝的氓栈,supervisord
就已安裝到系統(tǒng)服務(wù)里了渣磷。
這里有很多用戶提供的適用于多種操作系統(tǒng)的腳本。
這里還有一些有用的問答授瘦。
配置文件
配置文件的詳細說明醋界,可以看官網(wǎng),這里只給出基本說明提完。
如果在啟動supervisord
時沒有通過-c
參數(shù)提供配置文件的路徑形纺,supervisord
會通過以下順序去查找名為supervisord.conf
的配置文件。
1. $CWD/supervisord.conf
2. $CWD/etc/supervisord.conf
3. /etc/supervisord.conf
4. /etc/supervisor/supervisord.conf
(since Supervisor 3.3.0)
5. ../etc/supervisord.conf
(Relative to the executable)
6. ../supervisord.conf
(Relative to the executable)
文件格式
supervisord.conf
使用Windows的ini配置文件格式氯葬。
環(huán)境變量
可以在配置文件中使用環(huán)境變量挡篓,使用python
的字符串表達式語法%(ENV_X)s
,示例如下:
[program:example]
command=/usr/bin/example --loglevel=%(ENV_LOGLEVEL)s
在上面的例子中%(ENV_LOGLEVEL)s
會被替換成環(huán)境變量LOGLEVEL
的值。
注意:這個特性只在3.2版本及更高版本中支持官研,之前的版本只能部分支持秽澳,需要查看對應(yīng)版本的文檔。
配置塊
[supervisord]
[supervisord]
配置塊是全局配置戏羽。
配置項 | 必須 | 說明 | 默認值 |
---|---|---|---|
logfile | 否 | 日志文件路徑 | $CWD/supervisord.log |
logfile_maxbytes | 否 | 日志文件最大大小(后綴可以是KB 担神、MB 、GB ) 始花,設(shè)置成0表示不限制 |
50MB |
logfile_backups | 否 | 日志文件備份數(shù)量妄讯,設(shè)置為0表示不備份 | 10 |
loglevel | 否 | 日志級別,可設(shè)置為critical , error , warn , info , debug , trace , 或 blather 之一酷宵,設(shè)置為debug 級別時亥贸,會記錄下子進程的`stderr/stdout輸出,這對調(diào)試有問題的進程很有用 |
info |
user | 否 | 以user 用戶的身份執(zhí)行操作浇垦,切換用戶身份失敗時不會運行程序炕置,必須是以root 用戶身份啟動supervisord
|
無 |
environment | 否 | 設(shè)置supervisord 及其子進程運行時的環(huán)境變量,格式KEY="val",KEY2="val2"
|
無 |
示例:
[supervisord]
logfile = /tmp/supervisord.log
logfile_maxbytes = 50MB
logfile_backups=10
loglevel = info
pidfile = /tmp/supervisord.pid
nodaemon = false
minfds = 1024
minprocs = 200
umask = 022
user = chrism
identifier = supervisor
directory = /tmp
nocleanup = true
childlogdir = /tmp
strip_ansi = false
environment = KEY1="value1",KEY2="value2"
[program:x]配置塊
配置文件中必須包含至少一個program
配置塊男韧,supervisord
通過這個配置塊知道要啟動和管理的進程信息朴摊。冒號后面的x
表示要啟動的程序的名稱,比如[program:foo]
表示一個名稱為foo
的程序此虑。這個名稱會在supervisorctl
或網(wǎng)頁管理界面中顯示甚纲,名稱當(dāng)中不能包含冒號和括號等特殊字符。
配置項 | 必須 | 說明 | 默認值 |
---|---|---|---|
command | 是 | 要執(zhí)行的命令朦前,示例:/path/to/program/name -p "foo bar"
|
無 |
startsecs | 否 | 程序啟動后需要保持在運行狀態(tài)的時長(單位:秒)介杆。注意:即使程序運行正常退出了,如果不到設(shè)置的時長韭寸,也會被認為是啟動失敗 这溅。 | 1 |
startretries | 否 | 嘗試啟動次數(shù),超過設(shè)置的次數(shù)后棒仍,程序會被標(biāo)記為FATAL 狀態(tài) |
3 |
autorestart | 否 | 當(dāng)處于RUNNING 狀態(tài)的程序退出后悲靴,supervisord 是否自動重啟之∧洌可選值:false , unexpected 或 true 癞尚。false 表示不重啟,unexpected 表示當(dāng)程序非正常退出時重啟乱陡,true 表示總是重啟浇揩。 |
unexpected |
exitcodes | 否 | 表示程序正常退出的退出碼 | 0 |
user | 否 | 以user 用戶的身份執(zhí)行操作,切換用戶身份失敗時不會運行程序憨颠,必須是以root 用戶身份啟動supervisord
|
無 |
示例:
[program:cat]
command=/bin/cat
process_name=%(program_name)s
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=unexpected
startsecs=10
startretries=3
exitcodes=0
stopsignal=TERM
stopwaitsecs=10
stopasgroup=false
killasgroup=false
user=chrism
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
environment=A="1",B="2"
serverurl=AUTO
[include]配置塊
[include]配置塊表示要包含的外部配置文件胳徽,
配置項 | 必須 | 說明 | 默認值 |
---|---|---|---|
files | 是 | 空格分隔的路徑积锅,可以包含* ? 通配符,可以是絕對路徑或相對路徑 |
無 |
示例:
[include]
files = /an/absolute/filename.conf /an/absolute/*.conf foo.conf config??.conf