手机版

关于将ASP.NET核心应用程序部署到生产环境(CentOS7)的详细说明

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

将ASP.NET核心应用程序部署到生产环境(CentOS7)

阅读目录

环境说明准备您的ASP.NET核心应用程序来安装CentOS7并安装。面向CentOS7的. NET Core SDK。在部署ASP.NET核心应用配置Nginx配置主管的同时,已经用Rabbit RPC重构了公司的一个系统(与微信相关)。近期已完成相关测试(逻辑测试和压力测试),接近部署到在线生产环境,从而对CentOS上ASP.NET核心应用的部署方案进行了修补。今天,我想和大家分享一下如何根据生产标准在CentOS上部署ASP.NET核心应用。

环境描述

服务器系统:CentOS 7.2.1511

相关工具:Xshel、Xftp

服务器软件:netcore,nginx,supervisor,policycoreutils-python

准备您的ASP.NET核心应用程序

首先,以可移植模式发布您的应用程序。

在ps:上,我用一个空的Web项目来演示,因为本文主要介绍的是生产环境的部署,与应用无关。

命令是:

dotnet publishc发行版

请确保此发行版应用程序可以在windows上运行,以减少后续问题。

为什么不以自托管方式部署?

自托管发布部署起来要简单得多,那么为什么生产环境要以可移植的方式发布呢?

原因1:性能低于便携式(主)。

原因二:微软给出的建议(时报)。

没有证据,但有图有真相。

参考地址:https://docs . Microsoft.com/zh-cn/dotnet/articles/core/app-types

所以,既然用在生产环境中,就必须追求更高的性能。

安装CentOS7

这个我就不细说了。网上有很多教程。这里我使用Hyper-V来虚拟化CentOS7。

安装。面向CentOS7的. NET Core SDK。

Sudo yum安装lib undle libicu(安装libi Cu依赖项)

curl-SsL-o dotnet.tar.gz https://go.microsoft.com/fwlink/? LinkID=809131(下载sdk压缩包)sudo mkdir-p/opt/dotnet sudo tar zxf dotnet . tar . gz-c/opt/dotnet(解压缩)sudo ln-s/opt/dotnet/dotnet/usr/local/bin(创建链接)

输入dotnet -info查看安装是否成功。

那个。NET Core SDK如果可以执行,则安装成功。

参考文献:https://www.microsoft.com/net/core#centos

部署ASP.NET核心应用程序

将以前发布的文件夹上传到/home/wwwroot/。

在这里,我使用Xftp上传文件。

检查它是否能运行

命令:

dotnet/home/wwwroot/webapplication 1/webapplication 1 . dll

如果出现这些消息,则表明操作成功。

目前,我们无法访问此页面。此时,我们需要部署一个用于转发的web容器。

配置Nginx

安装Nginx

curl-o nginx . rpm http://nginx . org/packages/centos/7/no arch/RPMS/nginx-release-centos-7-0 . El 7 . ngx . no arch . rpm

rpm -ivh nginx.rpmyum安装nginx

安装成功!

输入:systemctl start nginx启动nginx。

输入:systemctl使nginx能够设置nginx的启动(linux在关闭或重新启动时会自动运行nginx,无需将其连接到输入命令)。

配置防火墙

命令:防火墙-cmd-区域=公共-添加-端口=80/TCP-永久

命令:systemctl重新启动防火墙(重新启动防火墙以使配置立即生效)

测试nginx是否可访问。

配置nginx以转发ASP.NET核心应用程序

修改/etc/nginx/conf.d/default.conf文件。

将文件内容替换为

服务器{ listen 80location/{ proxy _ pass http://localhost :5000;proxy _ http _ version 1.1proxy _ set _ header Upgrade $ http _ Upgrade;代理集头连接保持活动;proxy _ set _ header Host $ hostproxy _ cache _ bypass $ http _ upgrade;}}上传到CentOS进行覆盖。

执行:nginx -s重新加载,使其立即生效

运行ASP.NET核心应用程序

命令:

请尝试在此时再次访问dotnet/home/wwwroot/web application 1/web application 1 . dll。

我想哭。经过进一步了解,这个问题是SELinux保护机制造成的,所以我们需要在SELinux的白名单中加入nginx。

接下来,我们通过一些命令来解决这个问题。

yum install policy coreutils-pytonsudo cat/var/log/audit/audit . log | grep nginx | grep denied | audit 2 allow-M mynginxsudo semodule-I mynginx . PP

尝试再次访问。

至此,部署基本完成。

配置守护程序服务(主管)

目前有三个问题

问题1:ASP.NET核心应用程序在外壳中运行。如果关闭shell,您会发现ASP.NET Core应用程序已关闭,这使得该应用程序不可访问。当然我们也不想遇到这种情况,生产环境对这种情况是零容忍的。

问题2:如果ASP.NET Core进程意外终止,则需要手动连接到shell来重新启动,这通常不够及时。

问题3:如果服务器宕机或需要重启,我们仍然需要连接到shell才能启动它。

为了解决这个问题,我们需要一个程序来监控ASP.NET核心应用程序的状态。当应用程序停止运行时,立即重新启动它。这里我们使用Python开发的工具Supervisor。

安装主管

Yum安装python-设置工具轻松安装supervisor配置Supervisor

mkdir/etc/supervisor echo _ supervisor d _ conf/etc/supervisor/superversor d . conf修改supervisord.conf文件并更改文件末尾的配置

修改为

Ps:如果服务已启动,请使用“supervisorctl reload”命令修改配置文件以使其生效

配置ASP.NET核心应用程序的监护人

创建一个包含以下内容的WebApplication1.conf文件

[program : webapplication 1]command=dotnet WebApplication1.dll;运行程序目录的命令=/home/wwwroot/web application 1/;命令执行目录自动重新启动=真;自动重新启动stderr _ log file=/var/log/web application 1 . err . log;错误日志文件stdout _ log file=/var/log/web application 1 . out . log;输出日志文件环境=aspnetcore _ environment=production;过程环境变量user=root流程执行的用户标识stopsignal=INT将文件复制到"/etc/supervisor/conf . d/web application 1 . conf "

运行supervisord以查看它是否生效

supervisord-c/etc/supervisord . confps-ef | grep web application 1

如果DotNet WebApplication1.dll进程存在,说明它运行成功,此时被浏览器访问。

至此,ASP.NET核心应用的配置完成。

配置主管引导

创建一个新的“supervisord.service”文件

# system d(CentOS 7.0)的数据服务# by ET-CS(https://github.com/ET-CS)[Unit]Description=Supervisor守护程序[Service]Type=forkingExecStart=/usr/bin/superversord-c/etc/Supervisor/superversord . confexecstop=/usr/bin/superversorctl shuttonsecreload=/usr/bin/superverstorctl reloaddillmode=进程重新启动=on-failure restart sec=42s[install]by=multi

执行命令:systemctl enable supervisord

执行命令:system ctlis-enabled supervisor d #以验证它是否是引导

试验

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:关于将ASP.NET核心应用程序部署到生产环境(CentOS7)的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。