http://www.linuxidc.com/Linux/2012-11/73832.htm (有改動(dòng))
參考:
http://blog.csdn.net/frank_good/article/details/43446687
http://blog.csdn.net/fanhenghui/article/details/51745517
1. Supervisor是一個(gè)C/S系統(tǒng),它可以在類unix操作系統(tǒng)讓用戶來監(jiān)視和控制后臺(tái)服務(wù)進(jìn)程的數(shù)量,一個(gè)很重要的功能就是監(jiān)控服務(wù)器的主要后臺(tái)進(jìn)程,并在出現(xiàn)問題是自動(dòng)重啟。
2. 根據(jù)服務(wù)器上的python版本下載對(duì)應(yīng)的setuptools
[root@test1 ~]# python -V
Python 2.7.5
wget https://pypi.Python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg --no-check-certificate
chmod +x setuptools-0.6c11-py2.7.egg
sh setuptools-0.6c11-py2.7.egg
直接安裝
sh setuptools-0.6c11-py2.7.egg
3. 下載并安裝supervisor
wget http://pypi.python.org/packages/source/s/supervisor/supervisor-3.0a8.tar.gz
tar -zxvf supervisor-3.0a8.tar.gz
cd supervisor-3.0a8
python setup.py install
安裝setuptools后也可以
easy_install supervisor
4. 設(shè)定supervisor配置文件
創(chuàng)建默認(rèn)的配置文件
echo_supervisord_conf >/etc/supervisord.conf (echo_supervisord_conf 命令行工具和supervisor在同一個(gè)路徑下)
vi /etc/supervisord.conf
取消以下的注釋,并修改IP為0.0.0.0
[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))
增加自定義的后臺(tái)進(jìn)程(注意進(jìn)程名之間用一個(gè):分隔)
[program:hello]
command=python /root/hello.py
priority=1
numprocs=1
autostart=true
autorestart=true
startretries=10
stopsignal=KILL
stopwaitsecs=10
redirect_stderr=true
stdout_logfile=/root/hello.log
5. 設(shè)定supervisor啟動(dòng)文件
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