最开始使用 nohup + gunicorn 来管理项目的,现在想试下 supervisor

官方文档

  http://supervisord.org/

1. 在你的系统里安装

  apt install supervisor

这个时候会在你的系统中配置文件:
/etc/supervisor/supervisord.conf # 主配置
/etc/supervisor/conf.d # 子进程配置

2. 在你的python环境中安装

  pip install supervisor

3. 常用命令

supervisorctl status        //查看所有进程的状态
supervisorctl stop es       //停止es
supervisorctl start es      //启动es
supervisorctl restart       //重启es
supervisorctl update        //配置文件修改后使用该命令加载新的配置
supervisorctl reload        //重新启动配置中的所有程序

注意: 我第一步执行supervisorctl status, 报错

pkg_resources.DistributionNotFound: The 'supervisor==3.3.1' distribution was not found and is required by the application

然后我修改, /user/bin/supervisorctl 和 /user/bin/supervisorctl 中对supervisor的版本引用,修改成和python一样版本的。

4. 配置子进程

在/etc/supervisor/conf.d 中创建 test.conf
内容

[program:app]  # 进程名字为 app
command=bash /var/lib/jenkins/workspace/ceshi/run.sh  # 项目启动命令
directory=/var/lib/jenkins/workspace/ceshi  # 工作空间
autostart=true  # supervisor启动的时候是否随着同时启动,默认True
autorestart=true # 程序是否自动启动, 
redirect_stderr=true # #把stderr重定向到stdout
stderr_logfile=/var/log/blog_stderr.log 
stdout_logfile=/var/log/blog_stdout.log # 错误日志

5.启动

  • 重启 supervisor , supervisorctl reload
  • 启动进程, supervisorctl start app
  • 查看状态, supervisorctl status

参考: https://www.jianshu.com/p/0b9054b33db3