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)
- 查看所有子进程的状态:
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页面管理子进程、监控子线程情况等等,更多的信息可以去官网上查看。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构