1. 程式人生 > 其它 >supervisor 重啟_配置supervisor守護python程序

supervisor 重啟_配置supervisor守護python程序

技術標籤: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

ca61f91ad9df666bd643bd16b1066cd8.png

修改成 ./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