[IIS] 在目標主機上的IIS建立發佈檔,並讓Visual Studio透過匯入發佈檔的方式將程式佈署至主機IIS上

最近有個需求,需要讓工程師能夠很方速且方便的將程式佈署到虛擬主機中的IIS站台上
稍微研究了一下,發現了一個很快速方便的方法,實作步驟也很簡單
但是看似簡單的底下,實作步驟的順序卻很重要

要讓Visual Studio可以快速的發佈程式至目標主機上的IIS站台,主機上必須進行一些設定,順序很重要,按照下面的步驟一步一步執行即可

1.在要部署的目標主機上,點選伺服器管理,並加入[網頁伺服器 (IIS)]的伺服器角色

2.接著,在伺服器功能上,請一定要安裝[.NET Framework 3.5],以及[ASP.NET 4.7]

3.再下一步,安裝網頁伺服器角色服務的部份,請把 [IIS 管理指令碼及工具] 與 [管理服務] 勾選起來並安裝

4.網頁伺服器(IIS)的角色與服務安裝完成後,開啟 [Internet Information Services (IIS) 管理員],並點選右方的 [取得新的網頁平台元件]

5.此時,會開啟網頁平台元件的下載頁面,點選右方的 [Install this extension] 就可以下載 [Web Platform Installer] 這個套件

6.下載完成後,直接點選進行安裝的動作

7.安裝完成後,開啟剛剛完成安裝的 [Microsoft Web Platform Installer]

8.在 [應用程式] 的頁籤中找出 [Web Deploy 3.6 for Hosting Servers] 這個應用程式,並點選 [新增],將這個服務安裝到伺服器上

9.可以再確認一下,要安裝的元件項目,並按下 [我接受] 的按鈕進行安裝動作

10.安裝完成後,確認一下服務中 [Web Deploument Agent Service] 以及 [Web management Service] 兩個服務是不是都安裝好並執行中

到這邊,安裝套件的動作就完成了,接下來要進行IIS上的設定,並產生部署設定檔。
要產生部署設定檔的方式很簡單,照著下面的步驟執行即可

1.開啟IIS,並在要發行部署檔的站台上按下右鍵,並選擇 [部署] => [啟用Web Deploy 發行]

2.在跳出來的視窗中,有幾個項目必須設定。第一個欄位是要選擇授予發行權限的使用者,若是擔心Administrator的權限過大,則可以另外新增一個帳號作為發佈檔案用。[發行伺服器連線的URL]預設是伺服器主機名稱,建議更改為IP,若是網路環境中沒有DNS或是WINS的話,主機名稱就無法使用了。當完成內容編輯後,就可以按下下方的 [設定] 產出發佈檔

3.在拿到發佈檔後,先透過文字編輯器打開這個發佈檔。由於產出的發佈檔中並不會包含帳號登入用的密碼,所以必須要自己手動增加。除非說你喜歡每次發佈時都自己手動輸入密碼,不然將密碼先放在發佈檔中是比較方便的

<?xml version="1.0" encoding="utf-8"?>
<publishData>
  <publishProfile
    publishUrl="https://172.19.213.192:8172/msdeploy.axd"
    msdeploySite="Default Web Site"
    
    
    <!-- 目標的主機網址與Port號,請在這裡變更為可識別的IP或是DNS名稱,預設為主機名稱 -->
    destinationAppUrl="http://172.19.213.192:80/"
    
    mySQLDBConnectionString=""
    SQLServerDBConnectionString=""
    profileName="Default Settings"
    publishMethod="MSDeploy"
    
    <!-- 可以在這裡手動輸入發佈用帳號的密碼 -->
    userPWD="在這裡輸入登入帳號的密碼"
    
    userName="WIN-139N1I4UHQO\Administrator" />
</publishData>

4.到這邊發佈檔也準備好了,可以開啟Visual Studio想要發佈到IIS站台的專案,並在專案上按右鍵,點選 [發佈] 的功能

5.在發佈視窗中,點選 [匯入設定檔]

6.將剛剛發佈出來並修改好的檔案點選,並完成匯入動作

7.按下發佈後,會跳出是否要信任該伺服器,記得下面的勾要打起來,不然每次發佈都會再跳出來詢問一下

8.發佈完後,就成功的將專案檔案部署到主機上了

這種快速部署的方式,大大縮減了要更新程式所需要花費的人力與時間。有別於以往都要透過檔案複製、FTP上傳、或是遠端桌面等等的模式,能夠一鍵就將應用程式發佈到IIS站台上實在是太方便了

伺服器的 Port 8172 請一定要開通,不然無法發佈到伺服器上