使用Supervisor守护ASP.NET|使用Supervisor守护ASP.NET Core应用程序进程
目录
- 一、前言
- 二、Supervisor
- 1、安装Python包管理工具
- 2、安装Supervisor
- 3、配置Supervisor应用守护
- 4、配置Supervisor开机启动
- 三、总结
一、前言 在上一篇文章中,我们讲解了如何在Linux服务器上面部署ASP.NET Core应用程序,并且使用Nginx作为反向代理。我们在Linux服务器上面,是通过ASP.NET Core自宿主的方式运行应用程序。采用自宿主的方式启动ASP.NET Core应用程序,目前主要有以下几个问题:
- ASP.NET Core应用程序运行在shell会话之中,如果关闭shell会话窗口则会发现ASP.NET Core应用也会被关闭,从而导致应用无法访问,在生产环境中对这种情况是零容忍的。
- 如果ASP.NET Core进程意外终止,那么需要人为连接shell进行再次启动,往往这种操作都不够及时。
- 如果服务器宕机或者需要重启,我们还是需要手动连接shell进去启动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
如下图所示:
文章图片
2、安装Supervisor
使用下面的命令安装Supervisor:
easy_install supervisor
如下图所示:
文章图片
3、配置Supervisor应用守护
通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件,命令如下:
mkdir /etc/supervisorecho_supervisord_conf > /etc/supervisor/supervisord.conf
如下图所示:
文章图片
然后我们编辑supervisord.conf文件,在文件的尾部添加如下配置:
; conf.d 为配置表目录的文件夹,需要手动创建[include]files = /etc/supervisor/conf.d/*.conf
如下图所示:
文章图片
然后我们手动创建一个conf.d文件夹:
mkdir /etc/supervisor/conf.d
如下图所示:
文章图片
创建完成后的目录结构如下图:
文章图片
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
成功后的效果:
文章图片
这时我们在浏览器里面访问:
文章图片
这样就可以访问了。可以看到,这时我们就不需要在启动命令行了。而且关闭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
如下图所示:
文章图片
执行下面的命令来验证是否为开机启动:
systemctl is-enabled supervisord
如下图所示:
文章图片
到此为止,配置就完成了。我们可以重启虚拟机来验证一下是否开机就会启动应用程序。这里已经测试过了,重启虚拟机,然后用root用户登录就可以直接访问应用程序。
我们还可以使用Web管理界面来管理supervisor,在web管理界面,可以进行进程的重启,日志查看等操作。
web界面操作需要在supervisor的配置文件里添加[inet_http_server]选项组,我们使用记事本文件打开supervisord.conf文件,去掉[inet_http_server]选项组前面的"; ":
文章图片
修改之后重新加载服务:
supervisorctl reload
如下图所示:
文章图片
由于使用了9001端口,所以我们需要把9001端口添加到防火墙中:
firewall-cmd --zone=public --add-port=9001/tcp --permanent
如下图所示
文章图片
修改完防火墙之后需要重启防火墙配置:
firewall-cmd --reload
文章图片
然后在浏览器里面访问url:http://192.168.254.128:9001/,如果配置正常,则会要去输入用户名和密码,输入配置文件里面的用户名和密码即可登录,登录成功以后界面如下所示:
文章图片
在这里就可以看到正在运行的进程,而且还可以重启、停止等操作。
三、总结 Supervisor常用的相关命令如下:
supervisorctl restart; 重启指定应用supervisorctl stop; 停止指定应用supervisorctl start; 启动指定应用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
如截图这样:
文章图片
需要切换到/etc/supervisor目录在执行上面的命令。
【使用Supervisor守护ASP.NET|使用Supervisor守护ASP.NET Core应用程序进程】到此这篇关于使用Supervisor守护ASP.NET Core应用程序进程的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- Vue使用Tinymce富文本自定义toolbar按钮的实践
- C语言常用宏定义(#define)使用方法
- C语言|vscode配置C语言环境
- 头歌Java|十一、方法的使用
- goalng 中结构体方法的区别使用
- Golang中空接口的使用
- Goalng中 空结构体的使用
- Python|Python IO文件管理的具体使用
- #|docker-jenkins使用npm报错npm: command not found
- 使用孤立森林进行无监督的离群检测