FullStackEngineer 2018年5月1日更新

ウィンドウズサーバ

Index

Microsoft Internet Information Services (IIS) 徹底解説

1 はじめに

IISとは何か

Microsoft Internet Information Services (通称: IIS) は、Microsoft Windows上で動作する、拡張可能で柔軟なWebサーバーソフトウェアです。 ApacheやNginxと並ぶ世界的なシェアを持つWebサーバーの一つで、Webサイトのホスティングだけでなく、Webアプリケーションの実行環境やメディア配信など、多岐にわたる機能を提供します。

なぜ今、IISが重要なのか

多くの企業システムやWebアプリケーションはWindows Server上で稼働しており、その中核を担うのがIISです。 特に、Microsoftの強力なフレームワークであるASP.NET Core.NET Frameworkで開発されたアプリケーションを動かすための最適なプラットフォームとして、またActive DirectoryなどのWindows基盤と連携したセキュアな社内システム構築において、依然として不可欠な存在です。


2 ビギナー向け・ドキュメント

概要:Windowsの中にある「受付カウンター」

IISを初心者にわかりやすく例えるなら、Windowsというビルの中に設置された「総合受付カウンター」です。

  • クライアント (ブラウザ): 来客。「この書類(Webページ)を見たいのですが」とリクエストします。
  • IIS (受付): 来客の要望を聞き、適切な部署(アプリケーション)に案内したり、手元にある資料(HTMLファイルや画像)を直接渡したりします。
  • Windows統合: ビル全体のセキュリティ(Windows認証)と連携しており、「社員証(アカウント)」を持っている人だけを通すといった管理が得意です。

公式情報・主要リソース

Microsoftの公式ドキュメントは非常に充実しており、日本語訳も正確です。

導入:Hello World (静的ファイルの配置)

IISはWindowsの「機能の有効化」からインストールできます。インストール後、デフォルトの公開フォルダにファイルを置くだけで公開できます。

  1. WindowsでIISを有効化する。
  2. C:\inetpub\wwwroot フォルダを開く。
  3. 以下の内容で hello.html を作成して保存する。
<h1>Hello, IIS World!</h1>
<p>これは私の最初のWebサーバーです。</p>
  1. ブラウザで http://localhost/hello.html にアクセスして確認する。

3 会話集

エンジニアの現場でよくある、IISに関するQ&Aです。

Q1. LinuxのApacheやNginxと比べて、IISの良いところは何ですか?

先輩エンジニア: 「一番の違いはGUI(管理画面)の使いやすさだね。黒い画面でコマンドを打たなくても、マウス操作で設定変更や再起動ができるから、直感的に管理できるんだ。あと、Windows認証を使った社内ポータルなんかはIIS一択と言ってもいいくらい相性が良いよ。」

Q2. IISの設定はどこに保存されているんですか?

同僚: 「基本的には web.config というXMLファイルに書かれているよ。フォルダごとにこのファイルを置くことで、特定のディレクトリだけ設定を変えるといったことも簡単にできるんだ。」

Q3. 「アプリが落ちた」ときにIIS側でできることはありますか?

リーダー: 「IISにはアプリケーションプールという機能があって、アプリごとにプロセスを分けているんだ。だから、あるアプリがクラッシュしても、他のアプリは無事なことが多い。自動的に再起動(リサイクル)させる設定もできるから、可用性は高いよ。」


4 より深く理解する為に

アーキテクチャの裏側:堅牢性の秘密

IISの強みは、カーネルモードとユーザーモードを巧みに使い分けるアーキテクチャにあります。

  1. HTTP.sys (カーネルモード):
    • OSの深い部分で動作するリスナー。ネットワークからのリクエストを最速で受け取り、適切なキューに振り分けます。IIS本体が停止しても、このリスナーが生きていればリクエストを取りこぼさない場合があります。
  2. ワーカープロセス (w3wp.exe):
    • 実際にWebアプリケーションコード(ASP.NETなど)を実行するプロセス。
  3. WAS (Windows Process Activation Service):
    • ワーカープロセスのライフサイクル(起動、停止、リサイクル)を管理します。

アプリケーションプールによる隔離

IISでは、Webサイトごとに「アプリケーションプール」を割り当てることができます。これにより、サイトAでメモリリークやクラッシュが発生しても、別のアプリケーションプールで動いているサイトBには影響を与えません。これが実務運用での安定性に大きく寄与します。

実務でのユースケースと注意点

  • レガシー移行: 古いASP.NETアプリをそのまま新しいWindows Serverへ移行(リフト&シフト)する際、IISの互換性が強力な武器になります。
  • リバースプロキシ: ARR (Application Request Routing) モジュールを使うことで、IISを簡易的なロードバランサやリバースプロキシとして使うことも可能です。
  • 注意点: GUIで設定を変えると裏で web.config が書き換わります。Gitなどで構成管理をする際は、GUI操作と設定ファイルの整合性に注意が必要です。

5 関連ワード

この記事を理解する上で重要なキーワードです。

  1. Inetpub:
    • IISをインストールすると作成されるデフォルトのルートディレクトリ。Webサイトのコンテンツやログファイルがここに格納されます。
  2. web.config:
    • IISやASP.NETアプリケーションの設定を記述するXMLファイル。URL書き換えルールやセキュリティ設定などを記述します。
  3. Binding (バインディング):
    • 「どのIPアドレス」「どのポート番号」「どのホスト名」でアクセスを受け付けるかを紐付ける設定。
  4. Application Pool (アプリプール):
    • 1つ以上のURLグループを処理するワーカープロセスの入れ物。セキュリティと安定性の境界線となります。
  5. SSL/TLS証明書:
    • HTTPS通信を行うための証明書。IISの管理画面からウィザード形式で比較的簡単にインポートや紐付けが可能です。

6 要点チェック

  • [ ] IISはWindows Server標準の高機能Webサーバー。
  • [ ] GUI(グラフィカルな管理画面)で操作できるため、視覚的に管理しやすい。
  • [ ] アプリケーションプールという仕組みで、アプリ間の影響を隔離し安定させている。
  • [ ] web.config ファイルを使って、フォルダ単位での細かい設定制御が可能。
  • [ ] 企業のWindows基盤(Active Directoryなど)との連携において最強の選択肢。

最新記事一覧

続きを見る

関連コンテンツ

カテゴリー一覧

TOP フルスタックエンジニアを目指すに方々へ 2022年2月5日 OS毎の、パッケージマネージャーについて