連載:コードから触るIIS 8
PowerShellによるIIS 8のインストール
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のコマンドレットでインストールする場合は下記のコマンドレットを使ってほしい。
Install-WindowsFeature Desktop-Experience
|
Windows PowerShellは管理者モードで起動する必要がある。このコマンドレットの実行を適用させるためにはサーバーの再起動を求められることがある。
IIS 8はWindowsの機能の一部に含まれるため、以下のPowerShellコマンドレットを使ってインストールできる(コマンドレットの説明はTechNetより抜粋)。
- Get-WindowsFeature: コンピューターへのインストールに使用できる全ての役割、役割サービス、機能の一覧を返し、チェックボックス([X])を使用して、インストールされた役割、役割サービス、または機能を表示します。
- Install-WindowsFeature: 指定された役割、役割サービス、機能をコンピューターにインストールします。
- Uninstall-WindowsFeature: 指定された役割、役割サービス、機能をコンピューターから削除します。
IISの機能の確認
IISの機能は「Web-Server」という名前になっている。まずGet-WindowsFeatureコマンドレットで詳細を確認してみよう。-Nameオプション・パラメーターで機能名を指定できる。次のコマンドレット例と実行結果の例では、Format-Listコマンドレットにパイプで渡して表示している。
Get-WindowsFeature -Name Web-Server | Format-List -Property *
|
(基本的に)上の画面例と同じようにInstalledプロパティが「False」になっているはずだ。
IIS関連の機能一覧
次にIIS関連の機能一覧を見てみる。「Web-」で始まる機能名となっているため、次のようにワイルドカードで指定する。
Get-WindowsFeature -Name Web-*
|
IISのインストール
それでは実際にインストールしてみよう。
今回はIIS関連の機能を全てインストールするため、-IncludeAllSubFeatureオプション・パラメーターを指定する。必要な機能を個別に指定することも可能だ。以下はそのPowerShellコマンドと実行結果である。
Install-WindowsFeature Web-Server -IncludeAllSubFeature
|
インストールされたIISの確認
しばらくするとインストールが完了する。再度、IIS関連の機能一覧を見てみると、インストールが完了していることが分かる(次の画面を参照)。
実際にインストールされていることを確認するために、Server ManagerからIIS Managerを立ち上げてみよう。このとき、Web Platform Installerに関するダイアログが立ち上がることがあるが[No]ボタンを押してほしい。
デスクトップの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のダウンロードおよびサイレント・インストールをしてみよう。
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
|
Web PIで提供されている製品の一覧表示
次に、下記のコマンドを実行することで、WebPIから操作できる製品の一覧を表示することができる。
cd 'C:¥Program Files¥Microsoft¥Web Platform Installer'
.¥WebpiCmd.exe /List /ListOption:All
|
Web PIで提供されている製品のインストール
次に、Web PIで提供されている製品を実際にインストールしてみる(次のコマンドを参照)。今回は「Recommended Server Configuration for Web Hosting Providers」をインストールする。
.¥WebpiCmd.exe /Install /Products:WHP_Recommended
|
「/Products:」以下の「WHP_Recommended」という指定は、「Recommended Server Configuration for Web Hosting Providers」でも可能。
このコマンドを実行すると、次の画面に示すように、使用許諾の確認が求められるはずだ。
ここで「Y」と答えると、実際にインストールが実行される。このインストールをPowerShellスクリプトなどで自動化し、サイレント・インストールしたい場合は、次のように/AcceptEulaオプション・パラメーターを付けて実行する。
.¥WebpiCmd.exe /Install /Products:WHP_Recommended /AcceptEula
|
■
以上で、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#コードによりインストール&設定する方法を説明する。
4. オート・スタートによるアプリケーションの初期化処理とメンテナンスページ
IISによるWebサイト起動時に何らかの処理を行うための方法を解説。また、メンテナンスページをIISにより実現する方法も紹介。
5. IIS 8でさわるSignalR 2.0
SignalR 2.0をIIS 8(WebSocket)で動かす方法を説明。Windows Server/IIS、.NET/Visual Studioに関するアップデートについても簡単に紹介。