supervisor 重啟_配置supervisor守護python程序
阿新 • • 發佈:2020-12-18
技術標籤:supervisor 重啟
我們在開發python的web服務時,經常會用flask、Django來啟動一個服務,但是在部署服務的時候,例如測試服務,我們需要supervisor這樣的工具來管理服務程序,方面更新程式碼時無感知重啟專案等
簡單的配置程序如下:
安裝supervisor
pip install supervisor
執行 echo_supervisord_conf 檢視是否可以使用,可能存在問題
-bash: echo_supervisord_conf: command not found
會因為安裝的目錄不再PATH,需要把bin目錄新增到PATH
vim ~/.bashrc
export PATH="/home/{user}/.local/bin:$PATH"
source ~/.bashrc
執行建立配置檔案,
echo_supervisord_conf>/etc/supervisord.conf # /etc 目錄
echo_supervisord_conf > supervisord.conf # 如果沒有root許可權,選擇當前專案目錄
這裡我選擇當前目錄,vi supervisord.conf, 這點在沒有root許可權的伺服器上非常好使
修改unix_http_server
修改成 ./tmp/supervisor.sock
[supervisord] logfile=./tmp/supervisord.log ; main log file; default $CWD/supervisord.log logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB logfile_backups=10 ; # of main logfile backups; 0 means none, default 10 loglevel=info ; log level; default info; others: debug,warn,trace pidfile=./tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
後面需要使用 supervisorctl 檢視服務狀態,所以也需要修改supervisorctl的配置
serverurl=unix://./tmp/supervisor.sock ; use a unix:// URL for a unix socket
include 新增
[include]
files = conf.d/*.conf
建立目錄以及檔案
mkdir tmp
touch tmp/supervisord.log
touch tmp/supervisord.pid
touch tmp/supervisor.sock
mkdir conf.d
touch conf.d/app.conf, 並配置該檔案
[program:your_program_name]
command=python3 app.py
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
stdout_logfile=./logs/out.log
stderr_logfile=./logs/err.log
建立logs檔案
mkdir logs
touch logs/out.log
touch logs/err.log
現在啟動服務
supervisord
檢視程序
ps ax|grep supervisor
使用supervisorctl 檢視服務狀態
supervisorctl status
結果類似於這樣
xxx RUNNING pid 810, uptime 0:07:56