学习视频:
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)
- 查看所有子进程的状态:
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页面管理子进程、监控子线程情况等等,更多的信息可以去官网上查看。