.Net Core Linux部署之进程守护 Supervisor 安装配置
1.Supervisor 安装
1 2 3 4 | //安装easy_install yum install python-setuptools //安装Supervisor easy_install supervisor |
2.配置 Supervisor
1 2 3 4 5 6 7 8 9 10 | //创建配置文件 mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf //指定配置文件 supervisord -c /etc/supervisor/supervisord.conf //打开配置文件 vim /etc/supervisor/supervisord.conf //在最后增加配置 [include] files=conf.d/*.conf |
3.程序进程配置
1 2 3 4 | //创建配置文件目录 mkdir /etc/supervisor/conf.d/ //新建配置文件 vim /etc/supervisor/conf.d/testdotnetcore.conf |
testdotnetcore.conf文件中写入以下内容:
1 2 3 4 5 6 7 8 9 10 11 | [program:testdotnetcore] command=dotnet TestDotNetCore.dll directory=/www/test/ environment=ASPNETCORE__ENVIRONMENT=Production user=root stopsignal=INT autostart= true autorestart= true startsecs=1 stderr_logfile=/ var /log/testdotnetcore.err.log stdout_logfile=/ var /log/testdotnetcore. out .log |
说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [program:testdotnetcore] //要执行的命令 command=dotnet TestDotNetCore.dll //命令执行的目录 directory=/www/test/ //环境变量 environment=ASPNETCORE__ENVIRONMENT=Production //进程执行的用户身份 user=root stopsignal=INT //是否自动启动 autostart= true //是否自动重启 autorestart= true //自动重启间隔 startsecs=1 //标准错误日志 stderr_logfile=/ var /log/testdotnetcore.err.log //标准输出日志 stdout_logfile=/ var /log/testdotnetcore. out .log |
保存退出,并执行:
1 2 | //重新加载配置 supervisorctl reload |
到此程序应该已经启动。
4.设置开机启动
1 2 | //打开文件 vim /lib/systemd/system/supervisord.service |
文件中写入以下命令:
1 2 3 4 5 6 7 8 9 10 11 12 | [Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart= on -failure RestartSec=42s [Install] WantedBy=multi-user.target |
说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | [Unit] //服务描述 Description=Supervisor daemon //描述服务类别 After=rc-local.service [Service] //设置进程的启动类型, 必须设为 simple, forking, oneshot, dbus, notify, idle 之一 //如果设为 forking , 那么表示 ExecStart= 进程将会在启动过程中使用 fork() 系统调用 Type=forking //ExecStart 启动命令 ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf //ExecStop 停止命令 ExecStop=/usr/bin/supervisorctl shutdown //ExecReload 重启命令 ExecReload=/usr/bin/supervisorctl reload //设置在单元停止时,杀死进程的方法。 取值范围如下: control-group, process, mixed, none //process 表示仅杀死主进程 KillMode=process //当服务进程正常退出、异常退出、被杀死、超时的时候, 是否重新启动该服务 //对于需要长期持续运行的守护进程, 推荐设为 on-failure 以增强可用性 Restart= on -failure //重启服务前暂停多长时间 //默认值是100毫秒(100ms)。 如果未指定时间单位,那么将视为以秒为单位 RestartSec=30s [Install] WantedBy=multi-user.target |
更多说明参考:http://www.jinbuguo.com/systemd/systemd.service.html
http://www.jinbuguo.com/systemd/systemd.kill.html
保存退出并执行:
1 2 3 4 | //设置开机启动 systemctl enable supervisord.service //查看设置是否生效 systemctl is -enabled supervisord.service |
5.其它辅助
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //关闭所有任务 supervisorctl shutdown //启动所有进程 supervisorctl start all //停止所有进程 supervisorctl stop all //启动某一个特定进程,program-name为[program:xx]中的xx supervisorctl start program-name //停止某一个特定进程,program-name为[program:xx]中的xx supervisorctl stop program-name //重启所有 supervisorctl restart all //重启某一进程,program-name为[program:xx]中的xx supervisorctl reatart program-name //查看所有任务状态 supervisorctl status //查看报错日志 more / var /log/testdotnetcore.err.log //查看运行日志 more / var /log/testdotnetcore. out .log |
文章出处:http://www.cnblogs.com/anech/p/6836231.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器