2017年11月28日 星期二

如何透過Web Deploy工具進行網站的轉移 - 舊版網站轉換(IIS6 -> IIS7 Up)

常見的當我們要進行網站的昇級、搬移或同步時,常需要將原先的網站同步到其他台的電腦上,所以本篇透過Web Deploy的工具整理一些常見的情況來說明如下,後續上如有遇到的話,也可以藉以參考,直接使用。

由於章節過多,所以我將此Web Deploy的部份分成幾個章節進行說明。在進行說明前,由於需要進行網站ID的設定,所以先說明在IIS上,該如何找到自已所需的ID編號,如下圖,點選站台後,即可看到。

識別方式:

舊版網站轉移:
目前在Windows 2003上,其實有下列的工具(IEMT)可以進行轉換,工具的使用方法很簡單,所以就不特別介紹,但有時候可能會發生無法轉換的情況,所以這時候就是將Web Deploy拿出來用的時候了。

轉換工具:
IIS Easy Migration Tool (IEMT)
https://www.iis.net/downloads/community/2013/04/iis-easy-migration-tool-iemt

在安裝上,由於Win2003只能安裝舊版本,在測試上只能安裝Web Deploy 1.1的版本。

工具下載:
1、Web Deploy 1.1(for Win2003):

在安裝後,請先確認下列的事項:
1、Web Deployment Agent Service是否有啟動。
2、由於彼此是透過Port 80進行,所以請確認是否有開啟。
3、如果要透過二台電腦直接進行同步時,請確認執行的身份,建議可以透過Domain Account進行。

執行同步方式:
1、登入目的端電腦。
2、開啟Dos Command視窗,切換到 C:\Program Files\IIS\Microsoft Web Deploy
3、輸入下列的指令:
msdeploy -verb:sync -source:metakey=lm/w3svc/1,computername=cary-srcweb -dest:metakey=lm/w3svc/1 -enableLink:AppPoolExtension -verbose
上述的指令在目的端電腦執行時,會將來源端的電腦(cary-srcweb)IIS站台中的ID編號1的站台,同步到目的端的ID編號1的站台上,-enableLink:AppPoolExtension會確認當AppPool不存在時,會自動建立,最後-verbose主要是指定執行過程中會輸出詳細的執行過程。

另外你也可以透過封存的方式進行,先將來源端上的網站封存成一個壓縮檔,然後再到目的地端上進行還原的動作。

執行封存的方式:
1、登入來源端電腦。
2、開啟Dos Command視窗,切換到 C:\Program Files\IIS\Microsoft Web Deploy
3、輸入下列的指令:
msdeploy -verb:sync -source:metakey=lm/w3svc/1 -dest:package=c:\share\20170524weblist.zip,encryptPassword=12345 -enableLink:AppPoolExtension -verbose

還原封存的方式:
1、登入目的端電腦。
2、開啟Dos Command視窗,切換到 C:\Program Files\IIS\Microsoft Web Deploy
3、輸入下列的指令:
msdeploy -verb:sync -source:package=c:\share\20170524weblist.zip -dest: metakey=lm/w3svc/1,encryptPassword=12345 -enableLink:AppPoolExtension -verbose

參考網址:
Synchronize IIS 6.0 Web Sites
https://docs.microsoft.com/en-us/iis/publish/using-web-deploy/synchronize-iis-60-web-sites
Migrate a Web Site from IIS 6.0 to IIS 7 or above
https://docs.microsoft.com/en-us/iis/publish/using-web-deploy/migrate-a-web-site-from-iis-60-to-iis-7-or-above

2017年11月17日 星期五

網頁執行錯誤HTTP 500.19 - 解決方法


最近遇到客戶反應,當網頁的使用者過多時,尤其是特定的時段,網頁會發生HTTP 500的錯誤,在進一步的確認後發現初步的問題如下。

從下列的錯誤來看,其實可以看到已有提到可以有參考的KB,而且也有詳細的錯誤,找一下Google大神後,你會找到不少的文章與解決方法,但如果真的這麼簡單的話,我也不會寫下這篇文章了,其實在我嘗試了不同網站寫的方法後,其實都無法解決,而且最重的事如果你照著設定的話,你會發生系統會發生問題,無法進行檔案分享,而且關機時會無法正常進行,如下列的畫面。

就因為如此,所以我才特別整理此篇文章,希望大家可以藉以解決此問題。

錯誤訊息:
[From Web Page]

[From Failed Request Tracing Log]

[From Event Log]
Event Level:Error
Source:ASP.NET 4.0.30319.0
Event ID:1185
Message:Failed to start monitoring changes to '\\caryhsu\my_fav\video' because the network BIOS command limit has been reached. for more information on this error, please refer to Microsoft knowledge base article 810886. Hosting on a UNC share is not supported for the Windows XP Platform.

設定錯誤時,嘗試關機的畫面:

環境描述:
1、IIS Server(Windows 208R2)
2、File Server(Windows 2003R2)

目前已知在新版的環境上也都可以重現此問題。

問題重現:
1、由於此問題在大量的透過網路分享時就會遇到,所以我建立一個站台,然後建立50個虛擬目錄。


2、在各虛擬目錄上我也分別設定特定的使用者。

 3、為了模擬大量的使用者,所以透過Visual Stdio進行壓測,果然立即就發生相同的情況。

解決方法:
在此處設定的值非常的重要,如果在IIS端設定錯誤時,可能就會造成此主機在分享目錄上發生問題,所以強烈建議請參考下列的值進行設定即可。

For IIS(Windows 2008R2)
HKLM\system\currentcontrolset\services\lanmanworkstation\parameters\MaxCmds=REG_DWORD value=5000(十進位制)

再次強調,上述的值(5000),請勿設定過大,否則會造成系統問題。

For File Server(Windows 2003R2)
HKLM\system\currentcontrolset\services\lanmanserver\parameters\Maxwi=REG_DWORD value=65535(十進位制)

HKLM\system\currentcontrolset\services\lanmanserver\parameters\MaxMpxCt=REG_DWORD value=65535(十進位制)

設定完成後,再請重新啟動電腦後即可。


關鍵字:KB810886500.19network BIOS command limit has been reached

參考連結: