Web Deploy ツールを利用した IIS の移行方法

こんにちは。

日本マイクロソフト、Microsoft Japan IIS / Azure Bot Service Support Team の鈴木です。

 

今回は Web Deploy ツールを利用した IIS の移行方法をご案内します。

 

IIS 7.5 から IIS 10.0 へ、といった IIS の環境を別のマシンへ移行する場合にご利用いただけるツールとして、Web Deploy (Web 配置) ツールがあります。

 

Web 配置ツール
https://technet.microsoft.com/ja-jp/library/dd939114.aspx

 

移行時にモジュールの依存関係などの確認も可能であり、弊社ではこのツールを利用した移行を推奨しております。

 

 

Web Deploy で移行可能な範囲について
==================================
Web Deploy を利用した移行により実現可能な範囲は以下の通りです。

 

a) IIS の構成
b) コンテンツのコピー

 

一方、アプリケーションの構成により別途対策が必要な部分として以下の要素が考えられます。

 

c) ユーザーアカウントの作成
d) 必要な役割サービス、.NET Framework 、その他コンポーネントのインストール
e) アプリケーションの動作検証

 

また、Web Deploy によるコピーが成功した場合でも、アプリケーションの実装や利用されるモジュールのバージョンの差異等により、意図されている動作にならない可能性もありますので、コンテンツのコピーまで完了した後、Web アプリケーションの動作について十分な評価を行ってください。

 

 

Web Deploy を利用した移行手順
==================================
※紹介する参考資料は IIS 7.0、 IIS 7.5 を対象に記載されているものもありますが、 IIS 7.5 以降の各バージョン (IIS 10 を含む) でもご利用いただける内容です。

 

1) Web Deploy ツールのインストール

下記サイトから Web Deploy ツールをインストールします。

 

Web Deploy v3.5
https://www.microsoft.com/ja-JP/download/details.aspx?id=39277
※移行先サーバー、移行元サーバーの両方にインストールする必要があります。

 

- 参考資料
Web Deployment Tool Overview
/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd569058(v=ws.10)

 

 

2) 移行元および移行先のバックアップ

バックアップ および 復元のコマンドは以下の通りです。
移行実施前に、移行元および移行先のそれぞれでバックアップを取得してください。

 

バックアップ時
>%SystemRoot%\system32\inetsrv\appcmd.exe add backup <任意のバックアップ名>

 

復元時
>%SystemRoot%\system32\inetsrv\appcmd.exe restore backup <復元したいバックアップ名>

 

- 参考資料
appcmd によるバックアップの作成
https://technet.microsoft.com/ja-jp/library/ff453992.aspx

 

AppCmd.exe の使用の開始 - バックアップの管理
https://technet.microsoft.com/ja-jp/library/dd647592.aspx#Managing

 

 

3) 依存関係の確認

移行元サーバーのコマンドプロンプトを開き、 Web Deployment Tool インストールフォルダ (既定で c:\Program Files\IIS\Microsoft Web Deploy V3) に移動した上で、以下のコマンドを実行します。

 

>msdeploy -verb:getDependencies -source:webServer

 

※移行先サーバーに個別にインストールしなければならない可能性のあるコンポーネントが XML 形式で出力されます。
※本コマンドで使用可能なパラメータ等の詳細については、”msdeploy /?” を実行することで確認できます。

 

- 参考資料
Web Deploy GetDependencies Operation
/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd569090(v=ws.10)

 

Web Deploy Operation Settings

/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd569089(v=ws.10)

 

 

4) 必要なコンポーネントのインストール

手順 3) で確認した必要なコンポーネントを、移行先サーバーにインストールします。

 

 

※以降でご案内する手順について、構成情報のみをコピーする場合には、”-disableLink:ContentExtension” オプションを指定します。コンテンツ含めてコピーする場合には、”-disableLink:ContentExtension” オプションを除外します。

 

 

5) 移行元サーバーのアーカイブ取得

移行元サーバーのコマンドプロンプトを開き、 Web Deployment Tool インストールフォルダ (既定で c:\Program Files\IIS\Microsoft Web Deploy V3) に移動した上で、以下のコマンドを実行します。

 

構成情報のみをコピーする場合
> msdeploy -verb:sync -source:webServer -dest:archivedir=c:\archive,encryptPassword=Password123 -enableLink:AppPoolExtension -disableLink:ContentExtension > msdeployarchive.log

 

コンテンツを含む場合
> msdeploy -verb:sync -source:webServer -dest:archivedir=c:\archive,encryptPassword=Password123 -enableLink:AppPoolExtension > msdeployarchive.log

 

※コマンド実行後、c:\archive に Web サイトのコンテンツ ディレクトリ、アプリケーション ディレクトリ、archive.xml、systemInfo.xml が作成されます。
※出力先にフォルダ、ファイルが既に存在する場合は上書きされます。
※アーカイブの出力先フォルダを c:\archive、ログファイル名を msdeployarchive.log とした場合のコマンド例です。

 

 

6) 手順 5) で取得したアーカイブフォルダを移行先サーバーへコピーします。

例) 移行元サーバーの c:\archive を、移行先サーバーの c:\archive にコピーします。

 

 

7) 移行の動作検証

移行先サーバーのコマンドプロンプトを開き Web Deployment Tool インストールフォルダ (既定で c:\Program Files\IIS\Microsoft Web Deploy V3) に移動した上で、以下のコマンドを実行します。

 

構成情報のみをコピーする場合
> msdeploy -verb:sync -source:archivedir=c:\archive,encryptPassword=Password123 -dest:webServer -enableLink:AppPoolExtension -disableLink:ContentExtension -whatif > msdeploysync.log

 

コンテンツを含む場合
> msdeploy -verb:sync -source:archivedir=c:\archive,encryptPassword=Password123 -dest:webServer -enableLink:AppPoolExtension -whatif > msdeploysync.log

 

※whatif フラグを指定してコマンドを実行することで、実際に移行を実施する前に、動作検証を行うことができます。
※アーカイブの出力先フォルダを c:\archive、ログファイル名を msdeploysync.log とした場合のコマンド例です。

 

コマンド実施後に、msdeploysync.log でエラーや警告が出ていないか、確認します。

 

 

8) 移行の実施

手順 7. の出力内容を確認し、特にエラー等が表示されていない場合、whatif フラグを指定せずに同じコマンドを実行し、実際に IIS の構成情報の移行を行います。

 

構成情報のみをコピーする場合
> msdeploy -verb:sync -source:archivedir=c:\archive,encryptPassword=Password123 -dest:webServer -enableLink:AppPoolExtension -disableLink:ContentExtension > msdeploysync.log

 

コンテンツを含む場合
> msdeploy -verb:sync -source:archivedir=c:\archive,encryptPassword=Password123 -dest:webServer -enableLink:AppPoolExtension > msdeploysync.log

 

※アーカイブの出力先フォルダを c:\archive、ログファイル名を msdeploysync.log とした場合のコマンド例です。

 

 

補足
=====================
1) appcmd での移行について

appcmd にて取得可能なバックアップは、基本的に取得した対象のサーバーでの IIS 構成情報の復元にご利用いただけます。

 

バックアップに含まれる 「%SystemRoot%\system32\inetsrv\config\applicationHost.config」 ファイルには、パスワードを暗号化するために利用するサーバー固有のキーの情報が含まれます。
また、サーバーごとにインストールされているモジュールが異なっている場合、構成情報に含まれる設定と実際の IIS のインストール状況に差異が生じ、正常に動作しない可能性があります。

 

そのため、他サーバー間の移行の際には上記でご案内した Web Deploy ツールをご利用ください。

 

2) FTP サイトの移行について

FTP 7.5 以降の移行では上記でご案内しました Web Deploy ツールをご利用いただけます。
ただし、 FTP 6.0 から FTP 7.5 へ移行したいという場合には、上記の方法はご利用いただけません。

 

FTP 6.0 では、IIS 7.0 以降で IIS 構成ファイルとして利用される applicationHost.config ファイルではなく、IIS 6.0 以前で利用していた MetaBase.xml ファイルを構成情報の設定に利用します。
Windows Server 2008 には、この MetaBase.xml のバックアップを行うスクリプト ツールが導入されていないため、自動でのバックアップ、リストアを行うことができません。
そのため、FTP 6.0 からの移行の際には、お手数ですが手動での移行をご検討くださいますようお願いいたします。

 

 

以上です。