Windows平台部署Asp.Net Core应用

一. 简介

Asp.Net Core 部署方式有两种:依赖框架和独立部署。

1. 框架依赖的部署:

顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core。 因为已存在 .NET Core,所以应用在 .NET Core 安装程序间也是可移植的。 应用仅包含其本身的代码和任何位于 .NET Core 库外的第三方依赖项。 FDD 包含可经过在命令行中使用 dotnet 实用程序启动的 .dll 文件。 例如,dotnet app.dll 就能够运行一个名为 app 的应用程序。

对于 FDD,仅部署应用程序和第三方依赖项。 不须要部署 .NET Core,由于应用将使用目标系统上存在的 .NET Core 版本。 这是定目标到 .NET Core 的 .NET Core 和 ASP.NET Core 应用程序的默认部署模型。html

优势web

① 不须要提早定义 .NET Core 应用将在其上运行的目标操做系统。 由于不管什么操做系统,.NET Core 的可执行文件和库都是用通用的 PE 文件格式,所以,不管什么基础操做系统,.NET Core 均可执行应用。windows

② 部署包很小。 只需部署应用及其依赖项,而无需部署 .NET Core 自己。安全

③ 许多应用均可使用相同的 .NET Core 安装,从而下降了主机系统上磁盘空间和内存使用量。服务器

这种模式是跨平台的,只要在对应平台装上runtimes,而后把发布包作成可移植的,同一个发布包就能够跨平台了。app

缺点框架

① 仅当主机系统上已安装你设为目标的 .NET Core 版本或更高版本时,应用才能运行。函数

② 若是不了解未来版本,.NET Core 运行时和库可能发生更改。 在极少数状况下,这可能会更改应用的行为。工具

2. 独立部署:

与 FDD 不一样,独立部署 (SCD) 不依赖目标系统上存在的共享组件。 全部组件(包括 .NET Core 库和 .NET Core 运行时)都包含在应用程序中,而且独立于其余 .NET Core 应用程序。 SCD 包括一个可执行文件(如 Windows 平台上名为 app 的应用程序的 app.exe),它是特定于平台的 .NET Core 主机的重命名版本,还包括一个 .dll 文件(如 app.dll),而它是实际的应用程序。

对于独立部署,能够部署应用和所需的第三方依赖项以及生成应用所使用的 .NET Core 版本。 建立 SCD 不包括各类平台上的 .NET Core 本机依赖项,所以运行应用前这些依赖项必须已存在。开发工具

从 NET Core 2.1 SDK(版本 2.1.300)开始,.NET Core 支持修补程序版本前滚。 在建立独立部署时,.NET Core 工具会自动包含你的应用程序所指向的 .NET Core 版本的最新服务的运行时。 (最新服务的运行时包括安全修补程序和其余 bug 修复程序。)服务的运行时不须要存在于你的生成系统上;它会从 NuGet.org 自动下载。

FDD 和 SCD 部署使用单独的主机可执行文件,使你可使用发布者签名为 SCD 签署主机可执行文件。

优势

① 能够对与应用一块儿部署的 .NET Core 版本具备单独的控制权

② 请放心,目标系统能够运行你的 .NET Core 应用,由于你提供的是应用将在其上运行的 .NET Core 版本

缺点

① 因为 .NET Core 包含在部署包中,所以必须提早选择为其生成部署包的目标平台

② 部署包相对较大,由于须要将 .NET Core 和应用及其第三方依赖项包括在内。

他不能跨平台,每一个包都有对应的运行时,因此一份代码只能在对应的平台使用。

3. 部署的手段:文件系统、Web部署、FTP。

 

二. 文件系统发布至IIS

文件系统发布就是最传统的一种发布方式,利用开发工具生成一个发布包,而后部署到IIS上。

服务器上须要安装.Net运行时和支持Module,下载地址:https://dotnet.microsoft.com/download/dotnet-core/2.2

1. 生成发布包:

2. 部署到IIS:

和普通的Asp.Net Web项目相同,但须要把进程池改为 " 无托管代码 "。

三. Web部署发布至IIS

1. 前提:

安装 dotnet-hosting(这里的版本为2.2.4,该安装包 包括:dotnet runtime 2.2.4 和 dotnet hosting)和 Web Deploy v3.6。

PS:runtime是dotnet程序的运行时,hosting是IIS支持dotnet core程序必备的模块(安装完后,IIS模块中会有AspNetCoreModuleV2模块),WebDeploy v3.6 是服务器端支持“web部署”方式必备的程序,而安装WebDeploy微软推荐经过“web platform”这个软件来安装(相似于360软件管家的性质)。

特别注意: 若是仅仅是本地运行,安装runtimes就好了,若是是服务器上部署,要安装dotnet-hosting,里面已经包含了对应版本的runtimes。

下载地址:https://dotnet.microsoft.com/download/dotnet-core

2. 必备环境的安装

(一).  dotnet-hosting安装

(1). 安装dotnet-hosting,去【https://dotnet.microsoft.com/download/dotnet-core/2.2】地址,下载dotnet-hosting程序。

(2). 在WinServer2016上安装【dotnet-hosting-2.2.4-win.exe】,安装过程以下图:

(3). 安装完毕后,cmd命令【dotnet --list-runtimes】查看版本为 2.2.4 。在IIS模块中查看有 AspNetCoreModuleV2.

(二). Web Deploy的安装

(1). 先安装【Web PlatForm】,经过 Web PlatForm 安装 Web Deploy,下载地址:Https://www.microsoft.com/web/downloads/platform.aspx

PS:固然也能够直接安装Web Deploy,下载地址: https://www.microsoft.com/zh-cn/download/details.aspx?id=43717

(2). 在里面搜索 web deploy,进行 安装:

3. 发布步骤

(1). 选择Web的方式进行发布,输入服务器地址,帐号密码、项目名称、项目地址,以下图:

(2). 点击,发布进行发布,以下图:发布成功。

补充:此处可能第一次连接上不上去,发布失败,这个时候,去服务器上把这个项目关闭,而后进行发布,发布成功后,在把该项目打开,之后再发布就正常了。

假设还有问题,在发布文件夹下新建要给 App_Offline.htm便可,用于关闭IIS。

 

四. FTP发布至IIS

分析:FTP发布不一样于上述Web部署的模式,服务器端不须要安装任何额外的插件,仅须要给服务器添加一个FTP发布便可。

1. 服务端添加FTP发布

(1). 选中IIS中的项目,添加FTP发布,步骤以下图:

添加完毕,点击绑定,发现里面多了一个FTP的21端口的地址。

 

 注:若是是阿里云或者其它云服务器,这里使用项目端口8015和FTP的21端口,须要在服务器的管理端配置一些,而后还要在服务器的防火墙中配置一下入站,部分操做以下图:

 

 

(2) 在VS中进行发布,选择FTP的模式发布,配置 服务器地址、登陆帐号、密码、项目地址,点击发布便可。

 

 

五. Windows服务的形式发布

不少状况下,咱们不使用IIS,而是将Asp.Net Core程序发布成Windows服务的形式,步骤以下:

1.  经过Nuget安装程序集【 Microsoft.AspNetCore.Hosting.WindowsServices 】

  1. 经过右键项目,经过编辑项目的 xxx.csproj文件编辑项目的RID,RID的编辑规则以下图:

该项目发布在win10下,以下图

  1. 在Main函数中将Run改为RunAsService,同时能够经过UseUrls来配置访问地址,而后对该项目进行发布。
  1. 利用sc相关的windows服务的指令进行服务的建立、开启、查询、中止、删除。(指令须要以管理员身份运行)

(1) 建立服务:sc create MyService binPath= "c:\svc\AspNetCoreServiceSample.ex"

(2) 启动服务:sc start MyService

(3) 检查服务状态:sc query MyService

(4) 中止服务:sc stop MyService

(5) 卸载服务:sc delete MyService  (删除前必须先中止服务)

 


来源:https://www.cnblogs.com/yaopengfei/p/10733772.html

相关文章
相关标签/搜索