介紹好用工具:Web Deployment Tool 1.0 ( 附心得筆記 )

又一個佛心來的工具 Web Deployment Tools,這套工具除了提供基本的 GUI 介面可供站台匯入、匯出外 (如下圖),還提供指令列工具 ( MSDeploy.exe ) 可供 Web Farm 站台間檔案自動同步,可有效簡化多台 IIS 主機站台檔案更新與同步的問題,這對我們在 Web Farm 環境的部署非常實用。不僅僅支援 IIS 7,Web Deployment Tools 還支援 IIS 6 站台的同步,有興趣的人可以試試看。

Web Deployment Tools - 提供基本的 GUI 介面可供站台匯入、匯出

 

安裝 Web Deployment Tools 擴充套件 ( 透過 Web Platform Installer 2.0 )

安裝 Web Deployment Tools 擴充套件 ( 透過 Web Platform Installer 2.0 )

安裝 Web Deployment Tools 擴充套件 ( 透過 Web Platform Installer 2.0 )

 

啟動 Web Deployment Tool 的遠端代理程式服務 ( 為了執行站台同步功能 )

啟動 Web Deployment Tool 的遠端代理程式服務 ( 為了執行站台同步功能 )

備註: 若要定時同步站台,記得將該服務啟動類型調整為「自動」。

測試 Web Deployment Tool 遠端代理程式服務是否正常啟用,可直接連到以下網址測試即可

http://localhost/MSDEPLOYAGENTSERVICE/

服務尚未啟用會回傳 HTTP Error 503. The service is unavailable. 的錯誤畫面 (如下圖)

http://localhost/MSDEPLOYAGENTSERVICE/

如果服務已啟用則會回應 HTTP 500. 但畫面會是一片空白 (如下圖)

http://localhost/MSDEPLOYAGENTSERVICE/

如果你用 Fiddler 查看 HTTP Response Header 的話,會看到如下的內容,其中就有幾行是 MSDeploy 開頭的 Header,這就代表你的服務已經安裝起來了:

HTTP/1.1 500 InternalServerError
Transfer-Encoding: chunked
Server: Microsoft-HTTPAPI/2.0
MSDeploy.Response: v1
MSDeploy.ExceptionTimeStamp: 5245631824043805581
MSDeploy.Exception: H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/Sv.....
Date: Mon, 23 Nov 2009 13:42:41 GMT

0

由於 Web Deployment Tool 的 遠端代理程式服務 預設是透過 IIS 提供服務遠端叫用,而預設路徑就是 /MSDEPLOYAGENTSERVICE/,如需修改請參考 Installing the Web Deployment Tool 的說明。

 

自動同步兩台 IIS 7 的站台內容

透過 Web Deployment Tool 同步多台主機的網站有 4 種方式:

  1. Push ( 將本機的站台同步至遠端主機站台;將本機網站的檔案與設定到遠端主機更新 )
  2. Pull ( 將遠端的站台同步至本機站台;將遠端網站的檔案與設定從遠端回來更新 )
  3. Independent Sync ( 遙控遠端的電腦執行站台同步至另一台遠端電腦 )
  4. Manual Local Sync ( 先將本機站台備份,然後手動將備份檔移至另一台主機,在執行還原程序 )

我的測試環境

  • 來源端電腦:192.168.2.63
  • 目的端電腦:192.168.2.64

步驟一:檢視站台相依性

1. 執行以下指令查詢站台的相依性,你必須確保遠端的站台也有跟本機站台一樣的相依設定才能執行同步

msdeploy -verb:getDependencies -source:apphostconfig="Default Web Site"

其中 Default Web Site 為站台的名稱,如下圖示的回應結果中,其中有個相依設定就是 DefaultAppPool 這個應用程式集區是在使用中的,這也代表需同步過去的目的主機的 IIS 上也必須要有同名的應用程式集區才行,如果有其他相依的設定,也必須一起設定好才行。

msdeploy -verb:getDependencies -source:apphostconfig="Default Web Site"

步驟二:設定目的端電腦

依據步驟一查出的設定,將目的端電腦先設定完成。

步驟三:同步你的站台至目的端電腦

1. 先備份你的 IIS 設定

%windir%\system32\inetsrv\appcmd add backup "PreMsDeployBackup"

2. 安裝遠端代理程式服務 ( 預設透過 Web PI 2.0 會自動安裝 )

3. 啟動遠端代理程式服務 ( 如果你打算用 Push 模式做站台同步,你必須在目的端電腦啟動該服務 )

4. 測試同步命令是否能正常執行

Push 同步模式:在「來源端」執行以下指令 ( 備註: 以下指令為一行,輸入時請不要斷行 )

msdeploy -verb:sync -source:apphostconfig="Default Web Site" 
-dest:apphostconfig="Default Web Site",computername=192.168.2.64 –whatif

如果成功執行,畫面會顯示變更的摘要資訊(但並沒有真正執行同步動作,因為 -whatif 參數)

如果成功執行,畫面會顯示變更的摘要資訊(但並沒有真正執行同步動作,因為 -whatif 參數)

Pull 同步模式:在「目的端」執行以下指令 ( 備註: 以下指令為一行,輸入時請不要斷行 )

msdeploy -verb:sync -source:apphostconfig="Default Web Site",computername=192.168.2.63
-dest:apphostconfig="Default Web Site" -whatif

5. 如果上一步驟都測試無誤,即可重新執行一次指令,只要將 -whatif 參數拿掉即可。

 

如果因為防火牆問題無法執行遠端連線同步,也可用 Manual Local Sync 方式先將站台匯出:

msdeploy -verb:sync  -source:apphostconfig="Default Web Site" -dest:archivedir=c:\site1archive

然後將 c:\site1archive 整個目錄複製到目的端

然後一樣先驗證同步作業是否會成功 ( 備註: 以下指令為一行,輸入時請不要斷行 )

msdeploy -verb:sync -source:archivedir=c:\site1archive 
-dest:apphostconfig="Default Web Site" -whatif

若沒問題,則移除 -whatif 參數執行同步作業

msdeploy -verb:sync -source:archivedir=c:\site1archive -dest:apphostconfig="Default Web Site"

 

相關連結

  

此文章由 will 發表於 2009/11/23 下午 10:55:55

永久連結 | 評論 (10) | 此文章的RSSRSS comment feed |

分類: 系統管理 | 介紹好用工具 | IIS

標籤: , , ,

收藏:

相關文章

評論

十一月 24. 2009 16:05

JamesX

請問GUI的匯入匯出介面只有支援IIS7嗎?

如果是IIS6的話在那裡可看到第一張圖片的功能?

JamesX tw

十一月 24. 2009 16:06

Will 保哥

Jamesx: IIS 6 應該沒有 GUI 介面。

Will 保哥 tw

十一月 24. 2009 19:46

ronald

如果是對於已經架設好的站台進行同步,那真的很方便

要是想利用這種方式來架新的站台,感覺只是輕鬆"一點"

除非是使用"伺服器封裝"匯出與匯入

另外像
使用者帳號的新增、網站元件的安裝、服務的設定、host設定
這些跟IIS無關的設定,還是得自己來


ronald

十一月 25. 2009 11:20

dan0605

我記得在今年TECH DAY某一個場次時介紹是可以連同網站的設定當,元件及SSL這些東西都可以包起來,然後佈暑到別到機器上呢.還是我記錯了?@@

另想請教保哥,不知這個佈暑工具,可以只針對部份內容做同步嗎?因為如果站台粉大,那每天包一大包在同步..很可怕呢...還是只是第一次佈暑用這個方式,之後就要另外想辦法了?

dan0605

十一月 25. 2009 12:55

Will 保哥

dan0605:
跟 IIS 站台相關的設定都會一併同步過去喔,除此之外都要手動先在"目的電腦"設定好。

第一次同步完成後,之後的同步只會更新「差異檔」,不會每次都整個包成一大包過去。

Will 保哥 tw

十一月 25. 2009 13:32

dan0605

唷,那很有幫助呢!

dan0605

十一月 26. 2009 21:02

ronald

我試著操作這段關於401的說明
blogs.iis.net/.../...g-common-msdeploy-issues.aspx
但是不成功

ronald

十一月 27. 2009 00:08

Will 保哥

ronald:
你有試著在「目的電腦」將要同步更新的目錄加上 "NT Service\WMSvc" 這個系統帳戶的 讀/寫 權限嗎?

Will 保哥 tw

十一月 27. 2009 11:56

ronald

解決了!

使用userName=administrator 以外的帳號進行同步時,如果發生以下錯誤

Error: Could not complete the request to remote agent
URL 'http://192.168.2.73/MSDEPLOYAGENTSERVICE" rel="nofollow">http://192.168.2.73/MSDEPLOYAGENTSERVICE'.
Error: The remote server returned an error: (401) Unauthorized.
Error count: 1.

錯誤: 無法完成對遠端代理程式 URL 'http://192.168.2.73/MSDEPLOYAGENTSERVICE" rel="nofollow">http://192.168.2.73/MSDEPLOYAGENTSERVICE' 的要求。
錯誤: 遠端伺服器傳回一個錯誤: (401) 未經授權。
錯誤計數: 1。

我參考了以下兩篇,都有提到關於UAC user account control

http://forums.iis.net/t/1155558.aspx
http://forums.iis.net/t/1152810.aspx

我把UAC關掉後就可以使用其他的帳號進行同步了

我的測試的帳號具有 Administrator 權限

msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:apphostconfig="Default Web Site",computername=192.168.2.73,userName=testdeploy,password=test123 –whatif

我現在在想的是,如果該電腦因為政策問題不可關閉 UAC 的話該怎麼辦...

ronald

十二月 1. 2009 09:27

ronald

上論壇發問的結果

http://forums.iis.net/t/1163014.aspx


ronald

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

二月 9. 2010 20:13