Supervisor 的安装与使用
什么是Supervisor?
Supervisor 是用 Python 实现的一款Linux/Unix系统下的一个进程管理工具,不支持Windows系统,它可以很容易监听、启动、停止、重启一个或多个进程,而且它管理的程序是非 daemon 程序;如果用Supervisor管理进程,当进程被杀死后,Supervisor监听到进程死后,会自动将被杀死的进程自动启动,进程就可以自动恢复了,不需要自己写shell脚本来控制。简单来说,就是用来管理进程的。
1、如果你没有安装过 EPEL,则请先安装 EPEL
yum install epel-release
EPEL 也就是 EPEL源,安装完成之后你就可以直接使用yum来安装额外的软件包,有部分软件,是需要安装这个包之后,才能更方便快捷地进行安装的。如果已安装过,则可以跳过,否则,如果直接安装Supervisor,则可能会出现下面的错误提示:
2、如何安装Supervisor ?
yum install -y supervisor #安装 EPEL 后,这个脚本进行supervisor的安装
这个过程,需要一些时间,输出的信息也比较多,我就只截取一部分
![](https://img2022.cnblogs.com/blog/2111889/202202/2111889-20220223100300922-1987652175.png)
3、验证是否安装成功
完成安装后,可以通过 查看版本号验证是否安装成功:
supervisord --version
4、配置
正常情况下,在 /etc/下,会有一个名称为 supervisord.conf 的配置文件,通过下面脚本,可以打开配置文件,进行一些必要的编辑:
vim /etc/supervisord.conf
比较常修改的配置项有:logfile ( 日志存储 ) 和 files ( 需要守护的进程配置信息 目录 ),这里我只修改 file 的配置项:
files = /etc/supervisor/conf.d/*.conf
然后通过 按 Esc 键 输入 :wq ,然后回车,就可以保存配置,并退出了。
因为我们上面配置的路径中,/etc/supervisor/conf.d/ 这个目录,是不存在的,那么我们就要通过脚本创建相应的目录
mkdir /etc/supervisor mkdir /etc/supervisor/conf.d
这一个配置目录,大家可以根据自己的情况配置,上面的配置完成后,supervisor 就可以读取配置目录下的 所有 扩展名为 .conf 的配置文件了。
5、常用命令
1 supervisorctl status # 查看守护进程的远行状态,如果配置的目录下没有配置,则不显示信息 2 supervisorctl stop all # 停止所的守护进程 3 supervisorctl stop name # 停止名称为 name 的守护进程 4 supervisorctl reload # 重新加载所有进程,一般是修改配置后执行 5 supervisorctl start name # 启动名称为 name 的守护进程 6 supervisorctl restart name # 重新启动名称为 name 的守护进程 7 supervisorctl update #根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
6、配置示例
在确认 supervisor 可以正确启动后,接下来,我们可以创建一个守护进程的配置文件
vim /etc/supervisor/conf.d/website.conf # 守护进程配置
配置内容,可参考下面 .net core 站点的配置
1 [program:website] 2 command=dotnet website.dll ; # 运行程序的命令 3 directory= /var/www/app/website; 对应的你的项目的存放目录 4 autorestart=true ; # 程序意外退出是否自动重启 5 stderr_logfile=/var/log/www/website/website.err.log ; # 错误日志文件 6 stdout_logfile=/var/log/www/website/website.out.log ; # 输出日志文件 7 environment=ASPNETCORE_ENVIRONMENT=Production ; # 进程环境变量 8 user=root ; # 进程执行的用户身份 9 stopsignal=INT
[program:website] 这个website 名称是会在 输入 supervisorctl 相关命令中显示的名称,同时这个名称不可重复使用。
实现环境:Centos 7.9.2009