はじめに
本ドキュメントの目的
本書は、Windows環境でIIS(Internet Information Services)を使い、実際にWebサーバーを構築・運用するための基本と手順をわかりやすくまとめたガイドです。初心者でもつまずきにくいように、画面操作や設定の流れを重視して解説します。
対象読者
- WindowsサーバーでWeb公開を始めたい方
- 開発者でローカルや社内向けに簡単なホスティングを行う方
- 基本設定や運用のポイントを知りたいIT担当者
本書で扱う内容(全章の概略)
- IISの特徴と役割
- インストールからサイト登録、公開までの手順
- 認証やセキュリティ、運用の注意点
- ApacheやNginxとの比較と選定の視点
- よくあるトラブル対処と運用のコツ
- 実運用で役立つ応用例
前提と準備
本書はWindows(サーバーまたはクライアント)で作業する前提です。管理者権限が必要な操作がありますので、作業前に権限の確認をお願いします。
読み方のおすすめ
はじめてなら章順に読み進めることをおすすめします。既に慣れている部分があれば、該当章だけを参照して実作業に移ってください。
IISとは何か?Webサーバーとしての特徴
概要
IIS(Internet Information Services)はMicrosoft製のWebサーバーです。主にWindows ServerやWindows OS上で動作し、企業の業務システムや社内Web、.NET系アプリの公開に多く使われます。管理画面が使いやすく、Windows環境での運用に向きます。
主な特徴
- Windowsとの統合: Active Directoryによる認証やグループポリシーと連携できます。例:社内アプリにWindowsログオンで自動ログインを設定可能です。
- GUIによる管理: IISマネージャーが直感的で、初心者でもサイト追加や設定変更が行いやすいです。PowerShellで自動化もできます。
- .NETとの親和性: ASP.NETや.NET Coreアプリをネイティブに動かしやすく、開発→公開の手順が短くなります。
- セキュリティと隔離: アプリケーションプールでプロセスを分け、障害や脆弱性の影響を局所化できます。リクエストフィルタリングやSSL設定も標準で整っています。
利用シーンと留意点
企業内の業務系システム、社内ポータル、ファイル配布やAPI公開などでよく使います。Windows以外の環境では選択肢が少ない点に注意してください。また、細かい最適化や拡張は設定やモジュール追加で対応します。
IISによるWebサーバー構築の全体フロー
概要
IISでWebサーバーを構築する流れを段階ごとに示します。手順を順に追えば、基本的な公開から運用まで対応できます。
1. 設計(サーバ名・IP・ドメイン)
サーバ名や固定IP、公開ドメインを決めます。例:社内向けはホスト名のみ、公開サイトはFQDN(www.example.com)を使います。
2. 準備(OS・ネットワーク)
Windows Serverのバージョンを確認し、必要な更新を適用します。ファイアウォールやルーターでポート80/443を開けます。
3. IISのインストール
役割と機能からIISを追加します。必要な機能(静的ファイル、ASP.NET、URL Rewriteなど)を選びます。
4. Webサイトの登録・設定
アプリケーションプールを作り、サイトの物理パスとバインド(IP/ポート/ホスト名)を設定します。書き込み権限やログ出力も設定します。
5. DNSとSSL証明書
ドメインのDNSをサーバーIPに向けます。SSLは商用証明書かLet’s Encryptで導入し、バインドに証明書を割り当てます。
6. 認証・アクセス権限
NTFS権限やIISの認証方式(匿名、Windows認証、フォーム認証など)を設定します。最小権限の原則でユーザーを設定します。
7. 動作確認と運用
ブラウザでアクセス確認、ログ確認、負荷やセキュリティの監視を始めます。定期バックアップと更新をスケジュールします。
IISのインストール手順(Windows Server例)
準備
IISを導入するサーバーで管理者権限のアカウントを用意します。可能であればサーバー名の変更はインストール前に行い、再起動して反映させてください。
サーバーマネージャー(GUI)での手順
- サーバーマネージャーを開き「役割と機能の追加」を選択します。
- ウィザードで対象のサーバーを選び、「役割」一覧から「Web サーバー(IIS)」にチェックを入れます。
- 役割サービスの選択画面で必要な機能(例:Windows 認証、ASP.NET、管理ツール)をチェックします。
- インストールを実行し、完了したらサーバーを再起動するよう指示があれば再起動します。
PowerShellでの手順(例)
管理者権限のPowerShellで次を実行します。
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
必要な認証や拡張機能は個別に指定できます(例:Web-Windows-Auth)。
インストール時に選ぶ主な項目(わかりやすく)
- 管理ツール:IIS管理コンソールを使うなら必須です。
- 認証方式:社内向けならWindows認証、公開向けは匿名アクセスが基本です。
- ASP.NETなど:アプリを使う場合に追加します。
インストール後の確認と初期設定
- ブラウザで http://localhost にアクセスし既定ページが表示されるか確認します。
- IISマネージャーでサイトやアプリプールが起動しているか確認します。
- 公開フォルダーに対してIIS_IUSRSに読み書き権限を設定します。
- ファイアウォールでHTTP/HTTPSポートを許可します。
以上がWindows Server上での基本的なIISインストール手順です。用途に合わせて役割サービスを追加し、検証を行ってください。
IISでWebサイトを登録・公開する
前提
IISマネージャーが起動できること、公開するファイルを置くフォルダーがあることを前提に説明します。
手順(簡潔)
- IISマネージャーを起動します。
- 左ペインで「サイト」を右クリックし「Webサイトの追加」を選びます。
- 必要事項を入力して「OK」を押します。
必要な設定項目の説明
- サイト名:管理用の名前です。例:MySite
- 物理パス:HTMLや画像を置くフォルダー(例:C:\inetpub\wwwroot\mysite)。フォルダーに読み取り権限があることを確認します。
- IPアドレス:特定IPで公開する場合は指定、通常は「すべて未割り当て」を選びます。
- ポート:通常は80(HTTP)です。別ポートで公開する場合は指定します。
- ホスト名(ホストヘッダー):複数サイトを同じIPで運用する場合に使います。例:www.example.local
公開後の確認
- ブラウザでhttp://ホスト名/またはhttp://IP:ポート/にアクセスして確認します。
- サイトを停止・開始するにはIISマネージャーのサイト一覧から操作します。
よくある問題と対処
- 403エラー:フォルダーのアクセス権(IUSR, IIS_IUSRS)を確認します。
- ポート競合:別アプリが同じポートを使っていないか確認します。
- ファイアウォール:サーバーのポートが許可されているか確認します。
補足(簡単な運用ポイント)
- アプリケーションプールの選定で実行アカウントや.NETバージョンを合わせます。
- 仮想ディレクトリを使うと物理パスを柔軟に分けられます。
以上が基本的な登録・公開の流れです。各設定は環境に合わせて調整してください。
認証・セキュリティ・運用のポイント
概要
IISは複数の認証方式やSSL/TLS対応、細かいアクセス制御を備えます。ここでは実務で押さえておくべき点を具体例を交えて説明します。
認証の種類と使いどころ
- 匿名認証: パブリックなサイト向け。ログイン不要な公開ページに使います。
- 基本認証: ユーザー名/パスワードを送ります。必ずHTTPSと組み合わせてください。
- 統合Windows認証: Active Directoryと連携する社内システムに最適です。ユーザー管理が楽になります。
- クライアント証明書: 高い認証強度が必要な場面で有効です。
SSL/TLSとHTTPSの設定
サイトのバインドで証明書を登録し、「要求SSL」を設定します。HTTPからHTTPSへリダイレクトするルールを追加すると安全です。証明書の有効期限は自動監視すると運用負荷が下がります。
アクセス制御とファイル権限
- NTFSの最小権限でファイルを保護します。
- ディレクトリ閲覧は無効にし、既定ドキュメントを適切に設定します。
- Request FilteringやURL Authorizationで不要なリクエストを遮断します。
運用のポイント
- ログを有効にし、定期的に確認します。
- アプリプールはサイトごとに分け、最小権限のアカウントで実行します。
- 定期バックアップ、パッチ適用、ステージング環境での検証を行ってください。
具体例:社内ポータルは統合Windows認証+HTTPS、外部公開は匿名+HTTPS+WAFが安全です。
IISと他Webサーバー(Apache/Nginx)との比較・選定ポイント
概要
IISはMicrosoft公式のサポートやWindowsとの親和性が高く、.NET系アプリやActive Directory連携が得意です。ApacheやNginxはLinuxで広く使われ、オープンソース志向の構成に向きます。
比較の主なポイント
- OS適合性:IISはWindows専用です。Linux環境ならNginx/Apacheが自然です。
- フレームワーク連携:ASP.NETやWindows認証を使う場合はIISが設定しやすいです。
- パフォーマンス用途:静的配信やリバースプロキシはNginxが高速です。動的処理はサーバー設定よりアプリ設計が重要です。
- 設定と運用:IISはGUIやPowerShellで管理しやすく、Windows管理者に優しいです。Apache/Nginxは設定ファイル中心で柔軟性が高いです。
- サポートとコスト:IISは公式サポート(有償含む)を受けやすく、OSSはコミュニティや商用サポートを組み合わせます。
選定の実例
- 社内業務アプリ(ASP.NET、Windows認証):IISを推奨。
- 静的サイトやAPIゲートウエイ:Nginxがコストと性能で有利。
- 複雑なモジュールや従来設定が多い場合:Apacheが適することがあります。
決め方の手順(実務向け)
- 要件を明確にする(OS、言語、認証、負荷)。
- 優先順位を付けて小規模で試験運用する。1〜2週間の負荷試験を行ってください。
- 運用体制(保守者のスキル、サポート要否)を考慮して最終決定します。
用途や運用方針を軸に選ぶと、長期的な安定運用につながります。
トラブルシューティング・運用のヒント
よくある原因
- 権限不足:ファイルやフォルダのNTFS権限が不適切で読み込めない。例:IIS_IUSRSやアプリプールIDに読み取り権限がない。
- ファイル配置ミス:ルートや既定ドキュメントの位置が違う。index.htmlやweb.configの場所を確認します。
- ポート競合・バインド設定:別プロセスが80/443を使っている、ホストヘッダが誤っている。
- ファイアウォール:受信ルールでポートが閉じている。
- 設定エラー:web.configやMIME設定、リクエストフィルタでブロックされる。
ログと診断方法
- IISログ:%SystemDrive%\inetpub\logs\LogFiles を確認。アクセス状況とステータスコードを見ます。
- Failed Request Tracing(FREB):特定の失敗を詳細に追跡できます。
- Windowsイベントビューア:アプリケーションやシステムログでエラーの痕跡を探します。
- コマンド類:netstat -ano(ポート確認)、Get-NetTCPConnection、Test-NetConnection、telnetで接続確認。
具体的な対処手順(頻出ケース)
- 403/401系:NTFS権限と認証設定、既定ドキュメントを順に確認します。
- 500系:IISログとFREBで詳細を確認し、web.configの構文エラーを修正します。
- ポートが取れない:netstatでPIDを確認し、必要なら該当プロセスを停止します。
- SSL問題:証明書のバインドとキーストアの有効性を確かめます。
運用のヒント
- 定期バックアップ:web.config・サイトファイル・SSL証明書を定期的に保存します。
- パッチ適用と再起動計画:更新後にサービス停止が必要ならスケジュールを決めます。
- ログの保管とローテーション:ディスク満杯を防ぎます。
- アクセス制御の見直し:不要なアカウントやルールを定期的に削除します。
- 採用例:ステージングで先に動作確認してから本番へ反映すると安全です。
運用時は小さな変更でもログを残し、問題発生時に戻せる手順を用意しておくことが重要です。
IISを使ったWebサーバー構築の応用例
概要
IISは社内ポータルや複数サイトの同居、HTTPS化、ロードバランサー連携など幅広く応用できます。ここでは具体例を挙げて、運用の工夫を分かりやすく説明します。
Active Directory連携による社内ポータル
社内向けサイトでWindows認証を使うと、ユーザーは社内アカウントでそのままログインできます。例:従業員向けポータルで出勤管理や文書共有を実現します。内部CAで証明書を配布すれば安全に運用できます。
複数Webサイトの運用
1台のIISで複数ドメインを運用するにはホスト名バインドを使います。例:www.example.comとapi.example.comを同一サーバで公開するケースです。バーチャルディレクトリでコンテンツを分けると管理が楽になります。
HTTPS化と証明書管理
証明書は公開CAや内部CAから取得します。自動更新が必要ならスクリプトやACMEクライアントを利用します。証明書のバインドを忘れないようにしてください。
ロードバランサーとの連携
MicrosoftのARRや外部ロードバランサーで負荷分散します。ヘルスチェックを設定して、異常なノードを自動的に外すようにします。セッション保持が必要ならクッキーやステートレス設計を検討します。
PowerShellによる一括管理とリモート管理
サイト作成・証明書バインド・ログ収集などはPowerShellで自動化できます。遠隔地のサーバはリモート管理機能を使い、安全に運用します。
実用例
・社内ポータル:Windows認証+内部CA
・顧客向けサービス:複数ホスト名+HTTPS+ARRで冗長化
各機能は段階的に導入すると失敗が少なくなります。必要であれば具体的な設定手順やスクリプト例もお作りします。












