The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何使用 Visual Studio 2010 的「單鍵發行」功能 (MsDeploy)

以往在部署網站的時候都有許多手動的步驟需介入,對於許多對 IIS / SQL 不太熟悉的新手來說部署網站變成一件非常困難且危險的事。這次 Visual Studio 2010 對於 ASP.NET 網站部署的能力大大的提升,它透過 Web Deploy API 直接與 IIS 溝通,可在發行的同時除了將網站安裝進 IIS 之外,還可以設定目錄權限、變更 web.config 內容、建立應用程式、應用程式集區、IIS 細部設定、安裝組件進 GAC、安裝憑證、設定機碼、建立資料庫、…. 等,非常強大的部署機制且與 IIS7 完美整合。

備註:我指的危險是指資安方面的風險,因為設定不成功就會開始亂設權限,例如:將目錄設定成 Everyone 可讀寫 等等。

Visual Studio 2010 更提供了 [ Web 單鍵發行 ] 工具列,在設定好「發行設定檔」之後就可以真的用「單鍵」將網站安裝或更新完成,非常的神奇且好用,以下就是使用的方式。

要使用 Visual Studio 2010 Web 單鍵發行功能,必須先在 IIS 所在主機安裝 Web Deployment Tool,然後在進一步設定才能透過 Microsoft Web Deployment Tool (MsDeploy) 發行/部署網站。

若要透過 IIS 管理服務 ( IIS Web Management Service ) (WMSvc) 部署至本機 IIS7,則還必須先安裝「IIS 管理服務」才能使用。

Windows 7 需透過 [ 開啟或關閉 Windows 功能 ] 安裝「IIS 管理服務

Windows Server 2008 需透過 [ 網頁伺服器(IIS) ] 安裝「管理服務」這個角色服務

若要啟用「遠端部署」則還必須啟用 Web Deployment Agent Service 服務才能正常運作。

IIS7

若在 Windows 7 使用 Web Platform Installer 預設不會安裝 Web Deployment Agent Service,你必須手動安裝 MSI 檔的方式才會安裝進去,安裝步驟請參見 Installing Web Deploy 說明。

IIS6

接著我們來到 Visual Studio 2010 設定 [ Web 發行 ] 的「發行設定檔」( 記得先開啟網站專案才能用 )

如果沒看見 [ Web 單鍵發行 ] 工具列,可以在工具列的地方按下滑鼠右鍵選取 [Web 單鍵發行] 即可:

先設定一組發行的名稱

設定以下參數並按下 [儲存] 或 [發行] 按鈕:

以上參數分項說明如下:

1. 發行方法:選擇 Web 部署

2. 服務 URL:這裡的服務 URL 有 3 種格式:

  • 輸入 IP 或 網址,例如:localhost192.168.2.116
    • 遠端部署時,網址會自動展開成 https://192.168.2.116:8172/msdeploy.axd?site=站台名稱
    • 這種格式一定會要求使用 SSL 連線,如果沒有安裝 SSL 憑證的 IIS 將無法成功安裝
    • 這種網址格式預設會透過 The Web Management Service (WMSvc) Handler 進行部署
    • 僅 Windows Server 2008 上的 IIS7 才提供此功能
  • 輸入 URL 網址,例如:http://localhosthttp://stage.example.com
    • 遠端部署時,網址會自動展開成 http://stage.example.com/MSDEPLOYAGENTSERVICE/
    • 這種網址格式預設會透過 Web Deployment Agent Service 進行部署
  • 輸入完整 URL 網址,例如:http://localhost/MsDeploy.axd

若要發行至本機,上述三種任何一種都可以,只要網址是 localhost 即可。

3. 網站/應用程式:這裡有特定格式:

  • 在第一個斜線 ( / ) 之前代表的是 站台名稱,其 站台名稱 必須已經存在 IIS 中才能安裝
  • 後面就是站台下的虛擬目錄或應用程式路徑,而 虛擬目錄或應用程式路徑 不一定要輸入。

4. 網站/應用程式:若要將安裝的網站需要轉換成「應用程式」則必須要勾選此選項。

---

發佈成功後,下次要再發佈網站就可以使用「單鍵發行」的功能了:

當你第一次發行過後,你將會發現之後的發行速度都會飛快,那是因為他只會發行更新過的檔案,非常棒吧!若要多瞭解 Web Deployment Tool 可以參考以下相關連結或我之前發表過的文章

備註事項

  • 雖然 Web Deployment Tool 有支援 IIS6 遠端部署,可是部署時的檢查項目並沒有比 IIS7 來的多,經測試,如果你的 ASP.NET 4.0 網站要部署時,若網站發行到 IIS7 時會檢查目的站台的應用程式集區是否使用 .NET Framework 4 版本,如果不是則會發行失敗;若網站發行到 IIS6 時則不會做這個檢查,網站應用程式會安裝完成,但可能會因為沒有正確設定應用程式集區或沒有安裝 .NET Framework 4.0 而無法執行。
  • 若要在 Windows Server 2008 上的 IIS7 啟用「管理服務」的遠端連線可參考以下圖示:


  • 在設定「管理服務」的時候必須先暫時停用 Web Management Service 服務才能變更設定
  • 若要透過「管理服務」進行遠端部署時,若遠端主機 IIS 上的憑證是使用「自我簽署憑證」的,那可能必須勾選「允許未受信任的憑證」選項才能成功部署。


    如果沒有勾選可能會出現以下錯誤:
  • 無法完成對遠端代理程式 URL 'https://stage.example.com:8172/msdeploy.axd?site=TEST' 的要求。
    基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係。
    根據驗證程序,遠端憑證是無效的。
    無法部署發行。

 

相關連結