做信息图的网站,做个营销网站,转包网站建设做非法事情,网站服务器价格表无论你是刚接触.NET Core的新手还是已有经验的开发者#xff0c;在这篇文章中你将会学习到一系列实用的发布技巧与最佳实践#xff0c;帮助你高效顺利地将.NET Core后端应用部署到生产环境中 目录
程序发布操作
Docker容器注册表
文件夹发布
导入配置文件
网站运行操作 … 无论你是刚接触.NET Core的新手还是已有经验的开发者在这篇文章中你将会学习到一系列实用的发布技巧与最佳实践帮助你高效顺利地将.NET Core后端应用部署到生产环境中 目录
程序发布操作
Docker容器注册表
文件夹发布
导入配置文件
网站运行操作
程序发布操作 当我们想对我们已经写好的后端项目发布到网站的时候可以直接将项目文件目录中的bin/Debug部署到生产环境的服务器上但是缺点也很明显需要发布网站提前安装好.net运行时环境并且性能方面也是比较差的我们创建的做法就是采用自带的发布功能进行操作以下是对程序进行发布操作的基本流程
右键我们的项目点击发布按钮然后进入到下面的界面让我们选择用什么样的方式进行发布如下可以看到.net core给我们提供的方式也是挺多的每种发布方式注意的点也很多接下来就着重对某些发布的操作进行讲解吧 如果真的需要在服务器上面安装配置.net运行时环境则需要访问 官网 根据需要安装对应的.net的sdk环境如下所示 下载完成之后我们将其安装到服务器当中然后把要发布到服务器的后端发布文件复制到服务器中然后运行即可接下来我们介绍一下上面发布时的几种部署方式吧
Docker容器注册表
Docker是一种开源的容器化平台允许开发人员将应用程序及其所有依赖项打包到一个标准化的单元中称为“容器”。这个容器可以在任何地方运行无论是本地开发环境、测试环境还是生产环境Docker使得开发和部署应用程序变得更加简单、灵活和可移植其官网 地址 如下 在项目中如果我们想使用Docker进行程序发布的话我们可以右键项目然后点击添加选择Docker支持如下所示 然后我们接下来开始选择容器基础框架的选项操作如下所示 1容器OS专门为运行容器优化的操作系统专门为运行容器优化的操作系统 2容器生成类型构建容器的方式和方法选择合适的构建类型能优化镜像大小、构建速度和可维护性 3容器镜像SKU容器镜像的不同配置版本一个镜像可以有多个不同的SKU版本这些版本之间可能包含不同的库、应用或系统设置 4Docker生成上下文在构建Docker镜像时所需要的文件、目录及其他资源的集合上下文中通常包含应用代码、配置文件、依赖文件等 点击确定之后就会在项目中生成一个Dockerfile文件我们可以根据需要添加如下内容
# 使用官方的 .NET Core SDK 镜像来构建应用
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /app# 复制 csproj 并还原依赖
COPY *.csproj .
RUN dotnet restore# 复制所有文件并构建应用
COPY . .
RUN dotnet publish -c Release -o out# 使用运行时镜像来运行应用
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --frombuild /app/out .# 设置应用默认端口
ENV ASPNETCORE_URLShttp://:80
EXPOSE 80# 启动应用
ENTRYPOINT [dotnet, webapi-study.dll]
当然我们也可以在项目根目录中创建一个.dockerignore 文件以避免将不需要的文件复制到Docker镜像中可以添加如下内容
bin/
obj/
*.sln
*.user
然后我们在项目的根目录下使用以下命令构建Docker镜像t是指定镜像名.是表示当前目录也就是Dockerfile文件所在的目录如果是本地打包直接定位到文件目录然后输入docker build就可以了
docker build -t auth .
构建完成后可以通过以下命令运行Docker容器此命令会将容器的80端口映射到宿主机的5000端口现在可以通过访问http://localhost:5000来访问Web API了
docker run -d -p 5000:80 --restartalways --name mywebapi mywebapi
在运行应用时如果需要检查容器的状态或停止它可以通过如下命令进行操作
# 查看正在运行的容器
docker ps停止容器
# docker stop mywebapi_container删除容器
# docker rm mywebapi_container
当然如果我们本地安装了Docker的话可以通过页面端进行操作 文件夹发布
这里我们采用发布文件夹的方式进行部署我们的后端应用点击之后进入如下界面这里提供了本地和线上两种方式这里我们就拿本地进行举例吧这里我将发布的文件放在bin目录下当然你也可以自定义位置都是可以的 进入发布界面这里我们点击显示所有配置然后进入到如下的详细发布界面其中有四个发布配置 1配置选择发布的环境这里我们一定要选择Release开发环境 2目标框架可以根据需要选择要发布的.net框架的版本 3部署模式有两种选择部署模式如下 框架依赖生成的程序集是不包含.net运行时的需要服务器上预先单独再安装.net运行时 独立生成的程序集是包含.net运行时的不需要服务器上预先单独再安装.net运行时 4目标运行时当我们部署模式选择框架依赖的时候是有一个可移植选项的意味着我们可以发布到任何环境只要该环境配置了对应的.net运行时如果我们部署模式选择独立的时候则意味着无需服务器再安装.net运行时但是却没有了可移植的选择只能发布选择了特定的环境当中且发布的时间较长 配置完上面四个主要的配置选项之后接下来还有两个额外配置文件发布选项和数据库 文件发布选项 1生成单个文件 尝试把尽可能多的发布文件合并到一个文件对开发客户端比较重要一点 2启用ReadyToRun编译 主要针对启动性能的优化而对应用运行期间的性能提升影响较小启用ReadyToRun编译会增加发布包的大小因为它将机器码直接打包到应用程序中 3裁剪未使用的代码 尝试把一些用不到的程序集给删掉因为发布的程序当中是可能有一些程序集是没有用到的但是程序可能会基于安全考虑给我们也拷进发布程序当中了如果我们对发布程序的包的大小有要求的话可以选择勾选 4在发布前删除所有现有文件 在发布前会把之前发布的程序都删除一遍然后再生成新的文件避免有一些旧的文件被插入到新的发布版本里面 数据库让发布工具帮助我们生成和EFCore相关的一些迁移脚本甚至自动帮助我们完成数据库的迁移如果我们的代码涉及到EFCore相关的话该选项会让我们连一下数据库然后它会帮助我们完成数据库的迁移不过大部分情况下我们是不需要采用这种方式的。 导入配置文件
如果我们想选择导入配置文件进行发布的话需要我们导入一个配置文件到程序当中这个配置文件一般如下所示 该配置文件一般都是当我们创建好web应用之后点击保存来保存你的配置文件通常它会保存在项目文件夹下的Properties/PublishProfiles文件夹中然后还需要在appsettings.json文件夹下配置对应的命令在创建web应用的时候都已经给到了类似下面这种的
AzureAd: {Instance:httos://login.microsoftonline.com/TenantId:“44c24123356ClientId:2c6ala51-17324f2b2ee09”,ClientSecret: uWm8Q6yOuJ5ii2347ac7,Scope:api://2c6ala51-170f2b2ee09,AllowWebApiToBeAuthorizedByACL:true
}
网站运行操作
当我们完成了后端程序的发布之后后面就需要了解并掌握如何对网站进行持续运行操作相关知识的概念了这一块说实话我了解的也不是很多虽然.net core已经内置了Kestrel来来作为独立的Web服务器来进行使用也就是我们直接双击发布程序的exe文件但是一般我们也不会让Kestrel直接面对终端用户的请求配置域名、记录请求日志、url重写等操作皆是由反向代理服务器进行负责的这里我们可以了解一下多种部署模式 1K8S容器推荐但是配置难度较高 2LinuxNginx 3云平台 4WindowsIIS 对于网站运行时的安全提醒的话这边建议启用https如果运维人员需要通过远程桌面或者SSH连接到服务器那么一定要再服务器的防火墙上设置只允许运维人员的IP段访问相关端口并且需要严格区分开发环境和生产环境不要随意相信客户端请求一定要进行数据校验。具体的等我后面也学习了解到了运维等相关方面的知识的话我在继续讲解吧