【IIS7】 [HOW TO] IIS7.0 のインストール方法

時間がある時によく質問のある内容を書きとめておこうと思います。今回はまずはIIS7に触れる上で最も最初にあたる壁、どうやってインストールするかです。コマンドラインなど、やる段階で「ここを参照すれば」とこの投稿を思い出してもらえるとうれしいです。

// はじめに

IIS7 は IIS6 同様、IIS5 の教訓から OS のインストールが行われた段階ではインストールされていません。また明示的にインストールするように指定してもかなり限定的な機能(静的な HTML などをサービスする)のみインストールされます。さらに OS の Edition によって利用できる機能が限定されているものがあります。下記記事にマトリックスが掲載されているのでそこで参照ください。モジュール数だけでなく、一番下に同時接続数の制限も書いてあります。ただ、XP と違い 制限を超えたリクエストはキューに入るだけでいきなりはエラーを返さないという点が注意です。Windows Server 2008 系では制限がありません。これはWindows Vista はあくまでも開発環境として利用することを想定しているということですので極力運用環境で使うことは避けましょう。

IIS7 Features and Windows Vista Editions

https://www.iis.net/articles/onepagearticle.ashx/IIS7/Deploy-an-IIS7-Server/Installing-IIS7/IIS7-Features-and-Windows-Vista-Editions

2009年3月13日 Update:
https://learn.iis.net/page.aspx/479/iis-70-features-and-vista-editions/

また、米国のTech・Edで Server Core でのインストールも可能という発表がありました。まず、Server Core に IIS7 が追加されるのは June CTP からで、Beta 3 には含まれていない点が注意です。そして、Server Core は基本ネットワークサービスをライトで攻撃されにくい環境で提供することを主眼に設計されたものなので、.NET Framework が入っていません。なので現時点では ASP.NET は動作しないというのも注意です。Framework を無理に入れて検証しても Framework が依存しているファイル群で欠けているものがある可能性もあり、徒労に終わるのでそこで絶対時間を使わないでください。

//セットアップ方法の種類

きれいに整理されている単体記事が無いのでここではその役を果たそうと思います。

https://www.iis.net/default.aspx?tabid=7&subtabid=74 にある記事の要約だと思ってください。

1. GUI でのセットアップ方法

一台を作る時はこちらが一般的でしょう。また一番簡単な方法でもあります。

1-1. Windows Vista でのインストール

XPまでの流れをそのまま汲んでいてコントロールパネル - プログラムと機能 - Windows 機能の有効化または無効化 です。これについてはあらためて説明は不要でしょう。ただ、WAS(プロセス起動サービス)にIISは依存しているのでそれも一緒に必要ということは書いておきます。

1-2. Windows Server 2008 でのインストール

Vista と同じようにやろうとするとServer Managerに飛ばされるだけですので、最初からServer Managerの「役割」からインストールするようにしましょう。スタート メニューの一番上にあります。1-1 で書いているWASはWindows Serverでは機能という取扱いになっているので「役割」ではなく「機能」の方に表示されます。

2. コマンドラインでのインストール

複数台のインストール、あるいは慣れてくるとこっちの方が便利で、かなりこちらを使う人が周りでは多いです。

2009年3月13日 Update:
https://learn.iis.net/page.aspx/85/installing-iis-70/

2009年3月13日 Update:特にこの記事
https://learn.iis.net/page.aspx/132/install-iis-7-from-the-command-line/

2-1. Pkgmgr.exe

このコマンドはいわばWindows機能の有効化または無効化をコマンドにしたものであると思えばわかりやすいです。どのOSでもServer Core形態でも利用可能なので一番汎用的です。

- 既定のインストール

start /w pkgmgr /iu:IIS-WebServerRole;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI

- フルインストール

start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;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-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;IIS-FTPPublishingService;IIS-FTPServer;IIS-FTPManagement;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI

- Home Premium のみ

start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-Security;IIS-BasicAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI

Server Coreについてはこちらからの抜粋です。

https://blogs.iis.net/metegokt/archive/2007/06/26/administering-iis7-on-server-core-installations-of-windows-server-2008.aspx

- Server Coreで既定

start /w pkgmgr /iu:IIS-WebServerRole;WAS-WindowsActivationService;WAS-ProcessModel

- Server Core でフル

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

- 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

- Server Coreで静的なコンテンツとFastCGIが動作する環境

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

Pkgmgrについては /iu の代わりに /uuを使うとアンインストールになります。/nを使ったファイルでのモジュール指定はこの記事を参照ください。事前にXML形式のファイルをメモ帳なりで用意しておくことになります。

https://www.iis.net/articles/view.aspx/IIS7/Deploy-an-IIS7-Server/Installing-IIS7/Using-Unattend-Setup-to-Install-IIS7

2-3. ServerManagerCmd.exe

Windows Serverであればこちらが推奨です。-WhatIf や-Queryでの確認など機能が豊富です。こちらはServer Managerをコマンドにしたものであると思うといいでしょう。Server Core、Vistaでは使えません。

https://blogs.iis.net/metegokt/archive/2007/04/13/installing-iis-7-0-using-servermanagercmd-exe.aspx

-WhatIf : Windows PowerShellから登場しているパラメーターで要するに「もしも?」です。このコマンドを実行すると何が起こるのか、この場合では何がインストール/アンインストールされるかを事前に知ることができます。多くのモジュールのインストールが行われる場合には時間がかかりますからそういうことも事前に知ることができます。

メモ帳等でXMLファイルを作っておく方法を推奨します。 -install Web-Server -a とかもできるんですが。

- 既定インストール: Default.xmlとして保存

= ここから =

<ServerManagerConfiguration Action="Install" xmlns="https://schemas.microsoft.com/sdm/Windows/ServerManager/Configuration/2007/1">
<Role Id="Web-Server" />
</ServerManagerConfiguration>

= ここまで =

コマンド: ServerManagerCmd.exe -inputPath Default.xml

- 既定インストール+FastCGI: Default_CGI.xmlとして保存

= ここから =

<ServerManagerConfiguration Action="Install" xmlns="https://schemas.microsoft.com/sdm/Windows/ServerManager/Configuration/2007/1">
<Role Id="Web-Server" />
<RoleService Id="Web-CGI" />
</ServerManagerConfiguration>

= ここまで =

コマンド: ServerManagerCmd.exe -inputPath Default_CGI.xml

- 既定インストール+従来のASP: Default_ASP.xmlとして保存

= ここから =

<ServerManagerConfiguration Action="Install" xmlns="https://schemas.microsoft.com/sdm/Windows/ServerManager/Configuration/2007/1">

<Role Id="Web-Server" />
<RoleService Id="Web-ASP" />
<RoleService Id="Web-Filtering" />
<RoleService Id="Web-ISAPI-Ext" />
</ServerManagerConfiguration>

= ここまで =

コマンド: ServerManagerCmd.exe -inputPath Default_ASP.xml

- 既定インストール+ASP.NET: Default_ASPNET.xmlとして保存

= ここから =

<ServerManagerConfiguration Action="Install" xmlns="https://schemas.microsoft.com/sdm/Windows/ServerManager/Configuration/2007/1">

<Role Id="Web-Server" />
<RoleService Id="Web-ASP-Net" />
<RoleService Id="Web-Net-Ext" />
<RoleService Id="Web-Filtering" />
<RoleService Id="Web-ISAPI-Filter" />
<RoleService Id="Web-ISAPI-Ext" />
</ServerManagerConfiguration>

= ここまで =

コマンド: ServerManagerCmd.exe -inputPath Default_ASPNET.xml

- フルインストール: Default_FULL.xmlとして保存

= ここから =

<ServerManagerConfiguration Action="Install" xmlns="https://schemas.microsoft.com/sdm/Windows/ServerManager/Configuration/2007/1">

<Role Id="Web-Server" InstallAllSubFeatures="true" />
</ServerManagerConfiguration>
= ここまで =

コマンド: ServerManagerCmd.exe -inputPath Default_FULL.xml

2-4. DISM.exe

Windows 7 と R2 で使えるこのコマンドは強力です。
意味はぜひ 下記の投稿 を読んでいただければと思います。
【Win2008R2】 DISM ってなんだろう?
【IIS7】 FTDセミナー振り返りシリーズ Vol.2

DISM /online /enable-feature /feature-name:IIS-WebServerRole

という感じで使いますが、/Get-Features と一緒に使います。

2-5. Windows PowerShell の ServerManager スナップイン

PowerShell で統一したい方にはこちらがオススメ。Server Coreでも使える優れものです。

Import-Module servermanager
$module = Get-Module servermanager
$module.ExportedCmdlets

Add-WindowsFeature

3. インストールされているかの確認方法

3-1. Windows Vista

コントロールパネル - プログラムと機能 - Windows 機能の有効化または無効化 でXPのように確認します。

3-2. Windows Server 2008

Server Managerの「役割」で確認します。あるいはServerManagerCmd.exe -queryで確認します。-queryの後にファイル名を書くと出力内容を表示するとともにXMLでそのファイルにも出力します。

3-3. Windows Server 2008 Server Core

oclist.exe で確認します。

3-4. Win7 と R2 のみ

DISM.exe /online /Get-Features

ということで。遭遇した問題などありましたら是非コメントくださいませ。

3/13 に Windows 7 や R2に関する情報をUpdateしました。

Comments

  • Anonymous
    January 01, 2003
    それでは早速 第一話。 {IIS7.0 を検討する際に見ておきたいこと} ●技術的な概要は押さえておこう! IIS7と一言で言ってもWebサーバーというのは本当に多くの機能を備えており、IISの場合は用途が多様化を続けています。コンテンツがビデオにも及ぶことを考慮した色々な機能や先進的なFTPであったりと機能を列挙するだけで本当に数多いです。ということを踏まえると、何ができるのか?

  • Anonymous
    January 01, 2003
    The comment has been removed

  • Anonymous
    January 01, 2003
    米国で開発チームと話をしてきたら以下のことを言っていましたのでUpdateとして書いておきます。 Server Coreでセットアップする時にはpkgmgrではなく、ocsetupを使おう。ocsetupの方がチェックが効くのでお奨めです。 ということでした。ocsetupは役割ごとにセットアップするものでもあったのでまあなるほどと思ったのでした。ただ、ocsetupはpkgmgrのWrapperでもあるのでpkgmgrで間違いの無いコマンドを入力していれば問題はないです。