[DevOps自動化-4] Web Deploy部署網站

透過Web Deploy部署MVC網站,含Window Server相關設定

前言

以前部署應用程式,往往是開發人員程式開發好之後,寫一份書面的文件,描述有哪些檔案需要修改,接著由主機部署人員根據文件的內容來做更新。但這樣的方式,難免會存在雙方對文件的誤解,尤其是人為操作一定會有失誤。即使雙方都很小心,做到完全零失誤,但在現今凡事都講求自動化的時代,尤其是企業部署,動輒數個站點需要部署,傳統的部署方式很明顯被時代的潮流所淘汰。

 

Window Server 啟用功能

伺服器角色要勾選Web 服務器功能(IIS),並且記得要勾選ASP.NET 4.5。

功能的部分要額外勾選HTTP激活。

以下是確認畫面,沒問題就直接按安裝。

Web Deploy功能啟用

為了解決惱人的部署問題,微軟提供了Web Deploy的解決方案,讓麻煩的設定組態動作交由Web Deploy Engine提供的Configuration Provider來處理。簡單來說,Web Deploy的角色可以想像成是一個溝通的橋樑,降低部署人員和開發人員間的溝通成本,讓部署人員可以不用關心組態設定也能輕易的部署網站。

那麼就直接進入正題,來做Web Deploy功能的安裝與啟用吧。首先,打開IIS,可以看到Web 平台安裝程序(Web Platform Installer),如下圖所示,請直接點擊兩下。

在搜尋框內搜尋"Web Deploy",並且安裝紅色框內的功能。

安裝完成後,請先關掉IIS再重新開啟,就可以看到在管理的區塊內會多了一些功能,如下圖所示。

安裝完畢後,接下來再做一些設定,首先設定IIS管理器權限。

設定允許的用戶。

一般不會使用Administrator擔任發布帳號,這個只是概念驗證的主機,所以就不太計較。

接下來啟用遠端功能,點選IIS伺服器,點選管理區塊的管理服務,會彈出下面視窗並勾選啟用遠程連接。

接下來啟用Web Deploy發布,如下圖所示。

這個設定主要是授予選定的用戶(本文範例是Administrator)有Web目錄的相關權限。

到這裡Server端的設定已經大功告成。點左下角視窗輸入services.msc,做最後確認,可參考下圖,紅色框的服務需確定要啟動中。

透過Web Deploy發布到主機

這部分就相對簡單了,打開地表最強開發工具,新增一個Project,選擇ASP.NET Web Application,選擇MVC按下OK,專案建立完成。接著對著專案點擊右鍵,點選Publish。

點選Custom,輸入Profile名稱(自訂),接著按下一步。

Server是剛剛安裝的Window Server IP,Site name是想要發布的IIS目標的網站名稱+虛擬目錄名稱,User name和Password是剛剛設定IIS管理器權限所允許的用戶的帳密,都設定完畢後點選Validate Connection會得到一個綠色的勾勾。

如果出現下列錯誤畫面,且也確認主機名稱都正常,就勾選Save this certificate並且按下Accept。

如果有相關的Config設定,Web Deploy有內建很多的Configuration Provider可以協助封裝Configuration,當然也支援自訂的Provider,直接按下Next按鈕,就會前往設定畫面;假設沒有Config要設定的話直接按Publish就會發布網站。

在output視窗,可以清楚看到發布的情形,如果虛擬目錄不存在,還會自動幫你建立,之後就會把相關檔案Add進去,可參考下面圖示。

相關的Web Deploy設定檔會產生在專案下的Properties資料夾內,包含.pubxml(封裝相關設定)和.pubxml.user(封裝,密碼會加密)兩個檔案。

 

小結

本章節主要探討內容如下

  1. Window  Server需安裝哪些服務以及相關設定,使其支援Web Deploy
  2. 透過IDE工具,Publish站點到對應的Server
  3. 最後還有一個伏筆,所有透過IDE設定的東西會產生兩個檔案分別是.pubxml和.pubxml.user

接下來會慢慢再深入探討如何透過.pubxml和.pubxml.user將發布流程結合CI工具,達到自動化部署的功能。