IIS6.0まではIISの構成情報はメタベースに格納されていたのですが
IIS7.0からはapplicationHost.configというXML形式の構成ファイルに
保存されるようになったようです。
これによりIIS6.0まではGUIを使用せずに設定を変更しようとすると
付属のadsutil.vbsを使用してメタベースを変更する必要があったのですが
IIS7.0からは事前に必要な設定が書かれたapplicationHost.configを用意しておいて
それをただコピーするだけで良くなったようです。
ではまずWindowsエクスプローラでapplicationHost.configがどこにあるか探してみることにします。
どうやらC:\Windows\System32\inetsrv\configにあるようです。
またC:\inetpub\historyにもありました。
こちらは過去のapplicationHost.configのバックアップのようです。
これを見るとバックアップは過去10世代まで保存されているようですが
バックアップ先や世代数の設定は
C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml
の以下の部分で変更することが可能なようです。
<sectionSchema name="system.applicationHost/configHistory">
<attribute name="enabled" type="bool" defaultValue="true" />
<attribute name="path" type="string" defaultValue="%SYSTEMDRIVE%\inetpub\history" />
<attribute name="maxHistories" type="uint" defaultValue="10" validationType="integerRange" validationParameter="1,4294967295"/>
<attribute name="period" type="timeSpan" defaultValue="00:02:00" validationType="timeSpanRange" validationParameter="10,2147483647,1"/>
</sectionSchema>
さてではapplicationHost.configで簡単にIISの設定を移行できるかどうかを試してみることにします。
今回はWindows Server 2008 Beta 3搭載機を2台用意し、片方で行った設定を
ファイル・ディレクトリのコピーだけでもう一方に移すことができるかを見てみます。
■ 移行元の作業
1. [管理ツール] - [インターネット インフォメーションサービス(IIS)マネージャ]を起動します。
2. 以下のWEBサイトを追加します。
Webサイト名:Web Site2
コンテンツディレクトリ:C:\inetpub\wwwroot2
ポート:8080
3. Web Site2に仮想ディレクトリTestを追加し、そこに画面上に「TEST」と表示するだけの
簡単なHTMLファイルを1つおいておきます。
4. Web Site2にアプリケーションディレクトリApplicationを追加し
そこに簡単なASP.NET WEBアプリケーションを置いておきます。
またアプリケーションディレクトリは認証方法を匿名認証から
Windows認証に変えておきます。
この状態で一度、移行元のapplicationHost.configの設定を確認してみます。
すると変更前と比べて以下の設定が追加されていることが確認できます。
<configuration>
<system.applicationHost>
--- 省略 ----
<sites>
<site name="Default Web Site" id="1">
----- 省略 -----
</site>
<site name="Web Site2" id="2">
<application path="/" applicationPool="Web Site2">
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot2" />
<virtualDirectory path="/Test" physicalPath="C:\inetpub\wwwroot2\test" />
</application>
<application path="/application">
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot2\application" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8080:" />
</bindings>
</site>
<siteDefaults>
<logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" />
<traceFailedRequestsLogging directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" />
</siteDefaults>
<applicationDefaults applicationPool="DefaultAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
<webLimits />
</system.applicationHost>
---- 省略 ----
<location path="Web Site2/application">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
</configuration>
■ 移行先の作業
移行作業として以下の手順を行います。
1. 移行元のapplicationHost.configを移行先のC:\Windows\System32\inetsrv\config下に
上書きコピーします。
2. 移行元のC:\inetpub\wwwroot2以下を移行先のC*\inetpub下にコピーします。
移行作業は以上のみです。
移行先のIISの再起動も行いません。
この状態で移行先のマシンで仮想ディレクトリTest下のHTMLとアプリケーションディレクトリApplication下の
ASP.NETをIEで呼び出してみて、両方のディレクトリが機能しているかどうかを見てみます。
どうやら機能していますね。
さらに移行先の[管理ツール] - [インターネット インフォメーションサービス(IIS)マネージャ]を起動して
設定を確認してみます。
追加したWEBサイト、仮想ディレクトリ、アプリケーションディレクトリそれから認証の設定も
すべて移行されていることが確認できます。
こんなに簡単に設定を移行できるとは驚きです。