Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警
supervisor的安装有多种方式
配置好yum源后,可以直接安装
| 1 | yum install supervisor | 
Debian/Ubuntu可通过apt安装
| 1 | apt-get install supervisor | 
pip安装
| 1 | pip install supervisor | 
easy_install安装
| 1 | easy_install | 
这几种安装方式都需要在线联网。但大部分的生产环境都是离线环境,是封闭的网络没有办法在线安装。
这里整理了Supervisor的离线安装包和安装脚本,可以进行离线安装并能指定安装目录。
一、整理Supervisor安装需要的工具和依赖包
包括有:
setuptools
elementtree
meld3
supervisor
二、编写离线安装脚本
整体思路:依次解压并安装Supervisor所需要的工具和依赖包,将Supervisor的配置文件的默认安装目录路径替换成制定的目录路径
| 1 | vi install_supervisor.sh | 
| 1 | 
 | 
安装脚本中默认的安装路径是/app/supervisor,可以根据实际情况进行调整。
另外整理了一个run_supervisor.sh的脚本,在安装以后根据安装目录来生成这个启动脚本。
| 1 | 
 | 
三、将所有的安装包脚本等打成离线安装包
| 1 | tar -czvf supervisor_install_pack.tar.gz supervisor | 
已打好的离线安装包下载 https://545c.com/file/21165215-443895501
城通网盘下载   https://545c.com/file/21165215-443895501
CSDN下载 https://download.csdn.net/download/fullbug/12434225
四、离线安装包使用
下载离线安包,解压
| 1 | tar -zxvf supervisor_install_pack.tar.gz | 
解压后看到supervisor的目录,在supervisor的目录中找到install_supervisor.sh的脚本
执行install_supervisor.sh的脚本,默认安装/app/supervisor下,可以带参数指定安装目录。也可以修改install_supervisor.sh脚本自定义默认的安装路径。
执行完安装脚本,就可以在/app/supervisor目录下看到有相应的启动脚本、配置文件目录、日志目录及临时文件目录。
执行run_supervisor.sh就可以启动supervisor
| 1 | ./run_supervisor.sh | 
五、验证和使用supervisor
ps -ef|grep supervisor 查看supervisor是否已经启动

通过web界面的9001看web界面控制台http://127.0.0.1:9001

- supervisord 
 运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
 supervisord -v 查看supervisor版本号
- supervisorctl 
 是命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。
 supervisor是所有进程的父进程,管理着启动的子进展,supervisor以子进程的PID来管理子进程,当子进程异常退出时supervisor可以收到相应的信号量。
supervisor常用管理命令
supervisorctl restart < application name> ;重启指定应用
supervisorctl stop < application name> ;停止指定应用
supervisorctl start < application name> ;启动指定应用
supervisorctl restart all ;重启所有应用
supervisorctl stop all ;停止所有应用
supervisorctl start all ;启动所有应用
六、配置文件说明
supervisor.conf配置文件
| 1 | [unix_http_server] | 
子进程配置文件
需要给托管的子进程配置相应的配置文件,每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起。目录及文件后缀可以在
supervisor.conf配置文件中进行自定义。见supervisor.conf的
| 1 | [include] | 
logstash.ini 样例说明:
| 1 | #项目名 | 
作者博客:http://xiejava.ishareread.com
 
 
关注:微信公众号,一起学习成长!