Hyper-V Server のゲスト OS にWindwos Web Server 2008 R2 をインストールし、その上に IIS、PHP、MySQL とインストールした。
これでようやくインストールマニアックス 3 に参戦する土俵ができたことになる (遅すぎという噂は濃厚だが)。
ところでインストールマニアックス 3 の公式ルールによると、IIS が Hyper-V のゲスト OS 上で動いていることを検証するための判定プログラムを動かさなくてはならないらしい。
しかもその判定プログラムは ASP.NET を使っているようで、IIS で ASP.NET を有効にしなくてはならないということだ。
うーん、先に公式ルールをよく読んでおけば、ここで改めて ASP.NET を追加することもなかったのに….、と嘆くこと暫し。
…気を取り直して、IIS に ASP.NET を組み込むために以下のコマンドをサーバーのコマンドラインで実行する。
start /w pkgmgr /iu:IIS-NetFxExtensibility;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ASPNET
判定プログラムのためには IIS-ASPNET だけが必要なはずだが、上のコマンドを見てわかるようにIIS-NetFxExtensibility [.NET 拡張性]、IIS-ISAPIExtensions [ISAPI 拡張]、IIS-ISAPIFilter [ISAPI フィルター] を一緒にインストールしないとうまくいかない。
IIS-ASPNET だけを指定したときも pkgmgr はエラーも何も出さなので、上手くインストールできたようにも見えてしまうが、OCList コマンドを使って確認しても「未インストール」のままとなる。
最初は IIS-ASPNET だけでは何故うまくインストールできないのか原因がわからなかった。
先日書いた「ゲスト OS (Windows Web Server 2008 R2) に IIS をインストール」のリストを再掲する。
今回インストールしたものと、先日インストールしたものを含めて、コマンドラインで直接指定したのは緑色の太字の機能だけだ。
緑色の細字の機能は、それより上位の緑色の太字の機能のインストールに伴って、自動的にインストールされる (正確には IIS-WebServerRole を指定に伴ってインストールされるようだ) 。
- IIS-WebServerRole [Web サーバー (IIS)]
- IIS-WebServer [Web サーバー]
- IIS-CommonHttpFeatures [HTTP 基本機能]
- IIS-StaticContent [静的なコンテンツ]
- IIS-DefaultDocument [規定のドキュメント]
- IIS-DirectoryBrowsing [ディレクトリの参照]
- IIS-HttpErrors [HTTP エラー]
- IIS-HttpRedirect [HTTP リダイレクション]
- IIS-WebDAV [WebDAV 発行]
- IIS-ApplicationDevelopment [アプリケーション開発]
- IIS-ASPNET [ASP.NET]
- IIS-NetFxExtensibility [.NET 拡張性]
- IIS-ASP [ASP]
- IIS-CGI [CGI]
- IIS-ISAPIExtensions [ISAPI 拡張]
- IIS-ISAPIFilter [ISAPI フィルター]
- IIS-ServerSideIncludes [サーバー側インクルード]
- IIS-HealthAndDiagnostics [状態と診断]
- IIS-HttpLogging [HTTP ログ]
- IIS-LoggingLibraries [ログ ツール]
- IIS-RequestMonitor [要求の監視]
- IIS-HttpTracing [トレース]
- IIS-CustomLogging [カスタム ログ]
- IIS-ODBCLogging [ODBC ログ]
- IIS-Security [セキュリティ]
- IIS-BasicAuthen
tication [基本認証] - IIS-WindowsAuthentication [Windows 認証]
- IIS-DigestAuthentication [ダイジェスト認証]
- IIS-ClientCertificateMappingAuthentication [クライアント証明書のマッピング認証]
- IIS-IISCertificateMappingAuthentication [IIS クライアント証明書のマッピング認証]
- IIS-URLAuthorization [URL 承認]
- IIS-RequestFiltering [要求フィルター]
- IIS-IPSecurity [IP およびドメインの制限]
- IIS-BasicAuthen
- IIS-Performance [パフォーマンス]
- IIS-HttpCompressionStatic [静的なコンテンツの圧縮]
- IIS-HttpCompressionDynamic [動的なコンテンツの圧縮]
- IIS-CommonHttpFeatures [HTTP 基本機能]
- IIS-WebServerManagementTools [管理ツール]
- IIS-ManagementScriptingTools [IIS 管理スクリプトおよびツール]
- IIS-ManagementService [管理サービス]
- IIS-IIS6ManagementCompatibility [IIS 6 管理互換]
- IIS-Metabase [IIS 6 メタベース互換]
- IIS-WMICompatibility [IIS 6 WMI 互換]
- IIS-LegacyScripts [IIS 6 スクリプト ツール]
- IIS-FTPServer [FTP サーバー]
- IIS-FTPsvc [FTP サービス]
- IIS-FTPExtensibility [FTP 拡張]
- IIS-WebServer [Web サーバー]
- WAS-WindowsActivationService [Windows プロセス アクティブ化サービス]
- WAS-ProcessModel [プロセス モデル]
- WAS-NetFxEnvironment [.NET 環境]
- WAS-ConfigrationAPI [構成 API]
さて、IIS-ASPNET だけを PKGMgr に指定してインストールしたときにうまくいかなかった原因は、どうやら依存関係にあるらしい。
OSList コマンドを使うことで、インストールできる機能やそれがインストール済みか否かを確認できることについては、ちょっとググればすぐにわかる。
この OSList コマンドを実行した結果をよく見ると、例えば IIS-ASPNET が何箇所にも現れている。
この階層が実は機能の依存関係になっていて、ある機能 (例えば IIS-ASPNET) をインストールするには、それよりも上位の階層の機能 (IIS-ApplicationDeveropment や IIS-ISAPIExtensions、IIS-ISAPIFilter など) がインストールされていないといけないことを意味している。
このことから逆に、ある機能をアンインストールしようとするときは、それよりも下位の階層の機能も一緒にアンインストールされてしまうか、先にアンインストールしておかないといけないかのどちらかであろうと予想できる。
これで ASP.NET の機能がインストールできたと思ったのもつかの間、IIS のアプリケーションプールが勝手に停止してしまう状況が発生した。
幾許かの試行錯誤の末に .NET Framework が不足しているのではないかと推察して、OCList コマンドでインストールの有無を確認してみた。
- NetFx2-ServerCore
- NetFx2-ServerCore-WOW64
- NetFx3-ServerCore-WOW64
- NetFx3-ServerCore
- NetFx3-ServerCore-WOW64
- NetFx2-ServerCore-WOW64
- ServerCore-WOW64
- NetFx2-ServerCore-WOW64
- NetFx3-ServerCore-WOW64
- NetFx2-ServerCore-WOW64
- NetFx2-ServerCore-WOW64
その結果、NetFx2-ServerCore (たぶん Server Core 用の .NET Framework Ver. 2 だろう) はインストールされているものの、それ以外の NetFx3-ServerCore や 32bit サブシステム向けと思われる NetFx2-ServerCore-WOW64、NetFx3-ServerCore-WOW64 がインストールされていない。
そこで以下のコマンドを使ってこれらをインストールすると、アプリケーションプールが勝手に停止しなくなり無事に IIS が復活した。
start /w pkgmgr /iu:NetFx3-ServerCore;NetFx2-ServerCore-WOW64;;NetFx3-ServerCore-WOW
ともかくこれで ASP.NET の機能がインストールできたので、インストールマニアックス 3 の Hyper-V 判定プログラムをインストールするとしよう。
まずはインストールマニアックス 3 の公式ルールのページから Hyper-V 判定プログラムをダウンロードする。
これまで PHP や MySQL と同じように、これも一旦クライアントにダウンロードしてからサーバーにコピーする。
ただし、ダウンロードしたファイルは zip 形式で圧縮されているので、手間を避ける意味でサーバーにコピーする前に予め解凍しておく。
もっとも圧縮されているのは hyper-V.aspx というファイルただ一つだけなので、これをコピーするだけだ。
後はインストールマニアックス 3 の公式ルールのページに書いてある通りに、サーバー上で Web のルートフォルダにコピーしなおせば良い。
最後に Web ブラウザを使って http://コンピューター名/hyper-v.aspx にアクセスしてみる…、が正しく表示されない!!
どうやらこの判定プログラムは Server Core の ASP.NET では正しく判定できないというか、Server Core の .Net Framework にない機能を使っているのではないかと思われる。
この件については、急ぎインストールマニアックス 3 の事務局に問い合わておくとしよう。
2010.1 月 7 日追記
事務局より全参加者向けに解答があった。
どうやら私に限らぬ幾人かから問い合わせがあったようで、全参加者向けに通知がなされた。それによると、インストールマニアックスで使う IIS のサイトのアプリケーションプールで 32bit アプリケーションの実行を許可していることが、Hyper-V 判定プログラムが動作しない原因になっているらしい。
具体的な解決策は公式ブログ中で指示されており、それに従って作業を行った結果、事なきを獲られた。
関連する記事 (Related posts):



最近のコメント