supervisor官网:http://www.supervisord.org/
参考链接:
http://blog.youkuaiyun.com/xyang81/article/details/51555473
https://www.cnblogs.com/smail-bao/p/5673434.html
1,介绍
Supervisor是一个进程管理工具,就是有一个进程需要每时每刻不断的运行,但是这个进程又有可能由于各种原因有可能停止运行。当进程停止运行的时候我们希望能自动重新启动,Supervisor就可以帮我们实现。Supervisor是用Python开发的,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。
supervisor的命令主要有:
supervisord : supervisor的服务器端部分,启动supervisor就是运行这个命令
supervisorctl:启动supervisor的命令行窗口。
2.安装
第一种方法:
pip install supervisor
pip的安装
cat pip_an.sh
#!/bin/bash
wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar zxvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py build
python setup.py install
wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa33326"
tar -xzvf pip-1.5.4.tar.gz
cd pip-1.5.4
python setup.py install
第二种
yum install python-setuptools
easy_install supervisor
第三种
wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz
tar zxvf supervisor-3.1.3.tar.gz
cd supervisor
python setup.py install
第四种
easy_install supervisor
yum install -y epel-release
yum install -y python-pip
pip install supervisor
yum install supervisor
3.测试
#测试是否安装成功
echo_supervisord_conf
#创建配置文件
echo_supervisord_conf > /etc/supervisord.conf
4.配置文件讲解
[root@centos-011 ~ 07:50:00]#cat /etc/supervisord.conf.bak
; Sample supervisor config file.
[unix_http_server]
file=/var/run/supervisor/supervisor.sock ; socket 路径
;chmod=0700 ; socket 文件的权限
;chown=nobody:nogroup ; socket 所属用户及组
;username=user ; 用户名
;password=123 ; 密码
;[inet_http_server] ; 是否启用服务,默认是关闭的(启用的话可以看到supervisor 管理的服务状态)
;port=127.0.0.1:9001 ; 监听的IP及端口
;username=user ; 用户名
;password=123 ; 密码
[supervisord] ; supervisord 全局配置
logfile=/var/log/supervisor/supervisord.log ; supervisor 日志路径
logfile_maxbytes=50MB ; 单个日志文件最大数
logfile_backups=10 ; 保留多少个日志文件(默认10个)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; pid 文件路径
nodaemon=false ; 启动是否丢到前台,设置为false ,表示以daemon 的方式启动
minfds=1024 ; 最小文件打开数,对应系统limit.conf 中的nofile ,默认最小为1024,最大为4096
minprocs=200 ; 最小的进程打开数,对应系统的limit.conf 中的nproc,默认为200
;umask=022 ; (process file creation umask;default 022)
;user=chrism ; 启动supervisord 服务的用户,默认为root
;identifier=supervisor ; (supervisord identifier, default is 'supervisor')
;directory=/tmp ; 这里的目录指的是服务的工作目录
;nocleanup=true ; (don't clean up tempfiles at start;default false)
;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)
;environment=KEY=value ; (key value pairs to add to environment)
;strip_ansi=false ; (strip ansi escape codes in logs; def. false)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris