Supervisor使用教程
在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式是:
$ nohup php swoole.php &
在项目中,经常有脚本需要常驻运行的需求。或者Go为例,最简单的方式是:
$ nohup ./casdoor &
这样能保证当前终端被关闭或者按CRTL+C后,脚本仍在后台运行。但是没法保证脚本异常后自动重启等。
Supervisor 是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。
本文所用环境:
- 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
下使用。
我使用的环境:
$ python -V
Python 2.6.6
安装supervisor
Linux安装命令:
$ sudo yum install supervisor
判断是否安装成功:
$ supervisord --version
显示版本号,即表示安装成功。
本文测试的时候是使用Linux的yum安装的(其它方式未做测试)
安装后配置文件生成:
1、在centos7.9版本通过yum安装后,需要运行
$ systemctl start supervisord
2、使用yum
安装后,supervisor的主配置文件在:
/etc/supervisord.conf
supervisor的配置文件在最后一行引入,子进程配置文件在:
/etc/supervisord.d/*.ini
这样就可以支持子配置文件,而不用改动主配置文件。
加入系统守护进行
1、进入supervisor的配置目录
cd /etc/supervisord.d
如果没有该文件夹进行创建
2、配置守护进程 创建casdoor.ini文件,并配置。
[program:casdoor]
directory = 你的程序目录
command =你的程序执行命令
autostart = true
autorestart=true
user = 启动该程序的用户
redirect_stderr = true
stdout_logfile = 日志地址
go程序配置示例:
[program:casdoor]
directory = /root/go/sso.golangblogs.com
command =/root/go/sso.golangblogs.com/casdoor
autostart = true
autorestart=true
user = root
redirect_stderr = true
stdout_logfile = /var/log/supervisor/casdoor.log
配置完成之后,重启supervisor
systemctl restart supervisord #重启方式一
supervisorctl reload#重启方式二
最后记得配置开机自启
sudo systemctl enable supervisord
至此就是实现了supervisor进行常驻内存了