supervisor
1.yum安装supervisor
yum install -y epel-release
yum install -y supervisor
安装后会生成一个主配置文件/etc/supervisor.conf
,与一个应用配置文件目录/etc/supervisor.d/
2.添加启用脚本,启动服务,添加开机启动
vim /usr/lib/systemd/system/supervisor.service
[Unit]
Description=Process Monitoring and Control Daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
重新载入systemctl daemon-reload
启动服务systemctl start suoervisor
添加开机启动systemctl enable supervisor
3.管理应用的配置
在/etc/supervisor.d/
下新建配置文件XXX.ini
[program:XXX]
directory = /root/lazy ; 程序的启动目录
command = /usr/local/jdk1.8.0_181/bin/java -jar XXX.jar ; 启动命令,与命令行启动的命令是一样的
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = root ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /etc/supervisord.d/log/confd.log ;日志统一放在log目录下
; 可以通过 environment 来添加需要的环境变量
; environment=JAVA_HOME=/usr/local/jdk1.8.0_181/bin ;配置了不生效原因未知所以上面启动用绝对路径
环境变量问题,程序只能读取系统环境变量,但是手动配置java环境变量不生效,原因未知
4.supervisorctl常用命令
supervisorctl status # 查看进程状态
supervisorctl start XXX # 启动某个进程XXX,XXX为[program:XXX]里配置的值 (stop,restart) 注:start、restart、stop 都不会载入最新的配置文件
supervisorctl stop all # 停止全部进程
supervisorctl reload # 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl update # 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
5.supervisord常用命令
supervisord -h # 帮助
supervisord -t # 测试配置文件
supervisord -c /etc/supervisord.conf # 命令启动应用
6.supervisor控制台
在/etc/supervisord.conf
中修改[inet_http_server]
的参数,具体如下:
[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; ip_address:port specifier, *:port for all iface
username=root ; default is no username (open server)
password=xxxx ; default is no password (open server)
修改后重启supervisor进程systemctl restart supervisor
,在浏览器访问 http://<host-ip>:9001
。记得开防火墙哦