【 ここから本文 】
Windows Server 2008
ソーシャルブックマークに登録 :
印刷用ページの表示
【解説】
システム管理者のための「IIS 7.0」概論
モジュール化を実現した新世代のWebサーバ
(2008年04月04日)
ビルトインのFastCGIで
PHP環境をストレスなくホスト
PHPと言えば、「LAMP(Linux+Apache+MySQL+PHP)」や「LAPP(Linux+Apache+PostgreSQL+PHP)」で知られるように、Linux環境では最も標準的なサーバサイドスクリプトベースのWebアプリケーションの開発・実行環境だ。IIS 7.0では、PHP環境を安定的かつ高速にホストすることが可能である。
実は、PHPはこれまでもIIS上で動作していた。PHPのWin32バイナリには、IISに対応したCGI版とISAPI版が含まれており、CGIまたはISAPIを介してサポートできたのである。しかし、CGI版はオーバーヘッドが大きくパフォーマンスに問題があり、ISAPI版には一部のライブラリでスレッドセーフ(ほかのスレッドのデータを破壊しない)を保証できないなど、安全性、安定性に問題があった。このため、IISでPHPをサポートするというのは、不可能ではないが、実用に耐えるものではなかったのである。
2006年10月、マイクロソフトとPHPの開発元であるゼンドは、IIS 6.0およびIIS 7.0におけるPHPサポートについての技術提携を発表。共同でPHPの実行環境を改善し、信頼性とパフォーマンスを向上するために協業を開始した。
IIS 5.0/6.0上でPHPを高速化するエンジン「FastCGI for IIS」はその成果の1つであり、「IIS.net」サイト(http://www.iis.net/)を通じて無償提供されているほか、ゼンドが提供するフリーのPHP高速化エンジン「Zend Core2.0」にも搭載されている。
| 画面17:PHPをFastCGIで動作させるには、モジュールマップとして要求パス「*.php」にモジュール「FastCgiModule」を指定して「php-cgi.exe」を関連付けるだけでよい |
「FastCGI」とは、特定のプログラムの名称ではなく、CGIと同様、公開されたインタフェース仕様の一般名称だ。通常のCGIは要求ごとにCGIプログラムのプロセスを起動して、クライアントへの応答を生成するため、オーバーヘッドが大きいという問題がある。対して、FastCGIはCGIプログラムのプロセスをメモリ上に常駐させて再利用することで、CGIプログラムのパフォーマンスを向上している。
マイクロソフトが提供するFastCGI for IISは、IISにFastCGI機能を追加する拡張モジュールであり、PHPに限らず、PythonやRuby、Perlなどの実行にも応用可能だ。IIS 7.0には、FastCGI for IISが「FastCGIModule」としてあらかじめ組み込まれている。このモジュールは、役割サービス「CGI」とともにインストールされる。
| 画面18:PHPのWin32バイナリを任意のフォルダ(「C:\PHP」フォルダなど)に展開し、「php.ini-recommended」をベースに「php.ini」ファイルを作成する |
IIS 7.0でPHPをサポートする方法は簡単で、モジュールマップとして要求パス「*.php」にモジュール「FastCgiModule」を指定し、「php-cgi.exe」を関連付けるだけだ(画面17)。PHPはあらかじめWin32バイナリをダウンロードし、任意のフォルダ(「C:\PHP」など)に展開しておけばよい(画面18)。
今回はPHPのサイト(http://www.php.net/)で公開されている「PHP 5.2.4 Non-thread-safe Win32 binaries」(php-5.2.4-nts-Win32.zip)を利用した。PHPの動作環境は「php.ini」で定義するので、展開ファイルの中にある「php.ini-recommended」をコピーして事前に作成しておく。
「php.ini」では少なくとも、エクステンションのパス「extention_dir = "C:\PHP\ext"」の定義は必須だ。日本語を利用する場合は「extention=php_mbstring.dll」を有効にし、[mbstring]セクションで文字コードを設定する。そのほかの構成については、省略させていただく。
| 画面19:「<?php phpinfo(); ?>」の1行を記述したPHPファイル(拡張子.php)を作成し、IIS 7.0の仮想ディレクトリに配置する。Webブラウザから参照すれば、PHPの情報が表示されるはずだ |
以上の設定だけで、IIS 7.0でPHPがサポートされる。任意の仮想ディレクトリにPHPファイルを配置し、Webブラウザからアクセスしてみよう。動作確認には「<?php phpinfo(); ?>」の1行を記述したPHPファイルを利用するとよい(画面19)。
FastCGIの提供により、IIS上でのPHPの問題が解決され、安定性とパフォーマンスが向上する。これにより、IISはApacheに次ぐPHPのプラットフォームとなるかもしれない。PHPはSQL Serverをサポートするためのエクステンション「MSSQL」を標準提供しているので、今後はLAMP/LAPPに加え、「WISP(Windows Server+IIS+SQL Server+PHP)」という用語(造語)が一般的になるかもしれない。
【column 03】
IIS 7.0でPHPアプリを動かしてみた!
PHPアプリケーションをIIS 7.0でホストするデモとして、オープンソースのPHPアプリケーション「Qdig(Quick Digital Image Gallery Script)」(http://qdig.sourceforge.net/)を動かしてみた。このPHPアプリケーションは、Webベースのイメージギャラリーである。
IIS 7.0の仮想ディレクトリ「qdig」を作成し、「qdig-1.2.9.4.zip」の中の「index.php」だけを仮想ディレクトリ「qdig」にコピーする。さらに、複数の任意のイメージファイルを仮想ディレクトリ「qdig」にコピーする。
あとはWebブラウザで「/qdig/index.php」にアクセスしてみよう。イメージギャラリーが表示されるはずだ。「index.php」はコード変更なしで、そのままIIS 7.0上で動作したということである。PHPのエラーが表示された場合は、「php.ini」に「register_long_arrays = On」を設定すればよい。
ちなみに、Qdigにはイメージのアップロード機能やキャプション機能もある(admin.phpを使用)が、こちらはLinux環境を前提としたファイル操作がコードに含まれるため動作しない。
| ▲IIS 7.0上で動作するオープンソースのPHPアプリケーション「Qdig」 |
【解説】Windows Server 2008「NAP」大解剖


クライアント検疫機能「Network Access Protection」を検証する
サーバの仮想化はどう進化するのか!?
【Windows Server 2008 実践評価ガイド】Windows Server 2008が革新するITインフラストラクチャ

SOHOからデータセンターまで、すべてのシステムを支える!
Windows Server 2008 アップグレードに足る「9つの理由」


製品出荷の最終段階に入った次期サーバOSのベータ3を徹底検証
[国内]【Videoニュース】マイクロソフト、Windows Server 2008の新機能を国内イベントで披露

「システム管理者の負担を劇的に軽減する機能が満載」とアピール
[米国]マイクロソフト、Windows Server 2008のCTP版をリリース
目玉機能の「Server Core」に「IIS 7.0」を追加



























