Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器和Supervisor守护服务 (下)

简介: Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器和Supervisor守护服务

五、配置Supervisor守护服务:

为什么要配置Supervisor:

  使用Linux部署过ASP.NET Core应用程序的小伙伴都清楚,我们在部署项目都是通过Shell进行项目启动运行的。有时候我们会发现当我们关闭了Shell后,应用程序会立马宕机无法访问,需要我们重新进入服务器连接Shell输入dot命令重启应用程序。在生成环境中对于这种没有对应用程序进行任何的守护和监听的部署是非常的糟糕的,因此我们需要守护服务或者容器(推荐使用Docker)来对应用程序进行监听保护作用,当监听到应用进程停止,Supervisor会自动重启该应用程序。

Supervisor简单概述:

  首先简单了解下Supervisor, Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

安装Supervisor:

yum install python-setuptools
easy_install supervisor

配置Supervisor

//新建指定目录,为了避免默认配置会在某些更新覆盖掉
mkdir /etc/supervisor
//这里是在新建好的目录新建conf文件,这里关键。默认文件会建立在/etc目录下
echo_supervisord_conf > /etc/supervisor/supervisord.conf

新建成功如下图所示:

1336199-20191209000733877-16094021.png

打开supervisord.conf,要将文件的结尾部分替换掉以便后面能读取到我们的配置文件

打开supervisord.conf配置文件:

vim supervisord.conf

在文件的结尾找到以下配置代码:

;[include]<br>;files = relative/directory/*.ini

1336199-20191209013633921-218242682.png将代码替换为如下,注意前后不能带 ;和空格符号

[include]

files = conf.d/*.conf

1336199-20191209015547118-1625134417.png

配置对ASP.NET Core应用的守护:

进入目录 /etc/supervisor/ 新建 conf.d文件夹:

mkdir conf.d

在【/etc/supervisor/conf.d/】目录下新建一个AspNetCoreWebApi.conf配置文件:

vim AspNetCoreWebApi.conf

直接复制以下内容:

[program:AspNetCoreWebApi]

command=dotnet FirstCore.dll;

directory=/root/MyDotNetApplication/;

autorestart=true;

stderr_logfile=/var/log/AspNetCoreWebApi.err.log;

stdout_logfile=/var/log/AspNetCoreWebApi.out.log;

environment=ASPNETCORE_ENVIRONMENT=Production;

user=root;

stopsignal=INT;


配置说明:

[program:AspNetCoreWebApi]
command=dotnet FirstCore.dll; 运行程序的命令
directory=/root/MyDotNetApplication/; 命令执行的目录
autorestart=true; 程序意外退出是否自动重启
stderr_logfile=/var/log/AspNetCoreWebApi.err.log;错误日志文件
stdout_logfile=/var/log/AspNetCoreWebApi.out.log;输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production;进程环境变量
user=root;进程执行的用户身份
stopsignal=INT

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

运行supervisord,查看是否生效,命令如下:

supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep AspNetCoreWebApi   //AspNetCoreWebApi是上面配置的program名称:[program:AspNetCoreWebApi]

配置Supervisor开机启动

新建一个“supervisord.service”文件

[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

将supervisord.service文件拷贝至:

/usr/lib/systemd/system/   #系统目录下

执行命令:systemctl enable supervisord #激活开机启动命令

执行命令:systemctl is-enabled supervisord #来验证是否为开机启动

下面是一些常用的 Supervisor 的命令 (参考https://segmentfault.com/a/1190000003955182):

               命令                                                说明
supervisord 初始启动Supervisord,启动、管理配置中设置的进程
supervisorctl stop myproject 停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon
supervisorctl start myproject 启动某个进程
supervisorctl restart myproject 重启某个进程
supervisorctl stop groupworker 重启所有属于名为groupworker这个分组的进程(start,restart同理)
supervisorctl stop all 停止全部进程,注:start、restart、stop都不会载入最新的配置文件
supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。注意:显示用stop停止掉的进程,用reload或者update都不会自动重启


相关文章
|
4月前
|
监控 前端开发 Linux
centos7系统安装部署zabbix5.0
【9月更文挑战第23天】在CentOS 7系统上部署Zabbix 5.0的步骤包括:安装MariaDB数据库及必要软件包,配置Zabbix仓库,设置数据库并导入Zabbix数据库架构,配置Zabbix服务器与前端参数,启动相关服务,并通过浏览器访问Web界面完成安装向导。
343 0
|
22天前
|
存储 NoSQL Linux
linux积累-core文件是干啥的
核心文件是Linux系统在程序崩溃时生成的重要调试文件,通过分析核心文件,开发者可以找到程序崩溃的原因并进行调试和修复。本文详细介绍了核心文件的生成、配置、查看和分析方法
74 6
|
24天前
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
176 6
|
2月前
|
Oracle 关系型数据库 MySQL
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
|
3月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
116 9
|
3月前
|
存储 Linux 开发者
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
302 0
虚拟机centos7.9一键部署docker
|
10天前
|
弹性计算 数据挖掘 应用服务中间件
阿里云轻量应用服务器68元与云服务器99元和199元区别及选择参考
目前阿里云有三款特惠云服务器,第一款轻量云服务器2核2G68元一年,第二款经济型云服务器2核2G3M带宽99元1年,第三款通用算力型2核4G5M带宽199元一年。有的新手用户并不是很清楚他们之间的区别,因此不知道如何选择。本文来介绍一下它们之间的区别以及选择参考。
236 87
|
3天前
|
存储 弹性计算 应用服务中间件
阿里云轻量应用服务器出新品通用型实例了,全球26个地域可选
近日,阿里云再度发力,推出了首款全新升级的轻量应用服务器——通用型实例。这款服务器实例不仅标配了200Mbps峰值公网带宽,更在计算、存储、网络等基础资源上进行了全面优化,旨在为中小企业和开发者提供更加轻量、易用、普惠的云计算服务,满足其对于通用计算小算力的迫切需求。目前,这款新品已在全球26个地域正式上线,为全球用户提供了更加便捷、高效的上云选择。
|
20天前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
|
19天前
|
存储 运维 安全
阿里云弹性裸金属服务器是什么?产品规格及适用场景介绍
阿里云服务器ECS包括众多产品,其中弹性裸金属服务器(ECS Bare Metal Server)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。分钟级的交付周期将提供给您实时的业务响应能力,助力您的核心业务飞速成长。本文为大家详细介绍弹性裸金属服务器的特点、优势以及与云服务器的对比等内容。