1. Supervisor介绍
Supervisor是用一个基于Python的通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启,让程序跟随开机启动。只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。我们可以把一个开发完成的普通程序(比如SpringBoot开发的jar文件)轻松转换成后台运行的程序。
2. Supervisor安装
以CentOS7为例
#安装epel yum -y install epel-release #安装supervisor yum -y install supervisor #开机自启动 systemctl enable supervisord #启动supervisord服务 (supervisord -c /etc/supervisord.conf systemctl start supervisord
后续运维的操作
# 查看supervisord服务状态 systemctl status supervisord # 查看是否存在supervisord进程 ps -ef|grep supervisord #查看进程中的任务 supervisorctl -c /etc/supervisord.conf
3. Supervisor的配置
我们以新建一个SpringBoot生成的jar文件 app1.jar为例,假设给这个程序起名为app1(在supervisor中起个名字方便管理)
在/etc/supervisord.d/
下新建app1.ini文件,vi /etc/supervisord.d/app1.ini
配置如下
[program:app1] ;;java运行使用到的参数自行调整,如果修改了这些命令,需要使用supervisorctl reload来使其生效 command=java -Xms2048M -Xmx4096M -Dconf.home="/opt/app1/" -Dlog4j.configuration="file:/opt/app1/log4j.properties" -jar /opt/app1/app1.jar --spring.config.location=/opt/app1/ ;; 以下为可选参数 ;;directory=/opt/bin ;;autostart=true ;;autorestart=false ;;stderr_logfile=/tmp/test_stderr.log ;;stdout_logfile=/tmp/test_stdout.log ;;user = test
4. 后续运维操作(supervisorctl)
#以下例子的app1就是/etc/supervisord.d/app1.ini 里的[program:app1]的app这个进程 #重新加载配置文件 supervisorctl reload #停止某一个进程 supervisorctl stop app1 #启动某个进程 supervisorctl start app1 #重启某个进程 supervisorctl restart app1 #查看进程状态 supervisorctl status app1 #停止全部进程 start、restart、stop 都不会载入最新的配置文件 supervisorctl stop all #载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程 supervisorctl reload #根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。 supervisorctl update #也可以先输入supervisorctl,进入交互命名后,直接输入status、restart app1等等命令
更多信息可查看官网 http://supervisord.org
文章评论