supervisord 管理非daemon啓動方式軟件

1.安裝 supervisord
pip install supervisor
如果提示pip 不存在情況

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

2.配置supervisord 以及啓動

mkdir  -p  /data/etc/supervisor/confs
cd /data/etc/supervisor/

在此配置supersord.conf 文件用來啓動supervisord控制程序。

cat /data/etc/supervisor/supervisord.conf

[unix_http_server]
file = /var/run/supervisord.sock
chmod = 0777
chown= root:root     ; 設置sock用戶 如果想普通用戶能訪問則需要設置爲普通用戶

[inet_http_server]        
port=127.0.0.1:9001     

[supervisorctl]
serverurl = unix:///var/run/supervisord.sock

[supervisord]
logfile = /data/logs/supervisor/supervisord.log   ;supervisord 運行日誌
logfile_maxbytes = 50MB
logfile_backups = 20
loglevel = info
pidfile = /tmp/supervisor.pid
nodaemon = false
minfds = 1024
minprocs = 200
user = root             ;啓動supervisord 用戶
childlogdir = /data/logs/supervisor/   ;設置主日誌文件位置

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[include]
files = /data/etc/supervisor/confs/*.conf   ;讀取用戶配置文件位置

到此supervisord主程序配置完成( 啓動前刪除 # 和中文說明)。使用

supervisord -c /data/etc/supervisor/supervisord.conf 

命令就可以啓動supervisord

3.添加非 daemon程序
進入 supervisord.conf 中配置的 files 目錄 /dada/etc/supervisor/confs

cd /data/etc/supervisor/confs 
cat  first.conf 

[program:tg_robot]
environment=PYTHONPATH="/data/app/tg_robot/src:$PYTHONPATH"
directory=/data/app/tg_robot/src/
command=/home/yunsm/.local/bin/gunicorn -c gunicorn_app.py app:app
autostart=true              ; start at supervisord start (default: true)
autorestart=true            ; retstart at unexpected quit (default: true)
startsecs=10                ; number of secs prog must stay running (def. 10)
startretries=3              ; max # of serial start failures (default 3)
user=yunsm     ; setuid to this UNIX account to run the program
redirect_stderr=true
stdout_logfile=/data/logs/supervisor/tg_robot.log    ; child log path, use NONE for none; default AUTO
stdout_logfile_maxbytes=20MB        ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=20          ; # of logfile backups (default 10)
stopasgroup=true
killasgroup=true

還有一些類似mysql的特殊程序,supervisor 只能管關閉supervisor啓動的子進程,類似mysql這樣自己啓動的子進程的程序就需要使用上 pidproxy 和pid文件文件了。下面舉個mysql啓動的例子

[program:mysql]
command=/usr/local/python27/bin/pidproxy /usr/local/mysql/var/localhost.localdomain.pid /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var
autostart=true              ; start at supervisord start (default: true)
autorestart=true            ; retstart at unexpected quit (default: true)
startsecs=10                ; number of secs prog must stay running (def. 10)
startretries=3              ; max # of serial start failures (default 3)
user=root     ; setuid to this UNIX account to run the program
redirect_stderr=true
stdout_logfile=/data/logs/supervisor/mysql.log    ; child log path, use NONE for none; default AUTO
stdout_logfile_maxbytes=20MB        ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=20          ; # of logfile backups (default 10)
stopasgroup=true
killasgroup=true

配置好了需要啓動的進程之後,可以使用以下命令

supervisorctl update     加載supervisord 子程序
supervisorctl start mysql   使用supervisord 啓動mysql
supervisorctl status    查看supervisord 啓動程序狀態
supervisorctl stop mysql   停止mysql
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章