遷移原因:公司服務器更換
遷移環境:源服務器 windows2003 X86 IIS6 目標服務器:windows2008 X64 IIS7
遷移過程:
第一次遷移失敗,作為簡要記錄,源服務器安裝簡易FTP,打開后把目錄文件全部復制到目標服務器,后將數據備份后恢復至目標服務器,本以為會成功,但造成大量的服務器錯誤,部分二級頁面無法打開,
最終以失敗告終。所以進行第二次嘗試,如下:
第二次:用IIS遷移工具,簡單可靠,主要操作如下:
最前:安裝.net環境,兩台都要安裝相同的
1、操作前先清空數據庫LOG文件,我的一個LOG文件20多G,不清空將浪費很多時間 ,清空辦法分離數據庫,然后刪除LOG文件,然后 附加數據庫,附加時會提示無日志文件 ,將此項直接刪除即可,附加后
LOG文件為504K。
2、下載 IIS遷移工具 可直接在官網上下載最新版X86或X64位(網頁最下面有各個語言版本) 下載地址:http://www.iis.net/downloads/microsoft/web-deploy
或者直接去我的網盤下載:(64位) http://pan.baidu.com/s/1o6p73tg (32位)http://pan.baidu.com/s/1eQGmotO
根據自己的系統類型在源和目標服務器安裝合適版本的的web-deploy
先在源服務器找到web-deploy安裝目錄,一般路徑為C:\Program Files (x86)\IIS\Microsoft Web Deploy V3
開始--運行 CMD 先進入如下所示的V3目錄,輸入 msdeploy -verb:getDependencies -source:webserver60 檢測依賴關系
再在目標服務器上運行以上命令檢查依賴關系 ,如果不太一樣,修改目標服務器的依賴關系 ,本次我的有一項不一樣 我的少了<dependency name="WindowsAuthentication " />
添加步驟如下:
IIS 管理器 --身份驗證 啟用windows身份驗證即可
基本一致后進行遷移工作。
1、在源服務器下運行以下命令 (我在D盤下建了IIS文件夾,可任意名)
先執行msdeploy -verb:sync -source:webserver60 -dest:archivedir=d:\iis,encryptPassword=password -whatif
后執行msdeploy -verb:sync -source:webserver60 -dest:archivedir=d:\iis,encryptPassword=password
其中前一條命令多了個-whatif選項,這是用於顯示該命令的預計執行結果,但不進行實際操作,這條命令執行無誤后可以執行后一條命令,將整個站點導出到d盤iis目錄下。
2、將d盤iis目錄里的所有內容拷貝到目的服務器,並在目的服務器上先后執行
msdeploy -verb:sync -source:archivedir=d:\iis,encryptPassword=password -dest:webserver60 -whatif
和msdeploy -verb:sync -source:archivedir=d:\iis,encryptPassword=password -dest:webserver60 將站點部署到IIS7上。這樣就完成了整個站點的遷移。
注意的幾點事項:
有可能會報服務器的錯誤
大概注意以下幾個地方:
(1)托管管道模式 經典還是集成
(2).NET環境 2.0還是4.0
(3)web.config 此處<customErrors mode="RemoteOnly">
(4)應用程序池-高級設置-啟動32位應用程序 改為true
最后記着要是數據庫密碼不一樣,要在配置文件里把密碼改正確。
后記:
遷移后發現首頁是正常訪問了,但由於原來的網站用到了偽靜態,遷移后二級的偽靜態無法正常顯示,一直是調整經典和集成模式,最終發現經典模式無法解決此問題,最終我的解決辦法如下:
1.修改經典模式為集成模式
2.修改web.config配置文件
IIS7中增加如下內容:(該位置在</system.web>后增加的)
把<system.web>中以下的的內容直接注釋掉:
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2" />
<add path="*.aspx" verb="GET" type="CoreClass.BuildHtmlDemo.ToHtmlHandler, CoreClass.BuildHtmlDemo" validate="false" />
<add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory" />
</httpHandlers>
<httpModules>
<add name="RewriteModule" type="CoreClass.BuildHtmlDemo.UrlRewriteModule, CoreClass.BuildHtmlDemo" />
<add type="URLRewriter.RewriterModule, URLRewriter" name="RewriterModule" />
</httpModules>
在system.webserver中添加一份。
<system.webServer>
<modules>
<add name="RewriteModule" type="CoreClass.BuildHtmlDemo.UrlRewriteModule, CoreClass.BuildHtmlDemo" />
<add name="RewriterModule" type="URLRewriter.RewriterModule, URLRewriter" />
</modules>
<handlers>
<add name="MyHandler" path="*.aspx" verb="GET" type="CoreClass.BuildHtmlDemo.ToHtmlHandler, CoreClass.BuildHtmlDemo" preCondition="integratedMode"/>
</handlers>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>