スキルチャージプログラム構築記 (その4)

その1, その2, その3と書きつづった Microsoft スキルチャージプログラムの Web サーバー導入キットの構築も後一息。 それでは、IIS に PHP を組み込み、PHP で作られた Web アプリケーションを動かすところまで進めてみたい。IIS で PHP を動かすためには CGI (または ISAPI) が有効になっていればいいのだが、これらよりも FastCGI を使う方がより効率が良いとされている。 IIS で PHP を動かすためには CGI (または ISAPI) が有効になっていればいいのだが、これらよりも FastCGI を使う方がより効率が良いとされている。 しかし、IIS マネージャをみると、CGI というアイコンはあるが FastCGI は何処にも見つからない

Image29

どうやら IIS で FastCGI を使うには、Microsoft が主体となって運営している IIS のコミュニティサイトである The Official Microsoft IIS Site (通称 IIS.net) から「Administration Pack for IIS 7.0」を入手してインストールする必要があるらしい。 また、その手順も IIS.netUsing FastCGI to Host PHP Applications on IIS 7.0 というページに書いてある。 基本的には、CGI を有効にした IIS に「Administration Pack for IIS 7.0 (x86)」または「Administration Pack for IIS 7.0 (x64)」の何れかを、ダウンロードしてインストールするということらしい。 今回インストールした Windows Web Server 2008 は、その2 で既に述べたように 64bit 版 (x64) なので、ダウンロードしてインストールするのは「Administration Pack for IIS 7.0 (x64)」の方になる。

Administration Pack for IIS 7.0

「Administration Pack for IIS 7.0」をインストールする際に、どの形態でインストールするかを訊いてくるが、ここでは「Typical」(標準) を選んでおけばよい。

Installing of Administration Pack for IIS 7.0 Install Type of Administration Pack for IIS 7.0

実際にインストールされるモジュールは、「Complete」(完全) と比べ、ASP.Net の認証とエラー表示関連のモジュールがインストールされないだけになっている。

Install Module of Administration Pack for IIS 7.0

なお、IIS の FastCGI には REQUEST_URI というサーバー変数に関するセキュリティホールが存在しており、これを Fix したモジュール (KB954946) が提供されているので、これも入手して適用しておく。

KB954946

サーバーに「Administration Pack for IIS 7.0」をインストールした後に、リモートから IIS マネージャでこのサーバーに接続すると、最初に一度だけアセンブリモジュールのインストールを強要されるので、注意が必要。 なお、Microsoft 謹製にも関わらず、このアセンブリモジュールがデジタル署名されてという笑い話はこの際 黙殺することにしておく。

Assenbley for Administration Pack for IIS 7.0 Confirm Instalation Assenbley

IIS マネージャをよく見ると、「Administration Pack for IIS 7.0」をインストールする前には無かった「FastCGI Settings」というアイコンが増えているのが分かる。

IIS Manager After Install Administration Pack for IIS 7.0

これで、ようやく PHP をインストールする準備ができたことになる。 Windows には PHP は含まれていないので、まずは PHP を入手してこなくてはならない。 ここは PHP の公式サイトから入手するのが当然だろう。 PHP 公式サイトのダウンロードページを見ると、今日時点で最新の PHP のバージョンは 5.2.9-2 のようなので、これをダウンロードすることにする。 ダウンロードページには、ソースコードと、これを Windows 用にコンパイルしたものが置いてあるが、確実に動作することが保証されていれば十分だし、特別な方法でインストールしたいわけでもないので「PHP 5.2.9-2 installer」をダウンロードして入手する。

PHP Official Site

PHP はサーバーで動作しなくては意味がないので、ダウンロードしたインストーラーをサーバー上で実行する。 PHP を実行する Web サーバーの種類と、実行方法を訊いてくる。

Install PHP Select Server Module of PHP

一見すると、他にも色々な選択肢があるように見えるが、IIS では FastCGI か CGI のいずれかの選択肢しかないことが分かる。 最初に述べたように、FastCGI を使うつもりで今までに設定してきているので、ここでは「IIS FastCGI」を選択する。 次はインストールするモジュールの選択である。

Select Install Module of PHP

最初は「program」に含まれる「CLI Executable」だけが選択されており、「Extentions」は何も選択されていない状態のはずだ。 今回インストールする PHP は、IIS から実行されさえすれば良く、PHP 単体で動作させる必要は全くないので、「program」に含まれるモジュールは「CLI Executable」だけを選択すれば良く、「Script Executable」を選択する必要はない。 「Extentions」については、全てを選択しておいてもいいのだが、余計なものまで入れてセキュリティホールを増やすこともないので、最低限必要になると予想される「Multi-Byte String」と「MySQL」(「MySQLi」ではない) の 2つだけを選択しておくことにする。

Select Multi-Byte String Extention of PHP Select MySQL Extention of PHP

ここで選択した以外のエクステンションが必要になるようであれば、再度 PHP のインストーラーを実行して、追加すれば事足りる。 これで PHP がインストールされたので、念のため IIS マネージャを使って「FastCGI Setting」の設定を確認しておく。

IIS Manager FastCGI Segging on IIS Manager

インストールした OS が 64bit 版であるために、 IIS も 64bit 版になっている。 しかし、PHP の公式サイトから入手した PHP は 32bit 版であるために、IIS マネージャを使って「アプリケーション プール」から PHP を実行するサイトに対応するアプリケーションプールの「詳細設定」を開き、「32 ビット アプリケーションの有効化」を「True」にしておく必要がある。

Select Application Pool on IIS Manager
Property Sheet of Application Pool

インストールする PHP が 64bit 版であれば、、「32 ビット アプリケーションの有効化」が「False」であっても関係ないが、PHP の公式サイトには今のところ、Windows 用にコンパイルしたものは 32bit 版しか用意されてない。 どうしても 64bit 版の PHP が必要ということであれば、ソースコードを入手して、64bit 版として自力でコンパイルすることになる。 これで IIS で PHP が動作するようになったと思ってはいけない。 まだ php.ini ファイルの編集が残っている。 php.ini ファイルは、PHP をインストールしたフォルダに保存されている。 PHP をデフォルトのフォルダに保存したのなら c:Program Files (x86)PHPphp.ini の、 571行目付近にある「; cgi.fix_pathinfo=1」の行頭の「;」を削除し、「cgi.fix_pathinfo=1」に変更して上書き保存する。 最初に挙げた IIS.netUsing FastCGI to Host PHP Applications on IIS 7.0 には「fastcgi.impersonate = 1;」や、「cgi.force_redirect=0」、「open_basedir」、「extension_dir」なども変更するように書いてあるが、これらは PHP のインストーラーによって、適切に設定されている。

2009.5月8日追記

php.ini ファイルの変更について、上記以外にも修正した箇所があったことを失念していた。 実際には上記に加えて以下の各行の行頭の「;」を削除しておく必要がある。 また、1200、1205、1208、1212行目については、それぞれ「Japanese」を「neutral」に、「EUC-JP」を「UTF-8」に、「auto」を「pass」に、「SJIS」を「UTF-8」に変更する。

修正した結果は以下のようになる。

これで全ての設定が完了し、IIS から PHP が動くはずだ。 PHP の動作を確認するために以下のような 1行だけの PHP プログラムを書いて、IIS の規定のフォルダになっている c:inetpubwwwroot に phpinfo.php という名前で保存する。

ファイルを保存したら、サーバー上で Web ブラウザを使って http://localhost/phpinfo.php にアクセスしてみる。

phpinfo on Web browser

以上で、無事に Windows Web Server 2008 (x64) の IIS で PHP が動作するようになった。 これで Microsoft スキルチャージプログラムの条件を満たすこともできたので、一区切りとする。 実際にはこの後、MySQL と WordPress をインストールして、今まで別のサーバーで動作していたブログを移行したりもしている。 つまり、このサイト自体が今回構築したサーバーで動いているということだったりする。

関連記事

  • OpenCart [Install Maniax 2009]2009.5.11 (月) OpenCart [Install Maniax 2009] インストールマニアックスの作業で出ていた不具合は、「Install Maniax のアクセス権の不具合が分かった!! …のか?」で解消したことにして、OpenCart をインストールしてみる。 OpenCart […]
  • PHP の動作がおかしいので再インストール [Install Maniax 3]2010.1.11 (月) PHP の動作がおかしいので再インストール [Install Maniax 3] インストールマニアックス 3 も残すところ一日となって迫って焦っているところだが、ここに至って PHP がエラーになってしまいどうにもうまく動いてくれない。 MySQL の操作を Web 経由で楽に行なおうと、phpMyAdmin […]
  • PHP をインストール [Install Maniax 3]2010.1.4 (月) PHP をインストール [Install Maniax 3] 正月の三が日が終わった。 昨年末からのインストールマニアックス 3 は、先の記事でわかるように、ようやく IIS のインストールが終わったところだ。 1 月 12 日が締切だというのにこんなことで大丈夫だろうか。 […]
  • PHP のアップグレード版リリースに気づいていなかった2009.9.20 (日) PHP のアップグレード版リリースに気づいていなかった ちょっと知っている人が見れば直ぐに分かることだし、既に何度も現況しているように、この Web サイトは WordPress を使って構築されている。 そして WordPress は PHP という言語を使って作られている。 実は 2009 年 5 […]

コメントを残す