連載
» 2007年11月21日 00時00分 UPDATE

Windows Server 2008の基礎知識:第5回 柔軟性と機能性を大幅に高めたIIS 7.0(後編) (1/3)

IIS 7.0で追加・強化された管理ツール/コマンドや診断トレース機能、ASP.NETを統合する新たな動作モードなどを詳細に解説。

[奥主洋(エバンジェリスト),マイクロソフト株式会社 ]
  Windows Server 2008の基礎知識 ―― 新サーバOSで何が変わるのか? ―― 
Windows Server Insider

 

「  Windows Server 2008の基礎知識 ―― 新サーバOSで何が変わるのか? ―― 」のインデックス

連載目次

「Windows Server 2008の基礎知識」は、Windows Server 2003の後継OSとして2008年に出荷が予定されている、Windows Server 2008の注目機能について解説するコーナーです。


 前回の前編では、IIS 7.0の概要とアーキテクチャ、環境情報などについて解説した。引き続き後編では、IIS 7.0の管理機能や診断システム、ASP.NETとの統合などについて解説する。

 なお、特記しない限り本稿ではWindows Server 2008 RC0の仕様に従っている。RTM版(製品版)で仕様が変更される可能性もあるので留意いただきたい。またIIS全体を指す場合は「IIS」、特定のバージョンを指す場合は「IIS .6.0」「IIS 7.0」などと記す。

管理機能の強化

 IISの管理といえば、基本はIISマネージャで行うもの、自動化はVBScriptとADSI/WMIで行うものというイメージを持っている読者の方は、相当にIISを使いこなしているといえる。さらに、IIS 6.0で登場したVBScriptベースの管理スクリプト「iisxxxx.vbs」を8つ(*1)とも答えられる方は、相当ハイレベルな管理者である。

*1 iisweb.vbs、iisvdir.vbs、iisback.vbs、iiscnfg.vbs、iisext.vbs、iisapp.vbs、iisftp.vbs、iisftpdr.vbs


 これらの管理スクリプトは「台数の多いWebファームを管理するにはIISマネージャでは作業効率が悪い」というユーザーからのフィードバックから生まれたものである。IIS 7.0では、さらに一歩進んだ対応が加えられている。まず、専用コマンドのappcmdとMicrosoft.Web.Administrationクラスという管理用インターフェイスが新設された。後者は、.NETで管理用のアプリケーションを構築するうえで使えるいわばAPIだ。これらに加えて、IISマネージャの全面作り直しとWMIプロバイダの書き直しも行われている。以下、これら4種類の管理方法ごとに詳しく説明しよう。

 IISの管理とは、基本的に前述の環境情報ファイル(*.configのXMLファイル)を編集することにほかならない。その環境情報ファイルとIIS 7.0の各管理インターフェイスは、実は下図のような構造を成していることを先に伝えておく。

wi-fig05.gif IIS 7.0の管理インターフェイスおよび環境情報ファイルの関係・構造

 IIS 7.0の環境情報(*.configファイル)そのものの詳細については、前編の「IIS 7.0で一新された環境情報」を参照していただきたい。

■Windowsフォームで作り直されたIISマネージャ
 IISマネージャは、従来Microsoft管理コンソール(MMC:Microsoft Management Console)というWindowsを管理するツールを作成する際のテンプレートを利用したものだった。MMCは、統一された管理インターフェイスを提供することで、どのような製品でも管理する操作感が同じになる点で好評だった。その一方で、機能の追加・拡張時にはなかなか簡単に開発できる構造ではないという難点もあった。

 IISマネージャの拡張性を重視し、IIS 7.0のIISマネージャは、MMCではなく、Windowsフォーム(通常のWindowsアプリケーションがベースとするフレームワーク)を利用して開発し直された。その結果、*.configファイルをベースにした非常に拡張のしやすい、しかも使いやすいGUIに生まれ変わった。もちろん、従来のIISマネージャと大きく変わっている部分もあるので最初は使用感などの違いに戸惑うかもしれない。この新しいIISマネージャは非常に多機能で、詳細を知るには実際に触るのが一番の早道である。

wi-scr02.gif IIS 7.0のIISマネージャ
Windowsフォームで作り直されたIISマネージャは、より多機能になっただけではなく、独自の機能追加・拡張が容易になった。またリモートで管理する際、サーバとサイト、アプリケーションの各階層を選択して接続できるようになった(管理の委任)。

 現時点で、Windows VistaのIIS 7.0に付属するIISマネージャは、リモート管理機能を持たない。一方、Windows Server 2008のIISマネージャはリモート管理が可能になっており、サーバ階層とサイト階層、アプリケーション階層のいずれかを選択して接続できる。これを管理の委任と呼んでいるが、IIS 7.0からの特徴的な機能の1つでもある。この機能は、Windows Vista SP1を適用することで、VistaのIISマネージャにも搭載される予定だ。

 また、このツールは通信にWebサービスを用いているため、HTTPあるいはHTTPSのポートさえ開いていれば、その先のネットワークにあるIIS 7.0サーバも管理できる。いままでのIISマネージャがファイアウォールでブロックされがちなRPCで通信していたことに比べると、リモート管理時の使い勝手はかなり向上しているだろう。

■新しいIIS管理用コマンドライン・ツール「appcmd」
 最近のWindows OSで提供されるコマンドの基本パラメータは、2段階になっているものが多いようだ。このappcmdも同様で、「appcmd 動詞対象」となる。例えばサイトを一覧するためのコマンドラインは、以下のとおりだ。

appcmd list sites

 appcmdの対象は広範で、前述したIIS 6.0のスクリプト「iisxxxx.vbs」のすべてをカバーしているうえに、IIS 7.0からの新機能も搭載している。例えば、以下の画面のヘルプにある「MODULE」という対象(オブジェクトの種類)は、前編の「モジュール構造の採用」で触れたサーバ・モジュールを管理するためのもので、明らかにIIS 7.0からの概念だ。これを使えば、IISマネージャと同様のサーバ・モジュール管理をコマンドラインから実行できる。

wi-scr03.gif appcmdの実行例
appcmdはコマンドラインでIISマネージャと同等なIISの管理を実現することを目指して開発された。WinRS.exeのようなリモート実行用ツールと併用すれば、リモートのIIS 7.0サーバを管理することも可能だ。

 このappcmdもリモートで使いたいと考えるだろう。Windows VistaやWindows Server 2008では、Windows Remote Management(WinRM.exe)というWS-Management(リモート管理用Webサービスの標準仕様)の実装が搭載されており、Windows Remote Shell(WinRS.exe)というリモート実行用のコマンドが利用できる(*2)。このWinRS.exeにてappcmdを実行パラメータに指定することで、appcmdによるリモート管理は実現可能だ。ただし、多数のサーバ(1000台以上)を管理するような用途では、Windows PowerShellで繰り返し処理を実装した方がスマートにできる(詳細は後述)。

*2 WinRM.exeなどを用いたリモート管理の手法については、マイクロソフトが以下のページで提供している「新しい管理テクノロジを使用した Windows Server 2008 の管理」というバーチャル・ラボが参考になる。
 ・バーチャル ラボ: Microsoft Windows Server 2008(マイクロソフトTechNet)


■互換性を確保しつつ再構築されたWMI
 Windows Server 2008のIIS 7.0をインストールする際に追加できる機能の1つとして、[IIS6 WMI互換性]という項目がある。これをインストールすると、いままでIIS 6.0で動作させていたスクリプトがそのまま動くはずである。前述の「iisxxxx.vbs」は実はWMI/ADSIを使ったVBScriptなので、これらも利用できるはずだ。

 その一方で、IIS 7.0からの新概念を管理するうえではWMIのプロバイダを書き直す必要もあった。そのため、IIS 7.0自身は再構築したWMIプロバイダを持っている。この新バージョンのWMIプロバイダでは、いままで若干記述方法に統一感のなかった部分も修正されているため、メソッドの呼び出しなどが従来と異なる部分がある。

wi-scr04.gif VBScriptによるWMIの使用例
これはVBScriptで新たなサイトとアプリケーションを作成したところ。右のIISマネージャで「NewSite」というサイトと「sample」というアプリケーションが作成されているのが分かる。従来もWMIでIISを管理することは可能だったが、IIS 7.0ではIIS 6.0との互換性を維持しつつ、IIS 7.0からの新機能をサポートするためにWMIプロバイダが再構築されている。
  (1)サイトとアプリケーションを作成するVBScript。
  (2)VBScriptによって作成された実際のサイトとアプリケーション。

 IIS 6.0との互換性維持の点で触れておきたいのがABO(Admin Base Object)だ。IIS 6.0ではメタベースが利用されており、metabase.xmlがファイル名である点は前出のとおりである。しかし、実際に稼働中のIISが参照するのはメモリにロードされたメタベースであり、稼働中のものを直接変更するメカニズムとして用意されたのがABOというわけである。IIS 7.0ではABOマッパーという中間層を用意することで、ABOを使ってメモリ中のメタベースにアクセスする従来のスクリプトとの互換性を確保している。

 IIS 6.0との互換機能を利用している場合には、アーキテクチャ面で注意すべきことがある。IIS 7.0では完全にワーカー・プロセス(w3wp.exe)が主役になったので、旧来のInetinfo.exeプロセスはほとんど関与しなくなった。しかしIIS 6.0ではInetinfo.exeプロセスがメタベースをメモリにロードするなど、いろいろなことを実行している。従って、互換機能を使用するとIIS 6.0と同様、Inetsrvフォルダにmetabase.xmlが並行して作成・参照され、Inetinfo.exeも活動する点に注意したい。

■.NET言語用の管理機能ライブラリ「Microsoft.Web.Administration」
 残る管理用インターフェイスが.NET言語用のAPI、Microsoft.Web.Administrationである。これはコンパイル言語用に用意された初めての管理機能ライブラリで、これでも前出の3種類の方法と同じ管理操作を記述することができる。Webで動作するアプリケーション・パッケージでIIS 7.0の環境設定を行う際には、この方式を使うのがいいだろう。

PowerShellによるServer Core上のIIS 7.0の管理

 IISの管理に関しては、Windows PowerShellにも触れておくべきだろう。筆者がセミナーなどで話すと、多くの人が「Windows PowerShellはServer Coreに搭載されないのですよね?」と質問してくる。これは「サーバはローカルで管理する」という考えが前提になっていると思われるが、実際の運用環境では、ローカルではなく別室の管理用PCなどから管理するほうが一般的ではないだろうか? Server Coreはリモートからの管理を受け付けるので、例えばIISをバッチで管理したいのであれば、リモートからサーバにアクセスして構成処理を行うコマンドレットを作成しておけば、Server Core上にWindows PowerShellが載っていなくても管理は可能だ。ただし、未確認情報だが、Windows PowerShellの開発チームは、いずれかのタイミングで、PowerShellをServer Coreに搭載すべく検討はしているようだ。

wi-fig06.gif Windows PowerShellによるIIS 7.0のリモート管理の概念
Server CoreでIIS 7.0のサーバを構築した場合、そのサーバ上で直接Windows PowerShellを利用することはできない。しかしIIS 7.0はリモート管理のためのインターフェイスを持っているので、管理用PC上のWindows PowerShellからリモートで管理操作を実行することは可能だ。

 リモートでIIS 7.0を管理するコマンドレットの開発については下記を参照するといいだろう。WMIでリモート先に接続し、管理を行う方法が掲載されている。



       1|2|3 次のページへ

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。