Supervisor使用教程

在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式是:

  1. $ nohup php swoole.php &

在项目中,经常有脚本需要常驻运行的需求。或者Go为例,最简单的方式是:

  1. $ nohup ./casdoor &

这样能保证当前终端被关闭或者按CRTL+C后,脚本仍在后台运行。但是没法保证脚本异常后自动重启等。

Supervisor 是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

官网介绍:http://supervisord.org/

本文所用环境:

  • CentOS release 7.9
  • Python 2.7.5
  • pip 7.1.0 from /usr/lib/python2.6/site-packages (python 2.6)
  • supervisor 3.4.0

平台要求


引自官网(http://supervisord.org/introduction.html#platform-requirements):

Supervisor已经过测试,可以在Linux(Ubuntu 9.10),Mac OS X(10.4 / 10.5 / 10.6)和Solaris(10 for Intel)和FreeBSD 6.1上运行。它可能在大多数UNIX系统上都能正常工作。在任何版本的Windows下,Supervisor 都不会运行。Supervisor 可以使用Python 2.4或更高版本,但不能在任何版本的Python 3下使用。

我使用的环境:

  1. $ python -V
  2. Python 2.6.6

安装supervisor

Linux安装命令:

  1. $ sudo yum install supervisor

判断是否安装成功:

  1. $ supervisord --version

显示版本号,即表示安装成功。

本文测试的时候是使用Linux的yum安装的(其它方式未做测试)

安装后配置文件生成:

1、在centos7.9版本通过yum安装后,需要运行

  1. $ systemctl start supervisord

2、使用yum安装后,supervisor的主配置文件在:

  1. /etc/supervisord.conf

supervisor的配置文件在最后一行引入,子进程配置文件在:

  1. /etc/supervisord.d/*.ini

这样就可以支持子配置文件,而不用改动主配置文件。

加入系统守护进行

1、进入supervisor的配置目录

  1. cd /etc/supervisord.d

如果没有该文件夹进行创建

2、配置守护进程 创建casdoor.ini文件,并配置。

  1. [program:casdoor]
  2. directory = 你的程序目录
  3. command =你的程序执行命令
  4. autostart = true
  5. autorestart=true
  6. user = 启动该程序的用户
  7. redirect_stderr = true
  8. stdout_logfile = 日志地址

go程序配置示例:

  1. [program:casdoor]
  2. directory = /root/go/sso.golangblogs.com
  3. command =/root/go/sso.golangblogs.com/casdoor
  4. autostart = true
  5. autorestart=true
  6. user = root
  7. redirect_stderr = true
  8. stdout_logfile = /var/log/supervisor/casdoor.log

配置完成之后,重启supervisor

  1. systemctl restart supervisord #重启方式一
  2. supervisorctl reload#重启方式二

最后记得配置开机自启

  1. sudo systemctl enable supervisord

至此就是实现了supervisor进行常驻内存了

Linux下Supervisor使用教程 ,守护进程启动 - 图1