Supervisor服务自启动
介绍
supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。可以很方便的监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
安装
centos
yum install epel-release yum install -y supervisor systemctl enable supervisord # 开机自启动 systemctl start supervisord # 启动supervisord服务 systemctl status supervisord # 查看supervisord服务状态
配置
默认配置文件的目录:
/etc/supervisord.conf #主配置文件 /etc/supervisord.d/ #单服务配置文件的目录
主配置文件需要的改动(supervisord.conf):
[include] files = supervisord.d/*.conf #默认是ini,可以修改为conf
主配置文件其它地方一般默认就好,若有特殊的需求可以问我或者自行百度。
单个服务的配置文件:
每个需要supervisor进行管理的服务最好单独配置在/etc/supervisord.d目录下,介绍如下:
[program:x]:配置文件必须包括至少一个program,x是program名称,必须写上,不能为空
- command:包含一个命令,当这个program启动时执行
- directory:执行子进程时supervisord暂时切换到该目录
- user:账户名
- startsecs:进程从STARING状态转换到RUNNING状态program所需要保持运行的时间(单位:秒)
- redirect_stderr:如果是true,则进程的stderr输出被发送回其stdout文件描述符上的supervisord
- stdout_logfifile:将进程stdout输出到指定文件
- stdout_logfifile_maxbytes:stdout_logfifile指定日志文件最大字节数,默认为50MB,可以加KB、MB或GB等单位
- stdout_logfifile_backups:要保存的stdout_logfifile备份的数量
特别说明:supervisor不能够管理后台运行的服务,所以有些服务如果需要supervisor进行管理的话,特殊配置一下。Tomcat的常用启动命令在linux中就会默认后台运行,所以用它举例(参照本地机器):
1. 在/etc/supervisord.d/目录下新建cat.conf文件。
[program:tomcat] #tomcat中catalina.sh所在位置 加上 run command=/root/task/apache-tomcat-7.0.68/bin/catalina.sh run #jdk安装目录 environment=JAVA_HOME="/usr/lib/jvm/java-8-oracle",JAVA_BIN="/usr/lib/jvm/java-8- oracle/bin" #执行时切换到tomcat所在目录 directory=/root/task/apache-tomcat-7.0.68 #执行的用户 user=root autostart = true autorestart=true redirect_stderr=true
2. systemctl status supervisord重启服务。
3. 通过supervisord启动tomcat.
supervisorctl start tomcat
介绍一下supervisorctl命令
supervisorctl 是 supervisord的命令行客户端工具
- supervisorctl status:查看所有进程的状态
- supervisorctl stop tomcat
- supervisorctl start tomcat
- supervisorctl restart tomcat
- supervisorctl update
- supervisorctl reload
注意事项:
- 前面说过,后台进程supervisor管不到,类似ES -d,Tomcat (startup)之类的启动命令默认是后台命令,需要特殊处理,不然的话服务应该会不断的重启。
- supervisord 服务启动一个就好,不要启动多个。
- 通过supervisord管理的服务需要通过supervisro 启动。
- 重新部署项目的时候需要停掉supervisord服务,不然服务会一直重启(默认三次)。
下一篇:frappe项目安装过程