天天看点

Centos6.7 Supervisor进程配置管理

下载安装

#wget http://pypi.python.org/packages/source/s/supervisor/supervisor-3.0b1.tar.gz
 #tar -zxvf supervisor-3.0b1.tar.gz 
 #cd supervisor-3.0b1
 #python setup.py install
 #echo_supervisord_conf > /etc/supervisord.conf
           

写启动文件

vi  /etc/init.d/supervisord 
写下面内容================================================
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PROGNAME=supervisord
DAEMON=/usr/bin/$PROGNAME
CONFIG=/etc/$PROGNAME.conf
PIDFILE=/tmp/$PROGNAME.pid
DESC="supervisord daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
start()
{
        echo -n "Starting $DESC: $PROGNAME"
        $DAEMON -c $CONFIG
        echo "..."
}
stop()
{
        echo -n "Stopping $DESC: $PROGNAME"
        supervisor_pid=$(cat $PIDFILE)
        kill -15 $supervisor_pid
        echo "..."
}
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
        exit 1
        ;;
esac
exit 0

------------------------------------------------------------------------------
#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/tmp/$prog.pid"

#JAVA_HOME="/usr/local/java"
#export PATH=$JAVA_HOME/bin:$PATH
JAVA_HOME=`which java`
JAVA_HOME=${JAVA_HOME//"/bin/java"}
export PATH=$JAVA_HOME/bin:$PATH

start()
{
        echo -n $"Starting $prog: "
        daemon $prog_bin --pidfile $PIDFILE
        [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
        echo
}

stop()
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/tmp/$prog.pid"

#JAVA_HOME="/usr/local/java"
#export PATH=$JAVA_HOME/bin:$PATH
JAVA_HOME=`which java`
JAVA_HOME=${JAVA_HOME//"/bin/java"}
export PATH=$JAVA_HOME/bin:$PATH

start()
{
        echo -n $"Starting $prog: "
        daemon $prog_bin --pidfile $PIDFILE
        [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
        echo
}

stop()
{
        echo -n $"Shutting down $prog: "
        [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
        echo
}

case "$1" in

  start)
    start
  ;;

  stop)
    stop
  ;;

  status)
        status $prog
  ;;

  restart)
    stop
    start
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status}"
  ;;

esac


           

加权限

chmod -R 777 /etc/init.d/supervisord 
           

修改配置文件 添加进程(红色字体)

=====内容省略

; The below sample program section shows all possible program subsection values,

; create one or more 'real' program: sections to be able to control them under

; supervisor.

<span style="color:#FF0000;">[program:pmapp]

command=python /var/www/manage.py runserver 0:8000

autorestart=true

stdout_logfile=/tmp/out.log

stderr_logfile=/tmp/err.log

</span>

;[program:theprogramname]

;command=/bin/cat              ; the program (relative uses PATH, can take args)

;process_name=%(program_name)s ; process_name expr (default %(program_name)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                ; star

=====内容省略

重起服务

[[email protected] ~]# service supervisord restart
Stopping supervisord daemon: supervisord...
Starting supervisord daemon: supervisord...
           

检查是否成功

[[email protected] ~]# netstat -antp |grep 8000
tcp        0      0 0.0.0.0:8000                0.0.0.0:*                   LISTEN      10207/python      
           

开启WEB管理

vi /etc/supervisord.conf 把红色注释去掉

=====内容省略

[unix_http_server]

file=/tmp/supervisor.sock   ; (the path to the socket file)

;chmod=0700                 ; socket file mode (default 0700)

;chown=nobody:nogroup       ; socket file uid:gid owner

;username=user              ; (default is no username (open server))

;password=123               ; (default is no password (open server))

<span style="color:#FF0000;">[inet_http_server]         ; inet (TCP) server disabled by default

port=0.0.0.0:9001        ; (ip_address:port specifier, *:port for all iface)

username=user              ; (default is no username (open server))

password=123               ; (default is no password (open server))</span>

[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           ; (num of main logfile rotation backups;default 10)

loglevel=info                ; (

=====内容省略

-------------------------------------------------------------------------------------------------------------------------------------

[unix_http_server]

file = /tmp/supervisor.sock

chmod = 0777

[supervisord]

minfds = 1024

minprocs = 200

loglevel = info

logfile = /usr/local/logs/supervisord.log

logfile_maxbytes = 50MB

nodaemon = false

pidfile = /tmp/supervisord.pid

logfile_backups = 10

[supervisorctl]

serverurl = unix:///tmp/supervisor.sock

[rpcinterface:supervisor]

supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[program:xxxload]

redirect_stderr = true

command = /usr/local/UploadClient/xxxload

autostart = false

directory = /usr/local/UploadClient

autorstart = true

stdout_logfile = /usr/local/logs/VideoUpload_std.log

[program:zzz]

redirect_stderr = true

command = /usr/java/jdk1.7.0_75/bin/java -Dpython.home=lib -Dred5.root=/usr/local/DMS -Dlogback.ContextSelector=org.red5.logging.LoggingntextSelector -cp /usr/local/DMS/boot.jar:/usr/local/DMS/conf -Dcatalina.useNaming=true org.red5.server.Bootstrap

autostart = false

directory = /usr/local/ZZZ

autorstart = true

stdout_logfile = /usr/local/logs/ZZZ_std.log

[program:WebServer]

redirect_stderr = true

command = /usr/java/jdk1.7.0_75/bin/java -jar /usr/local/zzz/WebSocket.jar

autostart = false

directory = /usr/local/zzz

autorstart = true

stdout_logfile = /usr/local/logs/WebServer.log

[inet_http_server]

username = admin

password = 123456

port = 0.0.0.0:9001

重起服务

[[email protected] ~]# service supervisord restart
Stopping supervisord daemon: supervisord...
Starting supervisord daemon: supervisord...
           

是否启动成功

[[email protected] ~]# netstat -antp |grep 9001
tcp        0      0 127.0.0.1:9001              0.0.0.0:*                   LISTEN      10311/python