电竞比分网-中国电竞赛事及体育赛事平台

分享

Windows平臺部署Asp.Net Core應用

 新進小設計 2021-03-30

一. 簡介

Asp.Net Core 部署方式有兩種:依賴框架和獨立部署。

1. 框架依賴的部署:

顧名思義,依賴框架的部署 (FDD) 依賴目標系統(tǒng)上存在共享系統(tǒng)級版本的 .NET Core。 由于已存在 .NET Core,因此應用在 .NET Core 安裝程序間也是可移植的。 應用僅包含其自己的代碼和任何位于 .NET Core 庫外的第三方依賴項。 FDD 包含可通過在命令行中使用 dotnet 實用程序啟動的 .dll 文件。 例如,dotnet app.dll 就可以運行一個名為 app 的應用程序。

對于 FDD,僅部署應用程序和第三方依賴項。 不需要部署 .NET Core,因為應用將使用目標系統(tǒng)上存在的 .NET Core 版本。 這是定目標到 .NET Core 的 .NET Core 和 ASP.NET Core 應用程序的默認部署模型。

優(yōu)點

① 不需要提前定義 .NET Core 應用將在其上運行的目標操作系統(tǒng)。 因為無論什么操作系統(tǒng),.NET Core 的可執(zhí)行文件和庫都是用通用的 PE 文件格式,因此,無論什么基礎操作系統(tǒng),.NET Core 都可執(zhí)行應用。

② 部署包很小。 只需部署應用及其依賴項,而無需部署 .NET Core 本身。

③ 許多應用都可使用相同的 .NET Core 安裝,從而降低了主機系統(tǒng)上磁盤空間和內存使用量。

這種模式是跨平臺的,只要在對應平臺裝上runtimes,然后把發(fā)布包做成可移植的,同一個發(fā)布包就可以跨平臺了。

缺點

① 僅當主機系統(tǒng)上已安裝你設為目標的 .NET Core 版本或更高版本時,應用才能運行。

② 如果不了解將來版本,.NET Core 運行時和庫可能發(fā)生更改。 在極少數情況下,這可能會更改應用的行為。

2. 獨立部署:

與 FDD 不同,獨立部署 (SCD) 不依賴目標系統(tǒng)上存在的共享組件。 所有組件(包括 .NET Core 庫和 .NET Core 運行時)都包含在應用程序中,并且獨立于其他 .NET Core 應用程序。 SCD 包括一個可執(zhí)行文件(如 Windows 平臺上名為 app 的應用程序的 app.exe),它是特定于平臺的 .NET Core 主機的重命名版本,還包括一個 .dll 文件(如 app.dll),而它是實際的應用程序。

對于獨立部署,可以部署應用和所需的第三方依賴項以及生成應用所使用的 .NET Core 版本。 創(chuàng)建 SCD 不包括各種平臺上的 .NET Core 本機依賴項,因此運行應用前這些依賴項必須已存在。

從 NET Core 2.1 SDK(版本 2.1.300)開始,.NET Core 支持修補程序版本前滾。 在創(chuàng)建獨立部署時,.NET Core 工具會自動包含你的應用程序所指向的 .NET Core 版本的最新服務的運行時。 (最新服務的運行時包括安全修補程序和其他 bug 修復程序。)服務的運行時不需要存在于你的生成系統(tǒng)上;它會從 NuGet.org 自動下載。

FDD 和 SCD 部署使用單獨的主機可執(zhí)行文件,使你可以使用發(fā)布者簽名為 SCD 簽署主機可執(zhí)行文件。

優(yōu)點

① 可以對與應用一起部署的 .NET Core 版本具有單獨的控制權

② 請放心,目標系統(tǒng)可以運行你的 .NET Core 應用,因為你提供的是應用將在其上運行的 .NET Core 版本

缺點

① 由于 .NET Core 包含在部署包中,因此必須提前選擇為其生成部署包的目標平臺

② 部署包相對較大,因為需要將 .NET Core 和應用及其第三方依賴項包括在內。

他不能跨平臺,每個包都有對應的運行時,所以一份代碼只能在對應的平臺使用。

3. 部署的手段:文件系統(tǒng)、Web部署、FTP。

 

二. 文件系統(tǒng)發(fā)布至IIS

文件系統(tǒng)發(fā)布就是最傳統(tǒng)的一種發(fā)布方式,利用開發(fā)工具生成一個發(fā)布包,然后部署到IIS上。

服務器上需要安裝.Net運行時和支持Module,下載地址:https://dotnet.microsoft.com/download/dotnet-core/2.2

1. 生成發(fā)布包:

2. 部署到IIS:

和普通的Asp.Net Web項目相同,但需要把進程池改成 " 無托管代碼 "。

三. Web部署發(fā)布至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. 必備環(huán)境的安裝

(一).  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. 發(fā)布步驟

(1). 選擇Web的方式進行發(fā)布,輸入服務器地址,賬號密碼、項目名稱、項目地址,如下圖:

(2). 點擊,發(fā)布進行發(fā)布,如下圖:發(fā)布成功。

補充:此處可能第一次鏈接上不上去,發(fā)布失敗,這個時候,去服務器上把這個項目關閉,然后進行發(fā)布,發(fā)布成功后,在把該項目打開,以后再發(fā)布就正常了。

假設還有問題,在發(fā)布文件夾下新建要給 App_Offline.htm即可,用于關閉IIS。

 

四. FTP發(fā)布至IIS

分析:FTP發(fā)布不同于上述Web部署的模式,服務器端不需要安裝任何額外的插件,僅需要給服務器添加一個FTP發(fā)布即可。

1. 服務端添加FTP發(fā)布

(1). 選中IIS中的項目,添加FTP發(fā)布,步驟如下圖:

添加完畢,點擊綁定,發(fā)現里面多了一個FTP的21端口的地址。

 

 注:如果是阿里云或者其它云服務器,這里使用項目端口8015和FTP的21端口,需要在服務器的管理端配置一些,然后還要在服務器的防火墻中配置一下入站,部分操作如下圖:

 

 

(2) 在VS中進行發(fā)布,選擇FTP的模式發(fā)布,配置 服務器地址、登錄賬號、密碼、項目地址,點擊發(fā)布即可。

 

 

五. Windows服務的形式發(fā)布

很多情況下,我們不使用IIS,而是將Asp.Net Core程序發(fā)布成Windows服務的形式,步驟如下:

1.  通過Nuget安裝程序集【 Microsoft.AspNetCore.Hosting.WindowsServices 】

  1. 通過右鍵項目,通過編輯項目的 xxx.csproj文件編輯項目的RID,RID的編輯規(guī)則如下圖:

該項目發(fā)布在win10下,如下圖

  1. 在Main函數中將Run改成RunAsService,同時可以通過UseUrls來配置訪問地址,然后對該項目進行發(fā)布。
  1. 利用sc相關的windows服務的指令進行服務的創(chuàng)建、開啟、查詢、停止、刪除。(指令需要以管理員身份運行)

(1) 創(chuàng)建服務:sc create MyService binPath= "c:\svc\AspNetCoreServiceSample.ex"

(2) 啟動服務:sc start MyService

(3) 檢查服務狀態(tài):sc query MyService

(4) 停止服務:sc stop MyService

(5) 卸載服務:sc delete MyService  (刪除前必須先停止服務)

 


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

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多