PHP on IIS あなたの可能性を広げる、Windows 環境へ。

HOME

  • EVENT 早く知る、深く知る。お役立ちイベント情報
  • LEARNING PHP on IIS、はじめの一歩。多彩な学習用コンテンツ
  • SUPPORT 導入に向けてのサポート情報
  • FACTS PHP on IIS が選ばれる、これだけの事実
  • WHY IIS? 現場が語る、PHP on IIS の可能性

LEARNING PHP on IIS、はじめの一歩。多彩な学習コンテンツ

IIS 7.0 を極める

第 3 回

Windows Server Core と IIS

マイクロソフト株式会社
IT Pro エバンジェリスト
奥主 洋

本編に入る前に

今回は前の 2 回とは少し違ったタッチでとても注目されている Windows Server 2008 から登場した新しいインストール形態、サーバー コア (Server Core) で IIS 7.0 を利用する点に注目してみましょう。

Server Core はよく「GUI の無い Windows」と言われ、UNIX 系の OS のコマンドのみの起動画面を想像される方が多いのですが、厳密に言うとそうではありません。Server Core の起動直後の画面は完全インストールと同じで Ctrl + Alt + Del でログオンするようになっており、ログオン後に起動する画面が違います。

Server Core ログイン画面

コマンド プロンプトが一つだけ開き、通常の Windows シェル (スタート メニューほか) がありません。故になんでもコマンドで実行する必要があります。この点を捉えて「GUI の無い Windows」と呼ばれているのです。しかし、コマンド プロンプトの背景を操作するには通常の壁紙のレジストリを変更することでできますし、ログオン後に Ctrl + Alt + Del を押すと、完全インストールと同じように画面をロックしたり、タスク マネージャを起動することができます。

メモ

唯一の入力画面であるコマンド プロンプトを Server Core で Exit あるいは画面右上で × をクリックして閉じてしまったらどうすればいいのでしょう? 簡単です。Ctrl + Alt + Del を押してタスク マネージャで cmd.exe を起動するか、いったんログオフすればいいのです。余談ですが LOGOFF コマンドというのもあります。一度お試しください。

そして本編に入る前に大きなポイントを申し上げておきますと、Server Core インストールでは ASP.NET は動作しません。これは .NET Framework を始め、完全インストールで含まれる多くの DLL が Server Core で搭載されていないことによります。この点を確認するのに最も最適なのはメモ帳を起動し、ファイルを開くダイアログを見てみることです。久し振りに見るダイアログが表示されると思いますが、これはコモン コントロールが近年の多機能なものが Server Core には無いためにこの形になったのです。

Server Core メモ帳

これらの背景を理解した上で考えると Server Core に最適な IIS 7.0 利用方法は静的ファイル (HTML や画像など) 、従来の ASP、FastCGI 対応言語の動作環境としてということになります。それでは今回の本編に入って行きましょう。

はじめに

Tech・Ed 2007と当時の Bill Staples (IIS 開発チーム責任者) のブログ投稿でも明かされたように IIS 7.0 は Windows Server 2008 の Server Core インストールでも利用可能です。Server Core 上の IIS 7.0 は新しく強力な Web サーバーの機能を最小フットプリントで持つサーバー OS の組合せということになります。要求ディスク スペースがより少なく、メモリの使用量もより少なく、攻撃側面も減少したとても管理の手間がより少なく済む 観点でとても優位です。

この記事では IIS 7.0 を Server Core で利用する基本的な導入手順を従来の ASP (拡張子 .asp) と PHP アプリケーション (拡張子 .php) を利用することを想定して解説します。

TOP に戻る

Server Core の IIS 展開と構成における Tips
Q1. Server Core 上でもう既にインストールされている役割を確認するには?

A. oclist.exe を実行します。

Q2. Server Core 上で IIS 7.0 をインストールする方法は?

A. pkgmgr.exe コマンド ライン ツール を使用して Server Core 環境に IIS 7.0 をインストールすることができます。

フル インストールを行うには、下記をコマンド プロンプト ウィンドウから入力します。
start /w pkgmgr /iu:IIS-WebServerRole;WAS-WindowsActivationService;WAS-ProcessModel

start /w pkgmgr
/iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-ODBCLogging;IIS-Security;IIS-BasicAuthentication;IIS-WindowsAuthentication;IIS-DigestAuthentication;IIS-ClientCertificateMappingAuthentication;IIS-IISCertificateMappingAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools; IIS-ManagementScriptingTools;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-FTPPublishingService;IIS-FTPServer;WAS-WindowsActivationService;WAS-ProcessModel

メモ
  • 1. アンインストールする際には「/iu:」の代わりに「/uu:」を上記のコマンドで指定すれば実行できます。
    (例: Start /w pkgmgr /uu:IIS-WebServerRole…)
  • 2. pkgmgr.exe に関する追加情報はこちらを参照ください。
Q3. IIS 7.0 の機能のうち、Windows Server 2008 の Server Core インストールで利用できないのはどれですか?

Server Core インストールは通常の Windows Server 2008 インストールとはいくつかの差異があります。一言でまとめると、.NET Framework がありません (つまり ASP.NET は動作しない) 、そして Windows のシェルがありませんので GUI 管理ツールはありません。一点 書き添えておくと、Server Core インストールにおける.NET Framework をインストールする点については引き続き議論されており、現時点で最終結論は出ていません。

A. 下記の機能が Server Core インストールには存在しません。

  • IIS-ASPNET
  • IIS-NetFxExtensibility
  • IIS-ManagementConsole
  • IIS-ManagementService
  • IIS-LegacySnapIn
  • IIS-FTPManagement
  • WAS-NetFxEnvironment
  • WAS-ConfigurationAPI
Q4. Server Core で従来の ASP 機能をインストールする方法は?

A. pkgmgr.exe コマンドに下記のパラメータをつけて実行します。これで Server Core マシンに静的コンテンツとともに従来の ASP をインストールできます。

Start /w pkgmgr
/iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-ApplicationDevelopment;IIS-ASP;IIS-ISAPIExtensions;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;WAS-WindowsActivationService;WAS-ProcessModel

TOP に戻る

Server Core に FastCGI サポート / PHP をインストールする

FastCGI は言語に依存しない、スケーラブルでオープンな CGI の拡張で、Windows 環境において高パフォーマンスを発揮します。FastCGI 拡張は Server Core へもインストール可能で、PHP のようなアプリケーション フレーム ワークを実行可能にし、IIS 上での改善されたパフォーマンスと安定性を提供します。PHP 実行環境を構築する際には FastCGI を利用することを強く推奨します。この項では FastCGI 拡張をインストールし、PHP アプリケーションが動作できる環境を準備する方法を解説します。

FastCGI と静的なコンテンツ (HTML や画像など) を処理できる Web サーバーをインストールするには下記のコマンドを Server Core のコマンド ラインに入力し、実行します。

Start /w pkgmgr
/iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-ApplicationDevelopment;IIS-CGI;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;WAS-WindowsActivationService;WAS-ProcessModel

メモ

もちろん Q2 で示したフル インストールを行ってもいいですが、既定インストールには Fast CGI が含まれません。

IIS 7.0 で PHP 環境をインストールする
  • 最新の PHP ビルドを下記からダウンロードします。
    http://www.php.net/downloads.php
  • Windows Binaries の中から Non-thread-safe zip package をダウンロードして解凍します。
メモ

Server Core はブラウザがありませんので PHP コンテンツをダウンロードする際、どこかブラウザからアクセスが可能なファイル共有にいったん置いて他のマシンで解凍することを推奨しておきます。

  • %SystemDrive%\PHP ディレクトリを Server Core マシン上に作成し、上記の共有から Robocopy などでコピーをします。
  • %SystemDrive%\PHP\PHP.INI-Recommended ファイルをコピーし、%SystemDrive%\PHP\PHP.INI とします。
  • 下記の二つの AppCmd.exe コマンドを実行することで PHP/FastCGI ハンドラー マッピングを作成します。
    AppCmd set config /section:system.webServer/fastCGI /+[fullPath='d:\php\php-cgi.exe']
    AppCmd set config /section:system.webServer/handlers /+[name='PHP-FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='d:\php\php-cgi.exe',resourceType='Either']
メモ

AppCmd.exe は IIS 7.0 とともに出荷されている新しい管理用コマンドです。AppCmd.exe は %WinDir%\System32\Inetsrv にあります。AppCmd コマンドについてはこちらを参照ください。 PHP をインストールした場所によってハードディスク上の実行パス変更を必要とする可能性があります。上記の appcmd コマンドの実行例は D:\php に配置した想定になっています。ハンドラー マッピングは Web サイト、アプリケーションの単位でも設定可能ですが、このコマンドで実施しているのはマシン全体に適用されるハンドラー マッピングです。

PHP の構成ページを表示してテストする
  • コマンド ラインからメモ帳を起動します。下記の内容を入力し、C:\inetpub\wwwroot\phpinfo.php として保存します。
    <?
    phpinfo () ;
    ? >
  • http://マシン名/phpinfo.php がリモートのマシンから起動できることを確認します。
  • ページが表示され、下記の内容が表示されます。
PHP TOP 画面
メモ

Server Core 上で動作確認をしたい場合にお手軽な方法は IIS 6.0 Resource Kit Tools に入っている WFetch ツールを使用することです。コンテンツを表示できませんが、HTTP 通信の結果を見ることができます。こちらから単独でダウンロードすることもできます。

Server Core WFetch ツール

TOP に戻る

Server Core を管理する際の Tips

ここでは IIS ではなく、Server Core 自身を構成する標準的な操作を行う上で役に立つコマンドの Tips をご紹介します。基本的に Server Core 開発を行っているチームのブログがとても参考になります。

Q1. Server Core でコマンド ウィンドウを開く方法は?

A. Ctrl + Alt + Del (仮想環境であれば相当のキー) を押して、タスク マネージャの起動を実行します。タスク マネージャの中で、新しいタスクで cmd.exe と入力して OK します

Q2. Server Core マシンのリモート デスクトップ接続を有効にするにはどうすればいいでしょうか?

A. 他の Windows Server 2008 あるいは Vista マシンから接続したい場合には下記のコマンドを実行します。

Cscript %windir%\system32\SCRegEdit.wsf /ar 0

また、以前の Windows OS (Windows XP など) から接続したい場合には下記の 2 行を実行します。

Cscript %windir%\system32\SCRegEdit.wsf /ar 0
Cscript %windir%\system32\SCRegEdit.wsf /cs 0

Q3. Administrator のパスワードを変更する方法は?

A. Net user administrator * をコマンド プロンプトで実行し、プロンプトが表示されたら Administrator の新しいパスワードを入力します。

Q4. あるユーザーをローカルの administrators グループに追加する方法は?

Net localgroup Administrators /add <domain>\<username>

Q5. マシンの名前を変更する方法は?

A. ワーク グループ所属のマシンの場合は下記のコマンドを実行しましょう。

Netdom renamecomputer <currentcomputername> /NewName:<new computer name>

あるいはマシンがドメインに参加しているメンバーの場合には下記のコマンドを実行します。

Netdom renamecomputer <currentcomputername> /NewName:<new computer name> /userd:<domain>\<username> /password:*

Q6. マシンをドメインに参加させる方法は?

A. 下記のコマンドを実行します。

Netdom join %computername% /domain:<domain> /userd:<domain>\<username> /password:*

Q7. マシンをドメインからワーク グループに移行する方法は?

A. 下記のコマンドを実行します。

Netdom remove

Q8. ファイアウォールを無効にする方法は?

A. 下記のコマンドを実行します。

netsh firewall set opmode disable

Q9. Server Core のマシンを再起動する方法は?

A. 下記のコマンドを実行します。

shutdown /r

Q10. 更新プログラムをインストールする方法は?

A. 下記のコマンドを実行します。

Install: wusa <update_package_name.msu> /quite

Q11. イベント ログにはどのようにアクセスしますか?

A. イベント ログ名を一覧するには下記のコマンドを実行します。

Wevtutil el

特定のイベント ログに記録されているイベントをクエリーするには以下のコマンドを実行します。

Wevtutil qe <イベント ログ名>

TOP に戻る

今回は Windows Server 2008 で登場した新しいインストール形態 Server Core とその上で IIS 7.0 をインストールし、ASP や PHP を動作させる方法を整理しました。次回はまたアーキテクチャに戻り、新しい XML ファイルベースの構成や色々な管理方法について整理していきます。

本記事は http://iis.net サイトの LEARN ページを基に日本語化と独自解説を加えたものです。
参考にした原文は下記です。
IIS 7.0 on Server Core
Installing FastCGI Support On Server Core

  • PHP IIS の HOME に戻る
  • TOP に戻る

1999 年、日本企業の情報 IT 子会社からマイクロソフト日本法人に転職。デベロッパー向けサポート、コンサルティング部門を渡り歩き、2005 年から IT Pro エバンジェリスト チームに異動。源流は IBM AS / 400 のプログラマー。