supervisor 的安装与使用

学习视频:
https://www.bilibili.com/video/BV1Vi4y147Fm?from=search&seid=8875783979034550201

更多说明:
https://xugaoxiang.com/2019/12/04/supervisor/
https://www.cnblogs.com/Hai--D/p/5820718.html

安装
sudo yum install -y supervisor

开机启动
sudo systemctl enable supervisord

启动
sudo systemctl start supervisord

查看启动
ps -ef | grep supervisor

2、 配置Supervisor

a.创建文件夹和配置文件

mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf

b.修改/etc/supervisor/supervisord.conf文件内容

在文件结尾[include]节点处

;files = relative/directory/*.ini

改为files = conf.d/*.conf

c.执行supervisorctl reload 命令使配置文件生效。

d.在/etc/supervisor/下创建conf.d文件夹,及ProjectName.conf(以项目名称命名的)

e.打开ProjectName.conf文件,添加内容如下:

[program: ProjectName]
command=dotnet ProjectName.dll ; 运行程序的命令
directory=/root/Publishing/PublishOutput/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
autostart=true ; 是否自动启动
stderr_logfile=/var/log/ProjectName.err.log ; 错误日志文件
stdout_logfile=/var/log/ProjectName.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=1 ; 自动重启间隔

以我的项目为例

[program:power]
process_name=power
user=root
command=nohup /home/work/go/src/linkbook.com/power >> access.log 2>&1 & ; 运行程序的命令    
directory=/home/work/go/src/linkbook.com/power ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启 
autostart=true ; 是否自动启动
stderr_logfile=/var/log/power_err.log ; 错误日志文件      
stdout_logfile=/var/log/power_out.log ; 输出日志文件
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=1 ; 自动重启间隔

保存并退出

3、 运行supervisord,查看是否生效,执行以下命令:

supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep ProjectName

4:web界面操作

需要在supervisor的配置文件里添加[inet_http_server]选项组:之后可以通过http://10.211.55.11:9001来访问控制子线程的管理。

[inet_http_server]
port=10.211.55.11:9001
username=user
password=123

效果:

5:子进程管理(supervisorctl)

  1. 查看所有子进程的状态:

supervisorctl status

blog RUNNING pid 2395, uptime 0:08:41
zhoujy RUNNING pid 2396, uptime 0:08:41

2)关闭、开启指定的子进程:

supervisorctl stop zhoujy

zhoujy: stopped

supervisorctl start zhoujy

zhoujy: started

3)关闭、开启所有的子进程:

supervisorctl stop all

blog: stopped
zhoujy: stopped

supervisorctl start all

blog: started
zhoujy: started

4):其他参数:supervisor开启后子进程自动开启(autostart=true)和子进程退出后自动启动(autorestart=ture)

更多的参数可以看官方文档和supervisor(一)基础篇的说明。
总结:

  我们需要的功能在上面介绍的supervisor的基本功能中已经实现,supervisor还有其他的一些功能:如进程组、web页面管理子进程、监控子线程情况等等,更多的信息可以去官网上查看。
原文地址:https://www.cnblogs.com/haima/p/13035510.html