为什么要用supervisor
1.减少敲命令的时间成本
2.进程守护,应用被杀掉后自动重启
3.方便日志跟踪、在线查看应用状态、在线重启应用等
与jenkins并不冲突,互补
- 依旧可以使用jenkins进行部署
- 对于应用重启,不再需要执行整个重构步骤,也不需要开发人员登录服务器敲命令,减少操作成本
安装
# epel源yum install -y epel-release# 安装supervisoryum install -y supervisor# 开机自启动systemctl enable supervisord# 启动supervisord服务systemctl start supervisordBash
生成配置
1、创建文件夹夹cd /data && mkdir supervisor && cd supervisor && mkdir tmp && mkdir conf.d2、修改主配置文件/etc/supervisord.conf
修改配置(可直接复制覆盖/etc/supervisord.conf),如果发生端口冲突,修改第2行和第27行端口号
[inet_http_server] ; inet (TCP) server disabled by defaultport=*:9001 ; ip_address:port specifier, *:port for all ifaceusername=admin ; default is no username (open server)password=admin ; default is no password (open server)[supervisord]logfile=/data/supervisor/tmp/supervisord.log ; main log file; default $CWD/supervisord.loglogfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MBlogfile_backups=10 ; # of main logfile backups; 0 means none, default 10loglevel=info ; log level; default info; others: debug,warn,tracepidfile=/data/supervisor/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pidnodaemon=false ; start in foreground if true; default falseminfds=1024 ; min. avail startup file descriptors; default 1024minprocs=200 ; min. avail process descriptors;default 200[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[supervisorctl]serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socketusername=admin ; should be same as in [*_http_server] if setpassword=admin ; should be same as in [*_http_server] if set[include]files = /data/supervisor/conf.d/*.conf
编写应用:/data/supervisor/conf.d/应用名.conf,示例:
; 网关[program:cloud-gateway-10000] ; 应用名称command=java -Xms256m -Xmx256m -jar cec-gateway.jar --spring.profiles.active=test ; 被监控的进程命令directory=/data/cloud/server/cec-gateway ; 目录priority=1 ; 数字越高,优先级越高numprocs=1 ; 启动几个进程autostart=true ; 随着supervisord的启动而启动autorestart=true ; 自动重启startretries=10 ; 启动失败时的最多重试次数exitcodes=0 ; 正常退出代码stopsignal=KILL ; 用来杀死进程的信号stopwaitsecs=10 ; 发送SIGKILL前的等待时间redirect_stderr=true ; 重定向stderr到stdout
相关命令
systemctl stop supervisordsystemctl start supervisordsystemctl status supervisordsystemctl restart supervisord#更新配置supervisorctl update#启动应用supervisorctl start [应用名]#关闭应用supervisorctl stop [应用名]#重启应用supervisorctl restart [应用名]#监听应用输出supervisorctl tail -f [应用名]
管理页面:http://[host]:9001/

