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
关注:微信公众号,一起学习成长!