連載:コードから触るIIS 8

連載:コードから触るIIS 8

PowerShellによるIIS 8のインストール

2013年7月12日

Windows Server 2012に搭載されているWebサーバー「IIS 8」の機能を「コードから触って動かす」をテーマにした連載スタート。今回はPowerShellスクリプトでIISのセットアップなどを実行する方法を紹介する。

株式会社グラニ 田中 孝佳
  • このエントリーをはてなブックマークに追加

 昨年、Windows Server 2012とともにリリースされたIIS 8(Internet Information Services 8)はWebサーバー「IIS」の最新版であり、WebSocketのサポートやSSL関連およびApplication Initialization Moduleといった新機能が多数入っている。この連載では、これらの新機能も含めてIIS 8の機能を「コードから触って動かす」をテーマに紹介したいと思う(詳しくは後述するが、コード化することで、Windows Serverの構築の自動化が行えるなどのメリットがある)。なお、ASP.NET 4.5をIIS 8上で動かすことを中心に取り上げる。

IISのセットアップ

 初回は準備の意味も兼ねて、PowerShellを使ってWindows Server 2012にIIS 8をインストールしてみよう。

 本連載では、Microsoft Azure(旧称:Windows Azure)上の仮想マシンとして起動した「Windows Server 2012 Datacenter Edition」を使って説明する。なお、AWS上のWindows Server 2012でも同じコードで動くことを確認しており、ほかの環境でも同様に正常に動作すると思われる(※編集部注: 編集部内で通常のWindows Server 2012 Datacenter Editionで本稿の内容どおりに実施できるのを確認済み)。また、Azure上のWindows Server 2012の仮想マシンは現在、初期設定が英語ロケールのものしかないため、スクリーン・ショットも英語ロケールでの画面になることをご了承いただきたい。

 通常、OSが起動してデスクトップ画面が表示されると、GUIからセットアップする場合はServer Managerを起動する、もしくは自動的に起動してくる。今回はこれを使わず、代わりにPowerShellを起動する。なお、掲載しているスクリーン・ショットを取るために、デスクトップ・エクスペリエンスを先にインストールしていることに留意されたい。なお、デスクトップ・エクスペリエンスをPowerShellのコマンドレットでインストールする場合は下記のコマンドレットを使ってほしい。

PowerShell
Install-WindowsFeature Desktop-Experience
デスクトップ・エクスペリエンスをインストールするPowerShellコマンドレット

Windows PowerShellは管理者モードで起動する必要がある。このコマンドレットの実行を適用させるためにはサーバーの再起動を求められることがある。

インストール直後のWindows Server 2012

Server Manager1が起動している場合は閉じて、PowerShellコンソール2を開く。

 IIS 8はWindowsの機能の一部に含まれるため、以下のPowerShellコマンドレットを使ってインストールできる(コマンドレットの説明はTechNetより抜粋)。

  • Get-WindowsFeature: コンピューターへのインストールに使用できる全ての役割、役割サービス、機能の一覧を返し、チェックボックス([X])を使用して、インストールされた役割、役割サービス、または機能を表示します。
  • Install-WindowsFeature: 指定された役割、役割サービス、機能をコンピューターにインストールします。
  • Uninstall-WindowsFeature: 指定された役割、役割サービス、機能をコンピューターから削除します。

IISの機能の確認

 IISの機能は「Web-Server」という名前になっている。まずGet-WindowsFeatureコマンドレットで詳細を確認してみよう。-Nameオプション・パラメーターで機能名を指定できる。次のコマンドレット例と実行結果の例では、Format-Listコマンドレットにパイプで渡して表示している。

PowerShell
Get-WindowsFeature -Name Web-Server | Format-List -Property *
IISの機能詳細を確認するためのコマンド(PowerShell)
上記のコマンドを実行して、IISのインストール状況を確認している例

 (基本的に)上の画面例と同じようにInstalledプロパティが「False」になっているはずだ。

IIS関連の機能一覧

 次にIIS関連の機能一覧を見てみる。「Web-」で始まる機能名となっているため、次のようにワイルドカードで指定する。

PowerShell
Get-WindowsFeature -Name Web-*
IIS関連の機能を一覧表示するためのコマンド(PowerShell)
上記のコマンドを実行して、IISおよびその下位機能のインストール状況の確認をしている例

IISのインストール

 それでは実際にインストールしてみよう。

 今回はIIS関連の機能を全てインストールするため、-IncludeAllSubFeatureオプション・パラメーターを指定する。必要な機能を個別に指定することも可能だ。以下はそのPowerShellコマンドと実行結果である。

PowerShell
Install-WindowsFeature Web-Server -IncludeAllSubFeature
Web-Server(IIS)の機能を下位の機能含めてインストールするためのコマンド(PowerShell)
Web-Server(IIS)のインストール中とインストール後の画面

インストールされたIISの確認

 しばらくするとインストールが完了する。再度、IIS関連の機能一覧を見てみると、インストールが完了していることが分かる(次の画面を参照)。

IIS関連機能が全て「Installed」になっている

 実際にインストールされていることを確認するために、Server ManagerからIIS Managerを立ち上げてみよう。このとき、Web Platform Installerに関するダイアログが立ち上がることがあるが[No]ボタンを押してほしい。

Server ManagerからIIS Managerを立ち上げているところ

デスクトップの1[Server Manager]を起動し、2[IIS]を選択する。[Servers]一覧にあるサーバー項目を右クリックし、(表示されるコンテキスト・メニューから)3[Internet Information Service (IIS) Manager]を選択して、IIS Managerを起動する。

Web Platform Installer のインストールと利用

 さて、先ほど「ダイアログが立ち上がることがある」と説明したように、IIS関連の追加機能や設定をするためにWeb PI(Web Platform Installer)が使われている。そこで、Web PIのインストールとWeb PIを使った追加機能のインストールもPowerShellから実施してみたい。

Web PI自体のインストール

 Web PIのコマンドライン・ツール(以下、WebPICMD)は、現在、「Web Platform Installer v4 Command Line (WebPICMD.exe) - RTW release(英語)」というページの文中のリンクからインストーラーをダウンロードできる。なお、ダウンロードしてインストールすると、ライセンス条項に同意したと見なされるので確認してほしい。

 それでは、下記のPowerShellスクリプトでWeb PIのダウンロードおよびサイレント・インストールをしてみよう。

PowerShell
Invoke-WebRequest "http://download.microsoft.com/download/7/0/4/704CEB4C-9F42-4962-A2B0-5C84B0682C7A/WebPlatformInstaller_amd64_en-US.msi" -OutFile "C:¥WebPI.msi"
C:¥WebPI.msi /quiet
「C:\WebPI.msi」にWebPICMDのインストーラーをダウンロードし、インストールするためのスクリプト(PowerShell)

Web PIで提供されている製品の一覧表示

 次に、下記のコマンドを実行することで、WebPIから操作できる製品の一覧を表示することができる。

PowerShell
cd 'C:¥Program Files¥Microsoft¥Web Platform Installer'
WebpiCmd.exe /List /ListOption:All
WebPIから操作できる製品の一覧を表示するコマンド(PowerShell)
上記のコマンドを実行して、WebPIから操作できる製品の一覧を表示している例

Web PIで提供されている製品のインストール

 次に、Web PIで提供されている製品を実際にインストールしてみる(次のコマンドを参照)。今回は「Recommended Server Configuration for Web Hosting Providers」をインストールする。

PowerShell
WebpiCmd.exe /Install /Products:WHP_Recommended
Recommended Server Configuration for Web Hosting Providersをインストールするコマンド(PowerShell)

「/Products:」以下の「WHP_Recommended」という指定は、「Recommended Server Configuration for Web Hosting Providers」でも可能。

 このコマンドを実行すると、次の画面に示すように、使用許諾の確認が求められるはずだ。

Recommended Server Configuration for Web Hosting Providersのインストール中に使用許諾を求められた画面

 ここで「Y」と答えると、実際にインストールが実行される。このインストールをPowerShellスクリプトなどで自動化し、サイレント・インストールしたい場合は、次のように/AcceptEulaオプション・パラメーターを付けて実行する。

PowerShell
WebpiCmd.exe /Install /Products:WHP_Recommended /AcceptEula
Recommended Server Configuration for Web Hosting Providersを使用許諾の確認なしにインストールするコマンド(PowerShell)

 以上で、IISのセットアップとWeb PIのインストールや操作をPowerShellスクリプトで実行することができた。筆者の所属する企業でも、このスクリプトを基に、利用するWindows Serverの構築の自動化を進めている。

 次回はIIS上でASP.NETを動かすためのWebサイトの作成をコードから行ってみたいと思う。

※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

1. 【現在、表示中】≫ PowerShellによるIIS 8のインストール

Windows Server 2012に搭載されているWebサーバー「IIS 8」の機能を「コードから触って動かす」をテーマにした連載スタート。今回はPowerShellスクリプトでIISのセットアップなどを実行する方法を紹介する。

2. C#コードによるARR 3.0 RTMのインストールと設定

7月26日に正式版がリリースされた「ARR(Application Request Routing) 3.0」とは? そのARRを、C#コードによりインストール&設定する方法を説明する。

3. C#でアプリケーション・プールの設定とWebサイトの作成

IISでのWebサイトの作成をC#コードから行ってみよう。一連の開発手順とコードを分かりやすく解説。

4. オート・スタートによるアプリケーションの初期化処理とメンテナンスページ

IISによるWebサイト起動時に何らかの処理を行うための方法を解説。また、メンテナンスページをIISにより実現する方法も紹介。

5. IIS 8でさわるSignalR 2.0

SignalR 2.0をIIS 8(WebSocket)で動かす方法を説明。Windows Server/IIS、.NET/Visual Studioに関するアップデートについても簡単に紹介。

サイトからのお知らせ

Twitterでつぶやこう!