为什么要用supervisor

1.减少敲命令的时间成本
2.进程守护,应用被杀掉后自动重启
3.方便日志跟踪、在线查看应用状态、在线重启应用等

与jenkins并不冲突,互补

  • 依旧可以使用jenkins进行部署
  • 对于应用重启,不再需要执行整个重构步骤,也不需要开发人员登录服务器敲命令,减少操作成本

安装

  1. # epel源
  2. yum install -y epel-release
  3. # 安装supervisor
  4. yum install -y supervisor
  5. # 开机自启动
  6. systemctl enable supervisord
  7. # 启动supervisord服务
  8. systemctl start supervisord
  9. Bash

生成配置

  1. 1、创建文件夹夹
  2. cd /data && mkdir supervisor && cd supervisor && mkdir tmp && mkdir conf.d
  3. 2、修改主配置文件
  4. /etc/supervisord.conf

修改配置(可直接复制覆盖/etc/supervisord.conf),如果发生端口冲突,修改第2行和第27行端口号

  1. [inet_http_server] ; inet (TCP) server disabled by default
  2. port=*:9001 ; ip_address:port specifier, *:port for all iface
  3. username=admin ; default is no username (open server)
  4. password=admin ; default is no password (open server)
  5. [supervisord]
  6. logfile=/data/supervisor/tmp/supervisord.log ; main log file; default $CWD/supervisord.log
  7. logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB
  8. logfile_backups=10 ; # of main logfile backups; 0 means none, default 10
  9. loglevel=info ; log level; default info; others: debug,warn,trace
  10. pidfile=/data/supervisor/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
  11. nodaemon=false ; start in foreground if true; default false
  12. minfds=1024 ; min. avail startup file descriptors; default 1024
  13. minprocs=200 ; min. avail process descriptors;default 200
  14. [rpcinterface:supervisor]
  15. supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  16. [supervisorctl]
  17. serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
  18. username=admin ; should be same as in [*_http_server] if set
  19. password=admin ; should be same as in [*_http_server] if set
  20. [include]
  21. files = /data/supervisor/conf.d/*.conf

编写应用:/data/supervisor/conf.d/应用名.conf,示例:

  1. ; 网关
  2. [program:cloud-gateway-10000] ; 应用名称
  3. command=java -Xms256m -Xmx256m -jar cec-gateway.jar --spring.profiles.active=test ; 被监控的进程命令
  4. directory=/data/cloud/server/cec-gateway ; 目录
  5. priority=1 ; 数字越高,优先级越高
  6. numprocs=1 ; 启动几个进程
  7. autostart=true ; 随着supervisord的启动而启动
  8. autorestart=true ; 自动重启
  9. startretries=10 ; 启动失败时的最多重试次数
  10. exitcodes=0 ; 正常退出代码
  11. stopsignal=KILL ; 用来杀死进程的信号
  12. stopwaitsecs=10 ; 发送SIGKILL前的等待时间
  13. redirect_stderr=true ; 重定向stderrstdout

相关命令

  1. systemctl stop supervisord
  2. systemctl start supervisord
  3. systemctl status supervisord
  4. systemctl restart supervisord
  5. #更新配置
  6. supervisorctl update
  7. #启动应用
  8. supervisorctl start [应用名]
  9. #关闭应用
  10. supervisorctl stop [应用名]
  11. #重启应用
  12. supervisorctl restart [应用名]
  13. #监听应用输出
  14. supervisorctl tail -f [应用名]

管理页面:http://[host]:9001/

Linux-supervisor - 图1