IIS6網站批量遷移至IIS7經驗分享


遷移原因:公司服務器更換

遷移環境:源服務器 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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM