使用supervisor管理springboot项目

一、服务器配置介绍

1、系统:centos7

2、JDK:java8

二、安装supervisor

本文使用yum方式,其他系统可自行查询合适的安装工具

yum install supervisor

 

三、supervisor配置文件

1、supervisor配置文件在 /etc/superviosr/目录下,其中supervisord.conf为总配置文件,服务配置可放在conf.d目录下,命名为*.conf

使用supervisor管理springboot项目_第1张图片

使用supervisor管理springboot项目_第2张图片

2、本文中springboot服务名称为“demo”,jar包为“demo.jra”,目录为/root/projects/demo

服务配置如下:注意,这里面注释符号为;  而不是常用的#,否则启动会出错

[program:demo]
directory=/root/projects/demo ; 程序的启动目录
command=java -jar demo.jar ; 启动命令
autostart=true     ; 在 supervisord 启动的时候也自动启动
startsecs=30        ; 启动 30 秒后没有异常退出,就当作已经正常启动了
autorestart=true   ; 程序异常退出后自动重启
startretries=3     ; 启动失败自动重试次数,默认是 3
user=root          ; 用哪个用户启动
redirect_stderr=true  ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes=100MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups=2     ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录
stdout_logfile=/root/projects/demo/nohup.out ;应用日志目录

四、supervisor使用

1、首先启动supervisor

supervisord -c /etc/supervisor/supervisord.conf

2、因为设置了随supervisor启动而启动,所以此时项目已经启动了,使用命令查看进程

3、本地访问服务成功

使用supervisor管理springboot项目_第3张图片

五、supervisor其他命令

systemctl start supervisord.service     //启动supervisor并加载默认配置文件
systemctl enable supervisord.service    //将supervisor加入开机启动项
supervisorctl status        //查看所有进程的状态
supervisorctl stop es       //停止es
supervisorctl start es      //启动es
supervisorctl restart       //重启es
supervisorctl update        //配置文件修改后使用该命令加载新的配置
supervisorctl reload        //重新启动配置中的所有程序

六、supervisor终端操作

可以使用supervisorctl命令进入终端,然后以上命令可以省去supervisorctl

使用supervisor管理springboot项目_第4张图片

七、可能会遇到的问题

1、error: , [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224

这种一般是未启动supervisord服务导致,使用启动命令即可
 

supervisord -c /etc/supervisor/supervisord.conf

2、Error: not a valid boolean value: 'true     # \xe5\x9c\xa8 supervisord \xe5\x90\xaf\xe5\x8a\xa8\xe7\x9a\x84\xe6\x97\xb6\xe5\x80\x99\xe4\xb9\x9f\xe8\x87\xaa\xe5\x8a\xa8\xe5\x90\xaf\xe5\x8a\xa8' in section 'program:demo' (file: '/etc/supervisor/conf.d/demo.conf')For help, use /usr/bin/supervisord -h

这种一般就是上面注意事项说到的,注释符号的问题了,解决办法就是使用; 来注释。

八、说明

1、本文在操作时supervisorctl需要在/etc/supervisor/目录下操作,否则会找不到服务/进程。可能有全局的设置,但是此时没有进行操作,以后扩展的话再补充此文。

2、操作时参考了一篇博客:https://www.jianshu.com/p/0b9054b33db3  写的更为详细。

你可能感兴趣的:(linux,linux,运维)