1、supervisor进程管理服务组成
supervisor主要包括一下四个核心部分组成:
- supervisord:
这是supervisor服务的主要管理器,运行supervisor时会启动一个进程supervisord,它负责启动所管理的进程;
并将所管理的进程做为自己的子进程来启动。而且可以在所管理的进程出现崩溃时自动重启。
- supervisorctl:
这是supervisor服务的客户端命令行工具,可以用来执行stop、start、restart等命令,来对这些子进程进行管理。
- web Server:
这是supervisor服务的网页可视化界面,可以通过web界面查看和控制进程状态,简化了对操作命令的学习;
- xml-rpc interface:
服务与web ui的同一个http服务器,提供一个xml-rpc接口,可以用来询问和控制管理程序及其它运行的程序;
2、进程管理服务配置信息
主进程配置文件:/etc/supervisord.conf
子进程配置文件:/etc/supervisord.d
3、主进程配置文件解析
配置区域 | 配置信息 | 解释说明 |
---|---|---|
[unix_http_server] | file=/var/run/supervisor/supervisor.sock | socket套接字,用于客户端于服务器建立本地连接 |
chmod=0700 | socket文件权限设置,默认是0700 | |
chown=user:group | socket文件属主与属组信息设定uid:gid | |
[inet_http_server] | port=127.0.0.1:9001 | web管理后台运行的ip和端口 |
username=user | 登录后台管理的用户名 | |
password=123 | 登录后台管理的密码 | |
supervisord | logfile=/tmp/supervisord.log | 服务运行的日志文件 |
logfile_maxbytes=50MB | 日志文件大小,超出会rotate,默认50MB,如果设成0,表示不限制大小 | |
logfile_backups=10 | 日志文件保留备份数默认10,设置0表示不备份 | |
loglevel=info | 日志级别,默认是INFO,其它:debug,warn,trace | |
pidfile=/tmp/supervisord.pid | pid文件 | |
nodaemon=false | 是否在前台启动,默认是false,即以daemon的方式启动 | |
minfds=1024 | 可以打开文件描述符的最小值,默认1024 | |
minprocs=200 | 可以打开进程的最小值,默认200 | |
supervisorctl | serverurl=unix:///tmp/supervisor.sock | 通过unix socket连接supervisord,路径与unix_http_server部分的file一致 |
serverurl=http://127.0.0.1:9001 | 通过http的方式连接supervisord | |
[program:xx] | 是被管理的进程配置参数,xx是进程的名称 | |
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run | 程序启动命令 | |
autostart=true | 在supervisord启动的时候也自动启动 | |
startsecs=10 | 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒 | |
autorestart=ture | 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启 | |
startretries=3 | 启动失败自动重试次数,默认是3 | |
user=tomcat | 用哪个用户启动进程,默认是root | |
priority=999 | j进程启动优先级,默认999,值小的优先启动 | |
redirect_stderr=true | 把stderr重定向到stdout,默认false | |
stdout_logfile_maxbytes=20MB | stdout日志文件大小,默认是50MB | |
stdout_logfile_backups=20 | stdout日志文件备份数,默认是10 | |
stdout_logfile=/opt/apache-tomcat=8.0.35/logs/catalina.out | stdout日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord会自动创建日志文件) | |
stopasgroup=false | 默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程 | |
killasgroup=false | 默认为false,向进程组发送kill信号,包括子进程 | |
[include] | iles=relative/directory/*.ini | 可以指定一个或多个以.ini结束的配置文件 |
4、子进程配置文件模板说明
#项目名
[program:tomcat]
#脚本目录
directory=/opt/bin
#脚本执行命令
command=/usr/bin/python -u /opt/bin/test.py -g 'daemon off;'(后台方式运行)
#supervisor启动的时候是否随着同时启动,默认True
autostart=true
#当程序exit的时候,这个program不会自动重启,默认unexpected,设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的时候
autorestart=false
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了,默认是1
startsecs=1
#脚本运行的用户身份
user=liwei
#日志输出
stderr_logfile=/tmp/blog_stderr.log
stdout_logfile=/tmp/blog_stdout.log
#把stderr重定向到stdout,默认false
redirect_stderr=true
#stdout日志文件大小,默认50MB
stdout_logfile_maxbytes=20MB
#stdout日志文件备份数
stdout_logfile_backuos=20
5、进程管理服务启动应用
使用supervisor进程管理命令之前需要先启动supervisord,启动方法如下:
#利用命令启动服务程序
supervisord -c /etc/supervisord.conf
#利用systemd管理启动服务
systemctl start supervisord.service
--启动supervisor并加载默认配置文件
systemctl enable supervisord.service
--将supervisor加入开机自启动项
#确认服务是否启动
ps-ef | grep supervisor
supervisorctl status
--执行以上命令信息,输出信息为空,表示没有配置项目信息,但服务部署过程基本完成
之前b站看的视频做的笔记,具体哪个视频忘记了,欢迎补充。