.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
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
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

  

posted @   anech  阅读(438)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示