設定 Web Deploy 發行的網頁伺服器 (遠端代理程式)
演講者:Jason Lee
本主題介紹如何使用 IIS Web Deployment Tool (Web Deploy) 遠端代理服務設定網際網路資訊服務 (IIS) Web 伺服器以支援 Web 發佈和部署。
當您使用 Web Deploy 2.0 或更高版本時,可以使用三種主要方法將應用程式或網站部署到 Web 伺服器上。 您可以:
- 使用 Web 部署遠端代理服務。 此方法需要較少的 Web 伺服器設定,但您需要提供本機伺服器管理員的憑證才能將任何內容部署到伺服器。
- 使用 Web 部署處理常式。 這種方法要複雜得多,並且需要更多的初始工作來設定 Web 伺服器。 但是,當您使用此方法時,您可以將 IIS 設定為允許非管理員使用者執行部署。 Web 部署處理常式僅在 IIS 版本 7 或更高版本中可用。
- 使用離線部署。 此方法需要最少的 Web 伺服器設定,但伺服器管理員必須手動將 Web 套件複製到伺服器上並透過 IIS 管理員匯入。
有關這些方法的主要功能、優點和缺點的更多資訊,請參閱「選擇正確的 Web 部署方法」。
Web 部署遠端代理程式是適合您的方法嗎?
是的,如果將部署內容的使用者可以提供目標伺服器上管理員的憑證。 在以下類型的情境中通常需要這種方法:
- 開發或測試環境,開發人員可以完全控制目標 Web 伺服器和資料庫伺服器。
- 較小的組織,其中單一使用者或一小群使用者可以控制整個應用程式生命週期。
在許多大型組織中,特別是在預備或生產環境中,為使用者授予 Web 伺服器管理員權限通常是不切實際的。 對於託管網路伺服器來說,這種情況尤其不可能發生。 此外,如果您打算從建置伺服器自動進行部署,您可能不希望在部署程序中使用管理員憑證。 在這些情況下,設定 Web 伺服器以支援使用 Web 部署處理常式進行部署可能是一個更令人滿意的選擇。
任務概述
本主題說明如何使用 Web 部署遠端代理程式方法設定網際網路資訊服務 (IIS) 7.5 Web 伺服器以接受和部署來自遠端電腦的 Web 套件。 您需要:
- 安裝 IIS 7.5 和 IIS 7 建議設定。
- 安裝 Web 部署 2.1 或更高版本。
- 建立 IIS 網站來託管部署的內容。
- 確保 Web 部署代理服務正在執行。
要專門託管範例解決方案,您還需要:
- 安裝.NET Framework 4.0。
- 安裝 ASP.NET MVC 3。
本主題將示範如何執行其中每個流程。 本主題中的任務和演練假設您從執行 Windows Server 2008 R2 的乾淨伺服器版本開始。 在繼續之前,請確保:
- Windows Server 2008 R2 Service Pack 1 與所有可用更新已安裝。
- 伺服器已加入網域。
- 伺服器有一個靜態IP位址。
注意
有關將電腦加入網域的詳細資訊,請參閱「將電腦加入網域並登入」。 有關設定靜態 IP 位址的詳細資訊,請參閱「設定靜態 IP 位址」。 IIS 6 以上版本支援遠端代理服務,且不需要您加入網域。 但是,本教學課程中的步驟是在 IIS 7.5 上開發和測試的,其他版本的流程可能會有所不同。
安裝產品和組件
本部分將指導您在 Web 伺服器上安裝所需的產品和元件。 在開始之前,一個很好的做法是執行 Windows Update 以確保您的伺服器完全是最新的。
在這種情況下,您需要安裝這些東西:
- IIS 7 建議設定。 這將在您的 Web 伺服器上啟用 Web 伺服器 (IIS) 角色,並安裝託管 ASP.NET 應用程式所需的一組 IIS 模組和元件。
- .NET Framework 4.0。 這是執行在此版本的 .NET Framework 上建立的應用程式所必需的。
- Web Deployment Tool 2.1 或更高版本。 這將在您的伺服器上安裝 Web 部署 (及其底層可執行檔 MSDeploy.exe)。 作為此程序的一部分,它會安裝並啟動 Web 部署代理服務。 此服務可讓您從遠端電腦部署 Web 套件。
- ASP.NET MVC 3。 這將安裝執行 MVC 3 應用程式所需的程序集。
注意
本演練說明如何使用 Web Platform Installer 來安裝和設定所需的元件。 儘管您不必使用 Web 平台安裝程序,但它會透過自動偵測依賴項並確保您始終獲得最新的產品版本來簡化安裝過程。 有關詳細資訊,請參閱「Microsoft Web Platform Installer 3.0」。
要安裝所需的產品和元件
下載並安裝 Web Platform Installer。
安裝完成後,Web Platform Installer 將自動啟動。
注意
現在,您隨時可以從「開始」功能表啟動 Web Platform Installer。 為此,請在「開始」功能表上按一下「所有程式」,然後按一下「Microsoft Web Platform Installer」。
在 Web Platform Installer 3.0 視窗頂部,按一下「產品」。
在視窗左側的導覽窗格中,按一下「Frameworks」。
在 Microsoft .NET Framework 4 行中,如果尚未安裝 .NET Framework,請按一下「新增」。
注意
您可能已經透過 Windows Update 安裝了 .NET Framework 4.0。 如果產品或元件已安裝,Web Platform Installer 將透過將「新增」按鈕替換為「已安裝」文字來指示這一點。
在 ASP.NET MVC 3 (Visual Studio 2010) 行中,按一下「新增」。
在導覽窗格中,按一下「伺服器」。
在「IIS 7 建議設定」行中,按一下「新增」。
在「Web Deployment Tool 2.1」行中,按一下「新增」。
按一下 [安裝]。 Web Platform Installer 會顯示要安裝的產品清單以及任何關聯的依賴項,並提示您接受授權條款。
查看授權條款,如果您同意這些條款,請按一下「我接受」。
安裝完成後,按一下「完成」,然後關閉「Web Platform Installer 3.0」視窗。
如果在安裝 IIS 之前安裝了 .NET Framework 4.0,則需要執行 ASP.NET IIS 註冊工具 (aspnet_regiis.exe) 以向 IIS 註冊最新版本的 ASP.NET。 如果不這樣做,您會發現 IIS 將毫無問題地提供靜態內容 (如 HTML 檔案),但當您嘗試瀏覽 ASP.NET 內容時,它將傳回 HTTP Error 404.0 – Not Found。 您可以使用此程序來確保 ASP.NET 4.0 已註冊。
要將 ASP.NET 4.0 註冊到 IIS
按一下「開始」,然後鍵入 Command Prompt。
在搜尋結果中,以滑鼠以滑鼠右鍵按一下「Command Prompt」,然後按一下「以管理員身分執行」。
在命令提示字元視窗中,導覽至 %WINDIR%\Microsoft.NET\Framework\v4.0.30319 目錄。
鍵入此命令,然後按 Enter:
aspnet_regiis -iru
如果您打算隨時託管 64 位元 Web 應用程式,則您也應該向 IIS 註冊 64 位元版本的 ASP.NET。 為此,請在命令提示字元視窗中導覽至 %WINDIR%\Microsoft.NET\Framework64\v4.0.30319 目錄。
鍵入此命令,然後按 Enter:
aspnet_regiis -iru
最佳做法是,此時再次使用 Windows 更新來下載並安裝已安裝的新產品和元件的任何可用更新。
設定 IIS 網站
在將 Web 內容部署到伺服器之前,您需要建立並設定 IIS 網站來託管該內容。 Web Deploy只能將Web套件部署到現有的IIS網站上;它無法為您建立網站。 在較高層級上,您需要完成以下任務:
- 在檔案系統上建立一個資料夾來託管您的內容。
- 建立一個 IIS 網站來提供內容,並將其與本機資料夾關聯。
- 授予對本機資料夾上的應用程式集區標識的讀取權限。
儘管沒有什麼可以阻止您將內容部署到 IIS 中的預設網站,但不建議將這種方法用於測試或演示方案以外的任何情況。 要模擬生產環境,您應該建立一個新的 IIS 網站,其中的設定特定於您的應用程式的要求。
要建立和設定 IIS 網站
在本機檔案系統上,建立一個資料夾來儲存您的內容 (例如,C:\DemoSite)。
在「開始」功能表上,指向「管理工具」,然後按一下「網際網路資訊服務 (IIS) 管理員」。
在 IIS 管理員的「連線」窗格中,展開伺服器節點 (例如,TESTWEB1)。
以滑鼠以滑鼠右鍵按一下「網站」節點,然後按一下「新增網站」。
在「網站名稱」方塊中,鍵入 IIS 網站的名稱 (例如 DemoSite)。
在「實體路徑」方塊中,鍵入 (或瀏覽至) 本機資料夾的路徑 (例如,C:\DemoSite)。
在「連接埠」方塊中,鍵入要託管網站的連接埠號碼 (例如 85)。
注意
HTTP 的標準連接埠號碼為 80,HTTPS 的標準連接埠號碼為 443。 但是,如果您將此網站託管在連接埠 80 上,則需要先停止預設網站,然後才能造訪您的網站。
將「主機名稱」方塊保留為空,除非您要為網站設定網域名稱系統 (DNS) 記錄,然後按一下「確定」。
注意
在生產環境中,您可能想要在連接埠 80 上託管您的網站並設定主機標頭以及相符的 DNS 記錄。 有關在 IIS 7 中設定主機標頭的詳細資訊,請參閱「為網站設定主機標頭 (IIS 7)」。 有關 Windows Server 2008 R2 中 DNS 伺服器角色的詳細資訊,請參閱「DNS 伺服器概述」。
在 [ 動作 ] 窗格的 [ 編輯站台] 下方,按一下 [ 繫結]。
在 [站台繫結] 對話方塊中,按一下 [新增] 。
在「新增網站繫結」對話方塊中,設定 IP 位址和連接埠以符合您現有的網站設定。
在「主機名稱」方塊中,鍵入 Web 伺服器的名稱 (例如,TESTWEB1),然後按一下「確定」。
注意
第一個網站繫結可讓您使用 IP 位址和連接埠或
http://localhost:85
在本機存取網站。 第二個網站繫結可讓您使用電腦名稱從網域中的其他電腦存取該網站 (例如,http://testweb1:85).在 [站台繫結] 對話方塊中,按一下 [關閉] 。
在 [連線] 窗格中,按一下 [應用程式集區]。
在「應用程式集區」窗格中,以滑鼠以滑鼠右鍵按一下應用程式集區的名稱,然後按一下「基本設定」。 預設情況下,應用程式集區的名稱將與您的網站名稱相符 (例如,DemoSite)。
在「.NET Framework 版本」清單中,選擇「.NET Framework v4.0.30319」,然後按一下「確定」。
注意
範例解決方案需要 .NET Framework 4.0。 一般來說,這不是 Web 部署的要求。
為了讓您的網站提供內容,應用程式集區識別必須對儲存內容的本機資料夾具有讀取權限。 在 IIS 7.5 中,應用程式集區預設使用唯一的應用程式集區識別運作 (與先前版本的 IIS 不同,應用程式集區通常使用網路服務帳戶執行)。 應用程式集區標識不是真正的使用者帳戶,也不會顯示在任何使用者或群組清單中,而是在應用程式集區啟動時動態建立。 每個應用程式集區識別都會以隱藏項目新增至本機 IIS_IUSRS 安全性群組。
若要向檔案或資料夾上的應用程式集區標識授予權限,您有兩種選擇:
- 使用 IIS AppPool[應用程式集區名稱] 格式直接向應用程式集區識別指派權限 (例如,IIS AppPool\DemoSite)。
- 向 IIS_IUSRS 群組分配權限。
最常見的方法是將權限指派給本機 IIS_IUSRS 群組,因為此方法可讓您變更應用程式集區而無需重新設定檔案系統權限。 下一個程序使用這種基於群組的方法。
注意
有關 IIS 7.5 中應用程式集區識別的詳細資訊,請參閱「應用程式集區識別碼」。
要設定 IIS 網站的資料夾權限
在 Windows Explorer 中,瀏覽至本機資料夾的位置。
在資料夾上按一下滑鼠右鍵,然後按一下 [內容]。
在「安全性」標籤上,按一下「編輯」,然後按一下「新增」。
點選位置。 在「位置」對話方塊中,選擇本機伺服器,然後按一下「確定」。
在「選擇使用者或群組」對話方塊中,鍵入 IIS_IUSRS,按一下「檢查名稱」,然後按一下「確定」。
在「 (資料夾名稱) 的權限」對話方塊中,請注意預設已為新群組指派了「讀取&執行」、「列出資料夾內容」和「讀取」權限。 將其保持不變,並按一下「確定」。
按一下「確定」關閉 (資料夾名稱) 屬性對話方塊。
作為嘗試將任何 Web 套件部署到伺服器之前的最後一項任務,您應該確保 Web 部署代理服務正在執行。 當您從遠端電腦部署套件時,Web 部署代理服務負責提取和安裝套件的內容。 當您安裝 Web Deployment Tool 時,該服務預設會啟動,並以網路服務識別執行。
您可以使用各種命令列公用程式或 Windows PowerShell cmdlet 檢查服務是否以多種不同的方式運作。 此程序描述了一種簡單的基於 UI 的方法。
要檢查 Web 部署代理服務是否正在執行
在 [開始] 功能表上,指向 [系統管理工具] ,然後按一下 [服務] 。
找到「Web 部署代理服務」行,並確認「狀態」是否設定為「已啟動」。
如果該服務尚未啟動,請按一下「啟動」。
設定防火牆例外狀況
預設情況下,遠端代理服務偵聽 TCP 連接埠 80,網址為:
http://servername.com/MSDEPLOYAGENTSERVICE
在大多數情況下,您不需要為遠端代理服務設定任何其他防火牆規則,因為 Web 伺服器通常會在連接埠 80 上偵聽 HTTP 請求。 如果您將安裝自訂為偵聽非標準端口,則需要根據需要設定防火牆例外狀況。
結論
此時,您的 Web 伺服器已準備好接受並安裝來自遠端電腦的 Web 套件。 在嘗試將 Web 應用程式部署到伺服器之前,您可能需要檢查以下要點:
- 您是否已向 IIS 註冊了 ASP.NET 4.0?
- 應用程式集區標識是否具有對您網站的來源資料夾的讀取存取權?
- Web 部署代理程式服務是否正在執行?
深入閱讀
如需如何設定自訂 Microsoft Build 引擎 (MSBuild) 專案檔案以將 Web 套件部署至遠端代理服務的指南,請參閱「設定目標環境的部署屬性」。