在supervisord初體驗篇我們已經把supervisord搭建起來了,也瞭解了一些基本的使用方法
【supervisord初體驗傳送門】
下面我們就開始配置一個實際使用的實例程序
supervisord常用的一些參數配置
參數 | 作用 | 示例 |
---|---|---|
process_name | 程序的名字 | testSupervisord |
user | 程序啓動的用戶,默認是root | root |
directory | 程序啓動的目錄 | /home/leon/projects/usercenter |
command | 程序啓動的命令 | python3 test.py |
startsecs | 啓動 5 秒後沒有異常退出,就當作已經正常啓動了 | 5 |
startretries | 啓動失敗時候重試次數,默認3次 | 3 |
autorestart | 程序異常退出後自動重啓 | true |
autostart | 在supervisord啓動的時候一起啓動 | true |
redirect_stderr | 把 stderr 重定向到 stdout,默認 false | true |
stdout_logfile_maxbytes | stdout 日誌文件大小,默認 50MB | 50MB |
stdout_logfile_backups | stdout 日誌文件備份數,默認10 | 2 |
stderr_logfile | 錯誤日誌輸出路徑 | /var/log/supervisor/progress.err.log |
stdout_logfile | 正常日誌輸出路徑 | /var/log/supervisor/progress.out.log |
numprocs | 啓動的守護進程數量 | 3 |
priority | 守護進程的優先級 | 999 |
umask | 進程的權限 | 002 |
environment | 添加環境變量 | environment=PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3 |
注意!
1. 當你的numprocs大於1時
process_name表達式要寫成:%(program_name)s_%(process_num)02d
2. Python環境設置
python的import機制,python中的模塊site負責模塊導入路徑的添加
(Append module search paths for third-party packages to sys.path)
查看其main方法,其中有一個addusersitepackages
的動作,是導入當前用戶的module search paths
。進一步查看源碼,是通過get_config_var('userbase')
獲取~/.local(sysconfig.py line 205)
,而~
代表就是環境變量當前用戶。
所以我們可以通過添加HOME環境變量來讓python正確的找到模塊導入路徑。
使用supervisor出現ModuleNotFoundError錯誤時是因爲sys.path未加載所需模塊所在的路徑,可以通過設置environment
來指明所需模塊的路徑。
使用PYTHONPATH指明:
environment=PYTHONPATH=/home/user/.local/lib/python3.6/site-packages
對於指定用戶安裝的python模塊(pip install XXX --user 安裝用戶),也可以通過指定HOME來讓python找到模塊所在的路徑:
environment=HOME=/home/user
實例
下面是官方給出的一個實例
[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
參考文獻:
supervisord官方手冊:http://supervisord.org/index.html
supervisor環境變量:https://blog.csdn.net/hunter_yang_Tuziki/article/details/86675121