將所有的Web站點由Win2003+IIS6遷移至64位Win2008+IIS7。
一、方法
1、首先自然是要安裝基本運行環境,包括iis,.netframework1.1,3.5,4.0。這里都沒有啥大問題,就是安裝.netframe1.1時會報一個兼容性問題的提示,這里不需要理會,繼續安裝即可,但裝完后別忘了再安裝.netframework1.1sp1。安裝完后還需要在machine.config里加上以下節點:
<sectionname="system.webServer"type="System.Configuration.IgnoreSectionHandler,System,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
2、其次就要將站點由IIS6遷移到IIS7了,如果服務器上應用系統少,部署簡單,那倒是可以考慮拷貝部署目錄到新服務器,然后從頭進行配置的方式。但如果系統多,配置復雜,那這種方式顯然不可取,這時就要使用微軟的WebDeploymentTools實現遷移。WebDeploymentTools是一個比較好的工具,平時就在利用它實現多臺Web服務器的同步,但它沒法實現IIS6到IIS7的同步,那只好采用折中方式。
?。?)執行msdeploy-verb:getDependencies-source:webserver60命令,檢查源服務器的依賴關系,并確保這些依賴關系在目的服務器上已正確安裝配置。

?。?)先后執行msdeploy-verb:sync-source:webserver60-dest:archivedir=d:/iis,encryptPassword=password-whatif和-verb:sync-source:webserver60-dest:archivedir=d:/iis,encryptPassword=password
其中前一條命令多了個-whatif選項,這是用于顯示該命令的預計執行結果,但不進行實際操作,這條命令執行無誤后可以執行后一條命令,將整個站點導出到d盤iis目錄下。
?。?)將d盤iis目錄里的所有內容拷貝到目的服務器,并在目的服務器上先后執行msdeploy-verb:sync-source:archivedir=d:/iis,encryptPassword=password-dest:webserver-whatif和msdeploy-verb:sync-source:archivedir=d:/iis,encryptPassword=password-dest:webserver將站點部署到IIS7上。這樣就完成了整個站點的遷移。
?。?)然后還要檢查一下各應用在新的環境下是否正常。這時候很可能就會發現.netframework1.1下的程序有問題,對應的應用程序池會顯示對應的.netframework版本為2.0,且無法選擇到1.1版本。

?。?)這時可以通過執行appcmd命令來實現.netframework版本切換,執行
appcmdsetapppool"DefaultAppPool"/managedruntimeversion:v1.1命令,之后你就會發現.netframework版本已經改成了1.1。
?。?)最后還要參照IIS6服務器的設置更改一下上傳文件的允許大小。.net的程序跟原來一樣修改machine.config即可,這里就不多說了。asp程序的修改方法有所不同,Win2003+IIS6下是修改C:/WINDOWS/system32/inetsrv下的metabase.xml文件,但在Win2008+IIS7下就不需要那么麻煩了,只要IIS里配置ASP應用程序屬性即可。

當然,如果是通過WebDeploymentTools進行遷移的,那這些設置就已經自動遷移過來了。