最近開始着手逐步將所有的Web站點由Win2003+IIS6遷移至64位Win2008+IIS7,基本還算順利。這里就把相關內容整理總結一下。
首先自然是要安裝基本運行環境,包括iis,.net framework 1.1,3.5,4.0。這里都沒有啥大問題,就是安裝.net frame1.1時會報一個兼容性問題的提示,這里不需要理會,繼續安裝即可,但裝完后別忘了再安裝.net framework1.1 sp1。安裝完后還需要在machine.config里加上以下節點:
<section name="system.webServer" type="System.Configuration.IgnoreSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
其次就要將站點由IIS6遷移到IIS7了,如果服務器上應用系統少,部署簡單,那倒是可以考慮拷貝部署目錄到新服務器,然后從頭進行配置的方式。但如果系統多,配置復雜,那這種方式顯然不可取,這時就要使用微軟的Web Deployment Tools實現遷移。Web Deployment Tools是一個比較好的工具,平時就在利用它實現多台Web服務器的同步,但它沒法實現IIS6到IIS7的同步,那只好采用折中方式。
1.執行msdeploy -verb:getDependencies -source:webserver60命令,檢查源服務器的依賴關系,並確保這些依賴關系在目的服務器上已正確安裝配置。
2.先后執行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目錄下。
3.將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上。這樣就完成了整個站點的遷移。
然后還要檢查一下各應用在新的環境下是否正常。這時候很可能就會發現.net framework1.1下的程序有問題,對應的應用程序池會顯示對應的.net framework版本為2.0,且無法選擇到1.1版本。
這時可以通過執行appcmd命令來實現.net framework版本切換,執行
appcmd set apppool "DefaultAppPool" /managedruntimeversion:v1.1命令,之后你就會發現.net framework版本已經改成了1.1。
最后還要參照IIS6服務器的設置更改一下上傳文件的允許大小。.net的程序跟原來一樣修改machine.config即可,這里就不多說了。asp程序的修改方法有所不同,Win2003+IIS6下是修改C:\WINDOWS\system32\inetsrv下的metabase.xml文件,但在Win2008+IIS7下就不需要那么麻煩了,只要IIS里配置ASP應用程序屬性即可。
當然,如果是通過Web Deployment Tools進行遷移的,那這些設置就已經自動遷移過來了。