掌握.NET Core后端发布流程,如何部署后端应用?

无论你是刚接触.NET Core的新手还是已有经验的开发者,在这篇文章中你将会学习到一系列实用的发布技巧与最佳实践,帮助你高效顺利地将.NET Core后端应用部署到生产环境中

目录

程序发布操作

Docker容器注册表

文件夹发布

导入配置文件

网站运行操作

程序发布操作

        当我们想对我们已经写好的后端项目发布到网站的时候,可以直接将项目文件目录中的bin/Debug部署到生产环境的服务器上,但是缺点也很明显需要发布网站提前安装好.net运行时环境并且性能方面也是比较差的,我们创建的做法就是采用自带的发布功能进行操作,以下是对程序进行发布操作的基本流程:

右键我们的项目,点击发布按钮,然后进入到下面的界面,让我们选择用什么样的方式进行发布,如下可以看到.net core给我们提供的方式也是挺多的,每种发布方式注意的点也很多,接下来就着重对某些发布的操作进行讲解吧!

如果真的需要在服务器上面安装配置.net运行时环境,则需要访问 官网 根据需要安装对应的.net的sdk环境,如下所示:

下载完成之后,我们将其安装到服务器当中,然后把要发布到服务器的后端发布文件复制到服务器中然后运行即可,接下来我们介绍一下上面发布时的几种部署方式吧!

Docker容器注册表

Docker:是一种开源的容器化平台允许开发人员将应用程序及其所有依赖项打包到一个标准化的单元中,称为“容器”。这个容器可以在任何地方运行,无论是本地开发环境、测试环境还是生产环境,Docker使得开发和部署应用程序变得更加简单、灵活和可移植,其官网 地址 如下:

在项目中如果我们想使用Docker进行程序发布的话,我们可以右键项目然后点击添加,选择Docker支持,如下所示:

然后我们接下来开始选择容器基础框架的选项操作,如下所示:

1)容器OS:专门为运行容器优化的操作系统,专门为运行容器优化的操作系统
2)容器生成类型:构建容器的方式和方法,选择合适的构建类型能优化镜像大小、构建速度和可维护性
3)容器镜像SKU:容器镜像的不同配置版本,一个镜像可以有多个不同的SKU版本这些版本之间可能包含不同的库、应用或系统设置
4)Docker生成上下文:在构建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 --from=build /app/out .# 设置应用默认端口
ENV ASPNETCORE_URLS=http://+: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 --restart=always --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":“44c24123356","ClientId:"2c6ala51-17324f2b2ee09”,"ClientSecret": "uWm8Q6yOuJ5ii2347ac7","Scope":"api://2c6ala51-170f2b2ee09","AllowWebApiToBeAuthorizedByACL:true
}

网站运行操作

当我们完成了后端程序的发布之后,后面就需要了解并掌握如何对网站进行持续运行操作相关知识的概念了,这一块说实话我了解的也不是很多,虽然.net core已经内置了Kestrel来来作为独立的Web服务器来进行使用,也就是我们直接双击发布程序的exe文件,但是一般我们也不会让Kestrel直接面对终端用户的请求,配置域名、记录请求日志、url重写等操作皆是由反向代理服务器进行负责的,这里我们可以了解一下多种部署模式:

1)K8S+容器:推荐但是配置难度较高

2)Linux+Nginx

3)云平台

4)Windows+IIS

对于网站运行时的安全提醒的话,这边建议启用https,如果运维人员需要通过远程桌面或者SSH连接到服务器,那么一定要再服务器的防火墙上设置只允许运维人员的IP段访问相关端口,并且需要严格区分开发环境和生产环境,不要随意相信客户端请求,一定要进行数据校验。具体的等我后面也学习了解到了运维等相关方面的知识的话,我在继续讲解吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21627.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用

嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用。以下是其具体作用的分析: 一、提供交互界面 嵌入式工业级显示器为环保垃圾柜设备提供了一个直观、易用的交互界面。用户可以通过触摸屏幕进行操作,如选择垃圾分类类别、查看投放指南、查询…

Apifox 增强 AI 接口调试功能:自动合并 SSE 响应、展示DeepSeek思考过程

在API调试的世界里,效率和准确性往往决定了开发者的成败。你是否曾为处理SSE(Server-Sent Events)响应而烦恼?又是否期待在调试时能直观看到AI的“思考过程”?Apifox这次全新升级,将AI接口调试功能推向新高…

[python]windows上安装yolov12环境

yolov12出来了,地址github.com/sunsmarterjie/yolov12,咱们看看怎么在windows上把环境安装一下首先看看官方安装流程: wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3cu11torch2.2cxx11abiF…

前端知识点---vue的声明周期(vue)

文章目录 创建挂载更新销毁 vue的生命周期有四个阶段: 创建 挂载, 更新和销毁 创建 是vue组件从创建到准备渲染的过程 dom还没挂载到页面中 进行了初始化工作: 初始化数据(data,props) . 设置计算属性computed 初始化方法 methods 绑定事件watch 创建阶段的钩子函数beforeCrea…

装修流程图: 装修前准备 → 设计阶段 → 施工阶段 → 安装阶段 → 收尾阶段 → 入住

文章目录 引言I 毛坯房装修的全流程**1. 装修前准备****1.1 确定装修预算****1.2 选择装修方式****1.3 选择装修公司****1.4 办理装修手续****2. 设计阶段****2.1 量房****2.2 设计方案****2.3 确认方案****3. 施工阶段****3.1 主体拆改****3.2 水电改造****3.3 防水工程****3.…

智能马达保护器:为工业电机安全运行保驾护航

在工业生产中,电动机作为核心动力设备,其稳定运行直接关系到生产效率与安全性。然而,复杂的工况环境、频繁启停和突发负载变化,常导致电机面临过载、缺相、短路等故障风险。安科瑞智能马达保护器凭借其智能化、高精度、多功能的设…

Unity学习part4

1、ui界面的基础使用 ui可以在2d和矩形工具界面下操作,更方便,画布与游戏窗口的比例一般默认相同 如图所示,图片在画布上显示的位置和在游戏窗口上显示的位置是相同的 渲染模式:屏幕空间--覆盖,指画布覆盖在游戏物体渲…

雷龙CS SD NAND(贴片式TF卡)测评体验

声明:非广告,为用户体验文章 前段时间偶然获得了雷龙出品的贴片式 TF 卡芯片及转接板,到手的是两片贴片式 nand 芯片搭配一个转接板,其中有一片官方已经焊接好了,从外观来看,正面和背面设计布局合理&#x…

tailwindcss学习01

系列教程 01 入门 02 vue中接入 03 工具类优先 入门 # 注意使用cmd不要powershell npm init -y # 如果没有npx则安装 npm install -g npx npm install -D tailwindcss3.4.17 --registry http://registry.npm.taobao.org npx tailwindcss init修改tailwind.config.js /** ty…

爱普生SG-8002CE智能家居中控系统的精准 “心脏起搏器”

智能家居中控系统是整个智能家居生态的关键枢纽,承担着连接、管理和协调各类智能设备的重任,涵盖智能灯光、智能窗帘、智能家电等,致力于实现家居设备的互联互通与智能化控制,打造便捷、舒适的智慧生活环境。在这一系统中&#xf…

python绘制年平均海表温度、盐度、ph分布图

python绘制年平均海表温度、盐度、ph图 文章目录 python绘制年平均海表温度、盐度、ph分布图前言一、数据准备二、代码编写2.1. python绘制年平均海表温度(主要)2.2. python绘制年平均海表盐度(选看)2.3. python绘制年平均海表ph&…

基于海思soc的智能产品开发(图像处理的几种需求)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于一个嵌入式设备来说,如果上面有一个camera,那么就可以有很多的用途。简单的用途就是拍照,比拍照更多一点的…

使用linux脚本部署discuz博客(详细注释版)

使用脚本部署一个discuzz项目 1.显示当前环境状态 防火墙状态 selinux状态 httpd状态 由上可知,虚拟机已处于最初始状态 2.脚本编写 #!/bin/bash #这是一个通过脚本来部署discuzz博客 firewalld关闭 systemctl stop firewalld if [ $? -eq 0 ];then echo "…

Windows 快速搭建C++开发环境,安装C++、CMake、QT、Visual Studio、Setup Factory

安装C 简介 Windows 版的 GCC 有三个选择: CygwinMinGWmingw-w64 Cygwin、MinGW 和 mingw-w64 都是在 Windows 操作系统上运行的工具集,用于在 Windows 环境下进行开发和编译。 Cygwin 是一个在 Windows 上运行的开源项目,旨在提供类Uni…

React创建项目实用教程

✍请将整篇文章阅读完再开始使用create-react-app react-project创建项目 检查node版本 node -v // node版本:v22.10.0使用nvm降版本修改到了node V20.11.1之后再进行一系列操作的 react脚手架安装: npm install -g create-react-app// node版本&…

RK3588配置成为路由器

文章目录 前言一、配置netplan二、安装hostapd1.创建hostapd.conf文件2.安装软件3.修改启动文件4.修改/etc/default/hostapd 文件 三、安装dnsmasq服务四、配置NET及重启验证五、常见问题总结 前言 RK3588开发板有两个网口,一个无线网卡。我需要配置为家用路由器模…

游戏引擎学习第114天

打开内容并回顾 目前正在讨论一个非常重要的话题——优化。当代码运行太慢,无法达到所需性能时,我们该怎么办。昨天,我们通过在代码中添加性能计数器,验证了一些性能分析的数据,这些计数器帮助我们了解每个操作需要的…

如何修改Windows系统Ollama模型存储位置

默认情况下,Ollama 模型会存储在 C 盘用户目录下的 .ollama/models 文件夹中,这会占用大量 C 盘空间,增加C盘“爆红”的几率。所以,我们就需要修改Ollama的模型存储位置 Ollama提供了一个环境变量参数可以修改Ollama的默认存在位…

第1章大型互联网公司的基础架构——1.2 客户端连接机房的技术1:DNS

客户端启动时要做的第一件事情就是通过互联网与机房建立连接,然后用户才可以在客户端与后台服务器进行网络通信。目前在计算机网络中应用较为广泛的网络通信协议是TCP/IP,它的通信基础是IP地址,因为IP地址有如下两个主要功能。 标识设备&…

第四届图像、信号处理与模式识别国际学术会议(ISPP 2025)

重要信息 大会官网:www.icispp.com 大会时间:2025年3月28日-30日 大会地点:南京 简介 由河海大学和江苏大学联合主办的第四届图像、信号处理与模式识别(ISPP 2025) 将于2025年3月28日-30日在中国南京举行。主要围绕图像信号处…