supervisor安裝及配置——管理守護進程的福利

CentOS7以上直接使用yum安裝便可正常使用小配文件配置supervisor程序
並能夠多進程方式啓動本身的進守護進程
但CentOS6系統使用yum安裝的supervisor不支持使用小配置文件和多進程
因此要想在CentOS6系統上的正常使用supervisor管理本身的守護進程
就須要使用python安裝器進行安裝,具體步驟參考以下

 
1,安裝python安裝器
yum install -y python-setuptools
 
2,使用python安裝器安裝supervisor
easy_install supervisor
 
3,查看supervisor版本
supervisord --version
 
4,生成supervisor默認配置文件
echo_supervisord_conf > /etc/supervisord.conf
 
5,有效配置內容參考以下
 
[unix_http_server]
file=/tmp/supervisor.sock //若是修改爲其它目錄,須要確認進程的屬主對其目錄有寫權限
[supervisord]
logfile=/data/log/supervisor/supervisord.log //修改爲自定義的日誌目錄,須要確認進程的屬主對其目錄有寫權限
logfile_maxbytes=50MB
logfile_backups=10
loglevel=info
pidfile=/tmp/supervisord.pid //若是修改爲其它目錄,須要確認進程的屬主對其目錄有寫權限
nodaemon=false
minfds=1024
minprocs=200
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock //若是file選項有作過修改,此處須要對應
[include] //默認狀態小配文件沒有打開,須要自動取消註釋
files = supervisord.d/*.conf //此處的官方建議使用相對路徑(相對於/etc目錄)
 
6,生成服務啓動腳本以便使用service命令進行管理
vim /etc/rc.d/init.d/supervisord
 
#!/bin/bash
 python

chkconfig: - 55 45
description: supervisor service
processname: supervisord
config: /etc/supervisord.conf
pidfile: /var/run/supervisord.pid

 
. /etc/init.d/functions
 
DAEMON=/usr/bin/supervisord
PIDFILE=/var/run/supervisord.pid
 
[ -x "$DAEMON" ] || exit 0
 
start() {
echo -n "Starting supervisord: "
if [ -f $PIDFILE ]; then
PID=cat $PIDFILE
echo supervisord already running: $PID
exit 2;
else
daemon $DAEMON --pidfile=$PIDFILE -c /etc/supervisord.conf
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord
return $RETVAL
fivim

}
 
stop() {
echo -n "Shutting down supervisord: "
echo
killproc -p $PIDFILE supervisord
echo
rm -f /var/lock/subsys/supervisord
return 0
}bash

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status supervisord
;;
restart)
stop
start
;;
*)
echo "Usage: {start|stop|status|restart}"ide

  • exit 1;;esacexit $? 七、給腳本添加執行權限chmod +x /etc/rc.d/init.d/supervisord 8,將上面生成的啓動腳本添加進CentOS服務管理器chkconfig --add supervisord 九、將supervisor服務設成自啓動chkconfig supervisord on 十、添加本身須要守護的進程的小配文件vim /etc/supervisord.d/self.conf 具體格式參考官方給出的默認版本,也即以下這一部分;[program:theprogramname];command=/bin/cat ; the program (relative uses PATH, can take args);processname=%(programname)s ; processname expr (default %(programname)s);numprocs=1 ; number of processes copies to start (def 1);directory=/tmp ; directory to cwd to before exec (def no cwd);umask=022 ; umask for process (default None);priority=999 ; the relative start priority (default 999);autostart=true ; start at supervisord start (default: true);startsecs=1 ; # of secs prog must stay up to be running (def. 1);startretries=3 ; max # of serial start failures when starting (default 3);autorestart=unexpected ; when to restart if exited after running (def: unexpected);exitcodes=0,2 ; 'expected' exit codes used with autorestart (default 0,2);stopsignal=QUIT ; signal used to kill process (default TERM);stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10);stopasgroup=false ; send stop signal to the UNIX process group (default false);killasgroup=false ; SIGKILL the UNIX process group (def false);user=chrism ; setuid to this UNIX account to run the program;redirectstderr=true ; redirect proc stderr to stdout (default false);stdoutlogfile=/a/path ; stdout log path, NONE for none; default AUTO;stdoutlogfilemaxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stdoutlogfilebackups=10 ; # of stdout logfile backups (0 means none, default 10);stdoutcapturemaxbytes=1MB ; number of bytes in 'capturemode' (default 0);stdouteventsenabled=false ; emit events on stdout writes (default false);stderrlogfile=/a/path ; stderr log path, NONE for none; default AUTO;stderrlogfilemaxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stderrlogfilebackups=10 ; # of stderr logfile backups (0 means none, default 10);stderrcapturemaxbytes=1MB ; number of bytes in 'capturemode' (default 0);stderreventsenabled=false ; emit events on stderr writes (default false);environment=A="1",B="2" ; process environment additions (def no adds);serverurl=AUTO ; override serverurl computation (childutils) ; The sample eventlistener section below shows all possible eventlistener; subsection values. Create one or more 'real' eventlistener: sections to be; able to handle event notifications sent by supervisord. ;[eventlistener:theeventlistenername];command=/bin/eventlistener ; the program (relative uses PATH, can take args);processname=%(programname)s ; processname expr (default %(programname)s);numprocs=1 ; number of processes copies to start (def 1);events=EVENT ; event notif. types to subscribe to (req'd);buffersize=10 ; event buffer queue size (default 10);directory=/tmp ; directory to cwd to before exec (def no cwd);umask=022 ; umask for process (default None);priority=-1 ; the relative start priority (default -1);autostart=true ; start at supervisord start (default: true);startsecs=1 ; # of secs prog must stay up to be running (def. 1);startretries=3 ; max # of serial start failures when starting (default 3);autorestart=unexpected ; autorestart if exited after running (def: unexpected);exitcodes=0,2 ; 'expected' exit codes used with autorestart (default 0,2);stopsignal=QUIT ; signal used to kill process (default TERM);stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10);stopasgroup=false ; send stop signal to the UNIX process group (default false);killasgroup=false ; SIGKILL the UNIX process group (def false);user=chrism ; setuid to this UNIX account to run the program;redirectstderr=false ; redirectstderr=true is not allowed for eventlisteners;stdoutlogfile=/a/path ; stdout log path, NONE for none; default AUTO;stdoutlogfilemaxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stdoutlogfilebackups=10 ; # of stdout logfile backups (0 means none, default 10);stdouteventsenabled=false ; emit events on stdout writes (default false);stderrlogfile=/a/path ; stderr log path, NONE for none; default AUTO;stderrlogfilemaxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stderrlogfilebackups=10 ; # of stderr logfile backups (0 means none, default 10);stderreventsenabled=false ; emit events on stderr writes (default false);environment=A="1",B="2" ; process environment additions;serverurl=AUTO ; override serverurl computation (childutils) 在這裏給出一個本身在用的簡化實例[program:jumpserver]command =source /opt/py3/bin/activate && /data/jumpserver/jms start all -dprocessname = %(programname)s%(processnum)snumprocs = 1autostart= trueautorestart= truestdoutlogfile=/data/log/jumpserver/jumpserver.log 十一、一切準備好以後就能夠啓動supervisord服務瞭如上配置的話,supervisord進程啓動後,其所管理的子進程也會自動被啓動 至此爲此,一個簡單的supervisor安裝加配置基本上搞定了想使用supervisor官理本身的守護進程的同仁們能夠大膽開工了!*
相關文章
相關標籤/搜索