下载安装
#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