Server Core上でのWebアプリケーション配置
- 3回
最後にWindows Server 2008 R2でサポートされるようになった、Server Core上でのASP.NETアプリケーションのホスティングを試してみることにする。
Server CoreとはOSインストール時に選択できるオプションであり、サーバーの実行に必要最低限の環境だけがインストールされるため、管理の手間を軽減できるというものだ。Server CoreではGUIのツールがほとんど提供されないため、基本的にコマンドプロンプトで操作を行っていくことになる。
Windows Server 2008ではServer Core上でASP.NETアプリケーションを動作させることはできなかったが、R2からはサポートされることになったので、こちらも一通り試してみよう。
まず、別のマシンでWindows Server 2008 R2のインストールを開始し、インストールオプションとしてServer Coreを選択した。Server Coreの場合は、インストールにかかる時間も短いようだ。
インストール完了後にログオンしてみると、表示されたのはコマンドプロンプトのみである。
Windows Server 2008 R2では、ドメインへの参加やネットワークなどの基本的な設定は「sconfig」コマンドで行えるようになっている。
Server Core上で詳細な設定を行うためのコマンドラインツールとしては、ocsetupやpkgmgrなどが搭載されているが、ここではdism(Deployment Image Servicing and Management)というツールを使って必要な機能の有効化を行っていくことにする。
まず、IISの有効化を行うために、「dism /online /enable-feature /featurename:IIS-WebServerRole」というコマンドを実行した。するとすぐにIISの有効化が終了し、Webブラウザでアクセスできることが確認できた。
続いて、ASP.NETの有効化を行ってみる。先ほど同じようにdismコマンドで「IIS-ASPNET」を有効化してみると、次のようなエラーメッセージが表示されてしまった。
操作は完了しましたが、IIS-ASPNET 機能は有効にされませんでした。
次の親機能が有効であることをまず確認します。既に有効になってい
る場合は、詳細な診断を行うためログ ファイルを参照してください。
IIS-ISAPIFilter, IIS-ISAPIExtensions, IIS-NetFxExtensibility,
NetFx2-ServerCore
このメッセージを見ると、IIS-ASPNETを有効化する前にいくつか有効化しなくてならない機能があるようだ。そこで、「IIS-ISAPIFilter」「IIS-ISAPIExtensions」「IIS-NetFxExtensibility」「NetFx2-ServerCore」をそれぞれdismコマンドで有効化した後、もう一度「IIS-ASPNET」を有効化してみると、今度は問題なく完了した。
あとは、Visual Studio 2008を利用して.NET Framework 2.0で開発したWebアプリケーションを共有フォルダ経由でServer CoreのOS上にコピーをした。しかし、IIS上でWebアプリケーションとして稼働させるためには、IISマネージャーを使って「アプリケーションへ変換」という処理が必要になる。Server Core上ではIISマネージャーを使うことができない。そこで、GUIのIISマネージャーを使用できるマシンからリモートで接続し、IISの管理を行うことにした。
まず、IISの管理サービスを有効化するために、次のコマンドを実行した。
dism /online /enable-feature /featurename:IIS-ManagementService
続いて、リモートのマシンから接続できるように、レジストリエディタで「HKLM\Software\Microsoft\WebManagement\Server\EnableRemoteManagement」の値を「0」から「1」を書き換えた。
それから、次のコマンドを実行して、IISの管理サービスを起動した。
net start wmsvc
これで、Windows Server 2008 R2がインストールされた別のコンピュータから接続ができるようになったはずだ。
Windows Server 2008 R2がインストールされたもう一台のマシンでIISマネージャーを起動し、Server Coreがインストールされているマシンに接続してみる。
IISマネージャーの「ファイル」メニューの「サーバーに接続」をクリックし(画面左)、マシン名と資格情報を入力すると、無事Server Core上のIISに接続できた(画面右)。
そして、先ほどコピーしたASP.NETアプリケーションのフォルダに対し「アプリケーションへの変換」を実行した後、Webブラウザでアクセスすると、ASP.NET Webアプリケーションが動作していることを確認できた。さらに「NetFx3-ServerCore」をインストールすることで、.NET Framework 3.5を使用して開発されたWebアプリケーションを動作することも確認した。
ちなみに、Server Core上のIISを管理する方法としては、PowerShellを使うこともできるようだ。Server CoreにはPowerShellもデフォルトでは有効化されないので、次のコマンドで有効化した。
dism /online /enable-feature /featurename:MicrosoftWindowsPowerShell
さらに、PowerShellのIIS管理モジュールを使用するために「Set-ExecutionPolicy」コマンドレットを使用して実行ポリシーの変更を行い、「Import-Module」コマンドレットを使ってWebAdministrationモジュールをインポートした後、次のコマンドを実行することで、IISマネージャー上での「アプリケーションの変換」と同じ処理を行うことができた。
ConvertTo-WebApplication -applicationpool "DefaultAppPool" "IIS:\sites\Default Web Site\WebSite"
以上で、Server Core上でのASP.NETを動作させるところまでを試してみた。
従来のGUIを使用した場合とまったく異なるので、初めはとまどうこともあったが、コマンドラインでの操作ツールが十分そろっているため、慣れてしまえばそれほど問題はない。Server Coreであればリソースの消費量が少ないため、複数台で大規模なWebアプリケーションを展開する場合のアプリケーションサーバーとして活用できそうである。
* * *
- 3回
これで、Windows Server 2008 R2でのIISを中心とした機能を一通り試し終えたと思う。
役割の追加に合わせてファイアウォールの設定が自動的に行われる機能など、「セキュアな設定を維持しながら、それでいて簡単に使える」という印象を受けた。
また、FTP 7.5やPowerShellでのIIS管理モジュールなど、Windows Server 2008では別途アドオンが必要であった機能もすべて標準搭載されているため、全体としての統一された操作性を持つOSであると感じた。