文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Supervisor守护ASP.NET Core应用程序进程

2023-06-29 14:38

关注

本文小编为大家详细介绍“如何使用Supervisor守护ASP.NET Core应用程序进程”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用Supervisor守护ASP.NET Core应用程序进程”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、前言

采用自宿主的方式启动ASP.NET Core应用程序,目前主要有以下几个问题:

为了解决上面的几个问题,所以我们需要有一个程序来监听ASP.NET Core应用程序的状况,当应用程序停止运行的时候会立即重新启动。

二、Supervisor

Supervisor就是这样一个用来监听ASP.NET Core应用程序运行状况的工具,它是用Python开发的一个client/server服务,是linux/Unix系统下的一个进程管理工具,不支持Windows系统,它能将一个普通的命令行进程变为后台deamon,并监控进程状态。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,Supervisor监听到进程死后,会自动重启进程,很方便的做到进程自动恢复的功能,不在需要自己写shell脚本来控制。下面我们就来看看如何在Linux上面安装Supervisor。

1、安装Python包管理工具

使用下面的命令安装Python包管理工具:

yum install python-setuptools

如下图所示:

如何使用Supervisor守护ASP.NET Core应用程序进程

2、安装Supervisor

使用下面的命令安装Supervisor:

easy_install supervisor

如下图所示:

如何使用Supervisor守护ASP.NET Core应用程序进程

3、配置Supervisor应用守护

通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件,命令如下:

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

如下图所示:

如何使用Supervisor守护ASP.NET Core应用程序进程

然后我们编辑supervisord.conf文件,在文件的尾部添加如下配置:

;conf.d 为配置表目录的文件夹,需要手动创建[include]files = /etc/supervisor/conf.d/*.conf

如下图所示:

如何使用Supervisor守护ASP.NET Core应用程序进程

然后我们手动创建一个conf.d文件夹:

mkdir /etc/supervisor/conf.d

如下图所示:

如何使用Supervisor守护ASP.NET Core应用程序进程

创建完成后的目录结构如下图:

如何使用Supervisor守护ASP.NET Core应用程序进程

supervisord.conf是主配置文件,应用程序配置文件放在conf.d文件夹下面。然后为应用程序创建一个名为AspNetCoreDeployDemo.conf的文件,并放到目录"/etc/supervisor/conf.d/"下,文件内容:

[program:AspNetCoreDeployDemo] ;程序名称,终端控制时需要的标识command=dotnet AspNetCoreDeployDemo.dll ; 运行程序的命令directory=/root/NetCore/FDD/ ; 命令执行的目录autorestart=true ; 程序意外退出是否自动重启stderr_logfile=/var/log/AspNetCoreDeployDemo.err.log ; 错误日志文件stdout_logfile=/var/log/AspNetCoreDeployDemo.out.log ; 输出日志文件environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量user=root ; 进程执行的用户身份stopsignal=INTstartsecs=10 ;自动重启时间间隔

执行下面的命令运行supervisord,查看是否生效:

supervisord -c /etc/supervisor/supervisord.confps -ef | grep AspNetCoreDeployDemo

成功后的效果:

如何使用Supervisor守护ASP.NET Core应用程序进程

这时我们在浏览器里面访问:

如何使用Supervisor守护ASP.NET Core应用程序进程

这样就可以访问了。可以看到,这时我们就不需要在启动命令行了。而且关闭shell窗口也可以获取数据。

如果服务已经启动,修改配置文件可用“supervisorctl reload”命令来使其生效。

4、配置Supervisor开机启动

我们新建一个“supervisord.service”文件,文件内容如下:

# dservice for systemd (CentOS 7.0+)# by ET-CS (https://github.com/ET-CS)[Unit]Description=Supervisor daemon[Service]Type=forkingExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.confExecStop=/usr/bin/supervisorctl shutdownExecReload=/usr/bin/supervisorctl reloadKillMode=processRestart=on-failureRestartSec=15s[Install]WantedBy=multi-user.target

将文件上传至"/usr/lib/systemd/system/"目录下,然后执行下面的命令:

systemctl enable supervisord

如下图所示:

如何使用Supervisor守护ASP.NET Core应用程序进程

执行下面的命令来验证是否为开机启动:

systemctl is-enabled supervisord

如下图所示:

如何使用Supervisor守护ASP.NET Core应用程序进程

到此为止,配置就完成了。我们可以重启虚拟机来验证一下是否开机就会启动应用程序。这里已经测试过了,重启虚拟机,然后用root用户登录就可以直接访问应用程序。

我们还可以使用Web管理界面来管理supervisor,在web管理界面,可以进行进程的重启,日志查看等操作。

web界面操作需要在supervisor的配置文件里添加[inet_http_server]选项组,我们使用记事本文件打开supervisord.conf文件,去掉[inet_http_server]选项组前面的";":

如何使用Supervisor守护ASP.NET Core应用程序进程

修改之后重新加载服务:

supervisorctl reload

如下图所示:

如何使用Supervisor守护ASP.NET Core应用程序进程

由于使用了9001端口,所以我们需要把9001端口添加到防火墙中:

firewall-cmd --zone=public --add-port=9001/tcp --permanent

如下图所示

如何使用Supervisor守护ASP.NET Core应用程序进程

修改完防火墙之后需要重启防火墙配置:

firewall-cmd --reload

如何使用Supervisor守护ASP.NET Core应用程序进程

然后在浏览器里面访问url:http://192.168.254.128:9001/,如果配置正常,则会要去输入用户名和密码,输入配置文件里面的用户名和密码即可登录,登录成功以后界面如下所示:

如何使用Supervisor守护ASP.NET Core应用程序进程

在这里就可以看到正在运行的进程,而且还可以重启、停止等操作。

三、总结

Supervisor常用的相关命令如下:

supervisorctl restart <application name> ;重启指定应用supervisorctl stop <application name> ;停止指定应用supervisorctl start <application name> ;启动指定应用supervisorctl restart all ;重启所有应用supervisorctl stop all ;停止所有应用supervisorctl start all ;启动所有应用

如果在执行命令的过程中,报下面的错误:

Error: .ini file does not include supervisorctl section

For help, use /usr/local/bin/supervisorctl -h

如截图这样:

如何使用Supervisor守护ASP.NET Core应用程序进程

需要切换到/etc/supervisor目录在执行上面的命令。

读到这里,这篇“如何使用Supervisor守护ASP.NET Core应用程序进程”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯