Supervisor的使用

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。记得开防火墙哦

https://blog.csdn.net/huwh_/article/details/80497790

posted @ 2020-10-28 14:42  左岸丶  阅读(258)  评论(0编辑  收藏  举报