如果你使用Windows架站 , 那對IIS就不陌生 , 雖然也有很多第三方的WEB Server也支援Windows , 但個人總覺得原廠支援的還是讓人比較放心 , 而在維運時 , 不管是系統升級又或是增加主機提升效能等等原因 , 你也一定會遇到把原來的站台搬到另外一台主機的狀況 , 本文就是記錄如何把IIS上的站台遷移到他台主機的步驟 .
首先 , 你必須要有一台新主機 , 上面已經安裝好IIS , 那在新舊主機上 , 都先安裝WebDeploy程式 , 在撰寫本文時 , 使用的是3.6版 , 下載頁面 https://www.iis.net/downloads/microsoft/web-deploy , 請自行依OS下載安裝 .
第一步 , 我們對IIS設定進行備份 , 執行後會產生IISBackup備份檔
%windir%\system32\inetsrv\appcmd add backup “IISBackup”
第二步 , 獲取相依性資訊 , 原始主機及目標主機都執行看有無差異 , 指令中的 lm/w3svc/1 , 就是指第一個站台 , 通常是指 Default站台 , 如果你要移動其他站台或多個站台 , 就改成 lm/w3svc/2 , 把最後的數字換掉即可.
這個步驟主要是在看站台需要那些相依的應用程式集區 , 新舊二台主機都執行後 , 把結果進行比對 , 看新主機缺什麼就補安裝 , 例如你要用 .NET 2.0 , 就回 “新增角色和功能” 把 .NET 3.5加進來 .
C:\Program Files\IIS\Microsoft Web Deploy V3> msdeploy -verb:getDependencies -source:metakey=lm/w3svc/1
第三步 , 當新舊二台的相依都匹配後 , 接下來就是先搬應用程式集區的設定
舊主機上執行匯出
%windir%\system32\inetsrv\appcmd list apppool /config /xml > c:\apppools.xml
新主機上執行匯入
%windir%\system32\inetsrv\appcmd add apppool /in < c:\apppools.xml
第四步 , 進行站台的搬移
在原始主機 , 將IIS站台進行匯出到檔案 , 如果有第二個站台就用lm/w3svc/2 , 匯出的檔案就用site2.zip , 多個站台依此類推
C:\Program Files\IIS\Microsoft Web Deploy V3> msdeploy -verb:sync -source:metakey=lm/w3svc/1 -dest:package=c:\site1.zip > IISSiteMigration.log
在目標主機 , 將匯出的檔案進行匯入 , 加上-whatif先看有沒有錯誤 , 沒有出現錯誤的話將-whatif拿掉 , 再執行一次匯入
C:\Program Files\IIS\Microsoft Web Deploy V3> msdeploy -verb:sync -source:package=c:\site1.zip -dest:metakey=lm/w3svc/1 -whatif > IISSiteMigration.log