1. 程式人生 > >Windows Server 2008 R2 + IIS 環境部署Asp.Net Core App

Windows Server 2008 R2 + IIS 環境部署Asp.Net Core App

處理 機制 bsp 下載 都是 reverse 角色 模式 roc

環境:Windows Server 2012, IIS 8, Asp.Net Core 1.1.

不少人第一次在IIS中部署Asp.Net Core App的人都會遇到問題,會發現原來的部署方式無法運行Asp.Net Core App程序。過去無論是原始的Asp程序還是後來的Asp.Net程序,在IIS中的部署方式都沒太大變化,僅需指向程序目錄,然後設定虛擬目錄,最後做一些參數配置。Asp.Net Core App為了做到跨平臺,自帶了一個輕量級的Web Server - Kestrel,那麽要在IIS中部署Asp.Net Core App,就必須有一種新的機制來協調IIS與Kestrel Server之間的數據傳遞。

1. Asp.Net Core的部署模式

與傳統的Asp.Net程序不同,Asp.Net Core App使用了Kestrel Server。Kestrel是一個跨平臺的Web Server,與IIS一樣負責請求的監聽、接收和響應,但沒有IIS豐富的管理功能,仍需要由IIS來處理一些前置工作。(當然你也可以使用Apache來做前置處理)

技術分享圖片

IIS負責把外部請求轉發給後端的Asp.net Core App,充當“反向代理(reverse-proxy)”角色。

2. 理解反向代理

“反向”是指入站方向,“代理”可以理解為某種服務,這裏是轉發HTTP請求的服務。“反向代理”就是入站方向轉發HTTP請求的服務。

和路由器原理一樣,路由器除了讓局域網能夠訪問internet,也可以通過設置NAT或端口映射,從internet訪問內部的某臺服務器,相當於把入站請求轉發給指定電腦上,這與IIS的反向代理角色類似。代理服務器與路由器都是起到數據轉發的作用,只不過代理服務器轉發的是某類應用的數據,路由器轉發的是數據包。

3. 部署環境

Asp.Net Core App部署需要操作系統滿足:

  • Windows 7 或更新版本
  • Windows Server 2008 R2 或更新版本

4. 配置IIS

Windows Server上通過“添加角色和功能”,桌面Windows上通過“啟用和關閉Windows功能”來安裝和配置IIS。確保勾選Web服務和“IIS 管理控制臺”:

技術分享圖片

Windows Server IIS 安裝配置

技術分享圖片

桌面Windows IIS 安裝配置

5. 安裝.NET Core Windows Server Hosting程序集

安裝.NET Core Windows Server Hosting程序集,讓IIS具備反向代理功能。該程序集包含了.Net Core運行時(Runtime),.Net Core 類庫(Library)和 Asp.Net Core Module。其中Asp.Net Core Module負責反向代理工作。

特別註意,按微軟官方說法,如果是脫機安裝,則需先手動安裝Microsoft Visual C++ 2015 Redistributable。但實踐證明即使在線安裝很多時候也不會自動安裝 Microsoft Visual C++ 2015 Redistributable,因此強烈建議手動安裝Microsoft Visual C++ 2015 Redistributabl

另外,目前.NET Core版本升級很快,請下載最新版本的.NET Core Windows Server Hosting,確保服務器上的.Net Core版本不低於部署的Asp.Net Core App版本。

下載 Microsoft Visual C++ 2015 Redistributable

下載最新版本.NET Core Windows Server Hosting

安裝完成重啟系統或重啟IIS服務即可。

6. IIS中配置Asp.Net Core App

接下來的步驟與部署傳統網站基本一致,但也有稍許不同,請留意。

1) 服務器中創建目錄存放發布以後的App程序文件,確保App的web.config文件在網站根目錄下。

2) 在網站根目錄創建一個logs文件夾。如果你開啟了某些日誌服務,日誌文件將記錄在這裏。當然也可以不記錄日誌,但初次部署對排錯有幫助,建議創建。

技術分享圖片

web.config 中開啟 stdoutLogEnabled="true"

<aspNetCore processPath="dotnet" arguments=".\Web.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />

3) 在IIS管理器中添加網站。步驟與一般網站配置一致:

技術分享圖片

技術分享圖片

4) 配置應用程序池。在左側導航欄選擇“應用程序池”,選擇指定程序池,右鍵菜單,選擇“基本設置”,將.Net CLR版本設置為“無托管代碼”。

技術分享圖片

7. 測試Asp.Net Core App

本例使用一個測試公網域名www.test.com,顯然我們沒有權限更改此域名在公網的解析記錄,但我們可以更改此域名在本地的指向用於測試。使用記事本打開C:\Windows\System32\Drivers\etc\hosts文件,添加一條記錄 “127.0.0.1 www.test.com”。之後我們在本地訪問域名www.test.com時IP地址將解析為 127.0.0.1。使用瀏覽器打開www.test.com,我們會看到Asp.Net Core App已正常運行:

技術分享圖片

本文來自:https://www.cnblogs.com/lookerblue/p/7101641.html

Windows Server 2008 R2 + IIS 環境部署Asp.Net Core App