1.安裝 supervisord pip install supervisor
若是提示pip 不存在狀況 python
wget https://bootstrap.pypa.io/get-pip.py python get-pip.py
2.配置supervisord 以及啓動mysql
mkdir -p /data/etc/supervisor/confs cd /data/etc/supervisor/
在此配置supersord.conf 文件用來啓動supervisord控制程序。sql
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主程序配置完成( 啓動前刪除 # 和中文說明)。使用bootstrap
supervisord -c /data/etc/supervisor/supervisord.conf
命令就能夠啓動supervisordapp
3.添加非 daemon程序
進入 supervisord.conf 中配置的 files 目錄 /dada/etc/supervisor/confs dom
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啓動的例子ide
[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
配置好了須要啓動的進程以後,能夠使用如下命令 ui
supervisorctl update 加載supervisord 子程序 supervisorctl start mysql 使用supervisord 啓動mysql supervisorctl status 查看supervisord 啓動程序狀態 supervisorctl stop mysql 中止mysql