Web 配置発行の Web サーバーを構成する (Web 配置ハンドラー)
このトピックでは、IIS Web 配置ハンドラーを使用して Web の発行と展開をサポートするようにインターネット インフォメーション サービス (IIS) Web サーバーを構成する方法について説明します。
Web 配置 2.0 以降を使用する場合、アプリケーションまたはサイトを Web サーバーに配置するために使用できる主なアプローチは 3 つあります。 次のことを実行できます。
- Web 配置リモート エージェント サービスを使用する。 この方法では、Web サーバーの構成が少なくて済みますが、サーバーに何かを展開するには、ローカル サーバー管理者の資格情報を指定する必要があります。
- Web 配置ハンドラーを使用する。 この方法ははるかに複雑であり、Web サーバーを設定するためにより多くの初期作業が必要です。 ただし、この方法を使用すると、管理者以外のユーザーが展開を実行できるように IIS を構成できます。 Web 配置ハンドラーは、IIS バージョン 7 以降でのみ使用できます。
- オフライン展開を使用する。 この方法では、最小限の Web サーバーの構成で済みますが、サーバー管理者は Web パッケージをサーバーに手動でコピーし、IIS マネージャーを使用してインポートする必要があります。
これらのアプローチの主な機能、利点、および欠点の詳細については、「Web 配置に対する適切なアプローチの選択」を参照してください。
管理者以外のユーザーが特定の IIS Web サイトにコンテンツを展開できるようにしたい場合は、はいです。 この方法は、多くの場合、次のようなシナリオで望ましいものです:
- リモート展開をトリガーするユーザーまたはサービス アカウントがサーバー管理者の資格情報にアクセスできる可能性が低いステージング環境または運用環境。
- リモート ユーザーが Web サーバーを完全に制御 (または他のユーザーの Web サイトにアクセス) することなく Web サイトを更新できるようにするホスト環境。
開発またはテストのシナリオや小規模な組織では、サーバー管理者の資格情報を使用してコンテンツを展開することは、多くの場合、あまり問題にはなりません。 これらのシナリオでは、Web 配置リモート エージェント サービスを使用したデプロイをサポートするように Web サーバーを構成すると、より簡単なアプローチが提供されます。
タスクの概要
Web 配置ハンドラー アプローチを使用してリモート コンピューターから Web パッケージを受け入れて展開するように Web サーバーを構成するには、次の操作を行う必要があります:
- 展開の実行に使用する資格情報を持つドメイン ユーザー アカウント ("管理者以外のユーザー") を作成または選択します。
- Web 管理サービスと基本認証モジュールを含む IIS 7.5 をインストールします。
- Web 配置 2.1 以降をインストールします。
- リモート接続を許可するように Web 管理サービスを構成し、サービスを開始します。
- 展開されたコンテンツをホストする IIS Web サイトを作成します。
- IIS マネージャーで、Web サイトに対する管理者以外のユーザーのアクセス許可を付与します。
- Web 管理サービスの委任規則で、管理者以外のユーザー アカウントを使用して Web サイトコンテンツを追加および変更することをサービスに許可していることを確認します。
- ポート 8172 で受信接続を許可するようにファイアウォールを構成します。
特に ContactManager サンプル ソリューションをホストするには、次のことも必要です:
- .NET Framework Version 4.0 をインストールします。
- ASP.NET MVC 3 をインストールします。
このトピックでは、これらの各手順を実行する方法について説明します。 このトピックのタスクとチュートリアルでは、Windows Server 2016 を実行するクリーン サーバー ビルドから始めていることを前提としています。 次に進む前に、次のことを確認します:
- Windows Server 2016
- サーバーがドメインに参加していること。
- サーバーに静的 IP アドレスがあること。
Note
コンピューターをドメインに参加させる方法の詳細については、「コンピューターをドメインに追加してログオンする」を参照してください。 静的 IP アドレスの構成の詳細については、「静的 IP アドレスを構成する」を参照してください。
製品とコンポーネントのインストール
このセクションでは、必要な製品とコンポーネントを Web サーバーにインストールする方法について説明します。 開始する前に、Windows Update を実行して、サーバーが完全に最新であることを確認することをお勧めします。
この場合は、次のものをインストールする必要があります:
- IIS 7 の推奨される構成。 これにより、Web サーバーで Web サーバー (IIS) の役割が有効になり、ASP.NET アプリケーションをホストするために必要な IIS モジュールとコンポーネントのセットがインストールされます。
- IIS: 管理サービス。 これにより、WEB 管理サービス (WMSvc) が IIS にインストールされます。 このサービスにより、IIS Web サイトのリモート管理が可能になり、Web 配置ハンドラー エンドポイントがクライアントに公開されます。
- IIS 基本認証。 これにより、IIS 基本認証モジュールがインストールされます。 これにより、Web 管理サービス (WMSvc) は、指定した資格情報を認証できます。
- Web 配置ツール 2.1 以降。 これにより、Web 配置 (およびその基になる実行可能ファイル MSDeploy.exe) がサーバーにインストールされます。 このプロセスの一環として、Web 配置ハンドラーがインストールされ、Web 管理サービスと統合されます。
- .NET Framework 4.0。 これは、このバージョンの .NET Framework 上にビルドされたアプリケーションを実行するために必要です。
- ASP.NET MVC 3。 これにより、MVC 3 アプリケーションを実行するために必要なアセンブリがインストールされます。
Note
このチュートリアルでは、Web Platform Installer を使用してさまざまなコンポーネントをインストールおよび構成する方法について説明します。 Web Platform Installer を使用する必要はありませんが、依存関係を自動的に検出し、常に最新の製品バージョンを取得できるようにすることで、インストール プロセスが簡略化されます。 詳細については、「Microsoft Web Platform Installer 」を参照してください。
必要な製品とコンポーネントをインストールするには
Web Platform Installer をダウンロードしてインストールします。
インストールが完了すると、Web Platform Installer が自動的に起動します。
Note
[スタート] メニューからいつでも Web Platform Installer を起動できるようになりました。 これを行うには、[スタート] メニューの [すべてのプログラム] をクリックし、[Microsoft Web Platform Installer] をクリックします。
[Web Platform Installer] ウィンドウの上部で、[製品] をクリックします。
ウィンドウの左側にあるナビゲーション ウィンドウで、[フレームワーク] をクリックします。
Microsoft .NET Framework 4 行で、.NET Framework がまだインストールされていない場合は、[追加] をクリックします。
Note
Windows Update を使用して .NET Framework 4.0 を既にインストールしている可能性もあります。 製品またはコンポーネントが既にインストールされている場合、Web Platform Installerは、[追加] ボタンを [インストール済み] というテキストに置き換えることで、これを示します。
ASP.NET MVC 3 (Visual Studio 2010) 行で、[追加] をクリックします。
ナビゲーション ウィンドウで、[サーバー] をクリックします。
[IIS 7 の推奨構成] 行で、[追加] を選択します。
[Web 配置ツール 2.1] 行で、[追加] をクリックします。
[IIS: 基本認証] 行で、[追加] をクリックします。
[IIS: 管理サービス] 行で、[追加] をクリックします。
[インストール] をクリックします。 Web Platform Installer には、インストールされる製品の一覧と関連する依存関係が表示され、ライセンス条項に同意するように求められます。
ライセンス条項を確認し、ご契約条件に同意する場合は、[同意する] を選択します。
インストールが完了したら、[完了] をクリックし、[Web Platform Installer] ウィンドウを閉じます。
IIS をインストールする前に .NET Framework 4.0 をインストールした場合は、ASP.NET IIS 登録ツール (aspnet_regiis.exe) を実行して、最新バージョンの ASP.NET を IIS に登録する必要があります。 これを行わないと、IIS は静的コンテンツ (HTML ファイルなど) を問題なく提供しますが、コンテンツを ASP.NET 参照しようとすると HTTP エラー 404.0 – Not Found が返されます。 次の手順を使用して、ASP.NET 4.0 が登録されていることを確認できます。
ASP.NET 4.0 を IIS に登録するには
[スタート]をクリックし、[コマンド プロンプト] と入力します。
検索結果で [コマンド プロンプト] を右クリックし、[管理者として実行] をクリックします。
コマンド プロンプト ウィンドウで、%WINDIR%\Microsoft.NET\Framework\v4.0.30319 ディレクトリに移動します。
次のコマンドを入力して、Enter キーを押します:
aspnet_regiis -iru
任意の時点で 64 ビット Web アプリケーションをホストする予定の場合は、64 ビット バージョンの ASP.NET も IIS に登録する必要があります。 これを行うには、コマンド プロンプト ウィンドウで、%WINDIR%\Microsoft.NET\Framework64\v4.0.30319ディレクトリに移動します。
次のコマンドを入力して、Enter キーを押します:
aspnet_regiis -iru
この時点で Windows Update をもう一度使用して、インストールした新しい製品とコンポーネントの利用可能な更新プログラムをダウンロードしてインストールすることをお勧めします。
Web 管理サービスの構成
必要なものがすべてインストールされたので、次の手順は IIS で Web 管理サービスを構成することです。 大まかに言うと、次のタスクを完了する必要があります:
- サーバー レベルで基本認証を有効にします。
- リモート接続を受け入れるように Web 管理サービスを構成します。
- Web 管理サービスを開始します。
- 必要な Web 管理サービスの委任規則が設定されていることを確認します。
Web 管理サービスを構成するには
[スタート] メニューをクリックして、[管理ツール] をポイントして、[インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
IIS マネージャーの [接続] ウィンドウで、サーバー ノード (たとえば、 STAGEWEB1) をクリックします。
中央のウィンドウの [IIS] の下にある [認証] をダブルクリックします。
[基本認証] を右クリックし、[有効にする] をクリックします。
[接続] ウィンドウで、サーバー ノードをもう一度クリックして、最上位の設定に戻ります。
中央のウィンドウの [管理] で、[管理サービス] をダブルクリックします。
中央のウィンドウで、[リモート接続を有効にする] を選択します。
Note
Web 管理サービスが既に実行されている場合は、最初に停止する必要があります。
[操作] ウィンドウで、[開始] をクリックして Web 管理サービスを開始します。
設定を保存するように求められたら、[はい] をクリックします。
Note
また、サービスを自動的に開始するように構成することもできます。 これを行うには、サービス コンソールを開き、[Web 管理サービス] を右クリックし、[プロパティ] をクリックします。 [スタートアップの種類] ドロップダウン リストで、[自動] を選択して、[OK] をクリックします。
[接続] ウィンドウで、サーバー ノードをもう一度クリックして、最上位の設定に戻ります。
中央のウィンドウの [管理] で、[管理サービスの委任] をダブルクリックします。
中央のウィンドウに一連のルールが含まれていることを確認します。
これらのルールを使用すると、承認された Web 管理サービス ユーザーがさまざまな Web 配置プロバイダーを使用できるようになります。 たとえば、Web 配置ハンドラーを使用して Web アプリケーションとコンテンツを IIS に展開するには、認証されたすべての Web 管理サービス ユーザーが contentPath プロバイダーと[iisApp]プロバイダーを使用できるようにする委任規則が必要です (スクリーンショットで確認できる最後のルール)。
このトピックで説明する順序で製品とコンポーネントをインストールした場合、Web 配置の最新バージョンでは、必要なすべての委任規則が Web 管理サービスに自動的に追加されます。 [管理サービスの委任] ページにルールが表示されない場合は、自分で作成する必要があります。 これを行う方法については、「Web 配置ハンドラーの構成」を参照してください。
[接続] ウィンドウで、サーバー ノードをもう一度クリックして、最上位の設定に戻ります。
IIS Web サイトの作成と構成
Web コンテンツをサーバーに展開する前に、コンテンツをホストするために IIS Web サイトを作成して構成する必要があります。 Web 配置では、Web パッケージを既存の IIS Web サイトにのみ展開できます。Web サイトを作成することはできません。 また、管理者以外のアカウントがコンテンツをリモートで展開できるように、少し追加の構成を行う必要もあります。 大まかに言うと、次のタスクを完了する必要があります:
- コンテンツをホストするフォルダーをファイル システムに作成します。
- コンテンツを提供する IIS Web サイトを作成し、ローカル フォルダーに関連付けます。
- ローカル フォルダーのアプリケーション プール ID に読み取りアクセス許可を付与します。
- Web アプリケーションをデプロイするドメイン アカウントに必要な IIS アクセス許可を付与します。
IIS の既定の Web サイトにコンテンツを展開することを止めることはありませんが、この方法はテスト シナリオやデモ シナリオ以外には推奨されません。 運用環境をシミュレートするには、アプリケーションの要件に固有の設定を含む新しい IIS Web サイトを作成する必要があります。
IIS Web サイトを作成するには
ローカル ファイル システムで、コンテンツを格納するフォルダー (C:\DemoSite など) を作成します。
[スタート] メニューをクリックして、[管理ツール] をポイントして、[インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
IIS マネージャーの [接続] ウィンドウで、サーバー ノード (たとえば、 STAGEWEB1) を展開します。
[サイト] ノードを右クリックし、[Web サイト の追加] をクリックします。
[サイト名]ボックスに、IIS Web サイトの名前 (DemoSite など) を入力します。
[物理パス] ボックスに、ローカル フォルダー (C:\DemoSite など) へのパスを入力 (または参照) します。
[ポート] ボックスに、Web サイトをホストするポート番号を入力します (例: 85)。
Note
標準ポート番号は、HTTP の場合は 80、HTTPS の場合は 443 です。 ただし、ポート 80 でこの Web サイトをホストする場合は、サイトにアクセスする前に既定の Web サイトを停止する必要があります。
Web サイトのドメイン ネーム システム (DNS) レコードを構成する場合を除き、[ホスト名] ボックスは空白のままにし、[OK] をクリックします。
Note
運用環境では、ポート 80 で Web サイトをホストし、一致する DNS レコードと共にホスト ヘッダーを構成します。 IIS 7 でのホスト ヘッダーの構成の詳細については、「Web サイトのホスト ヘッダーの構成 (IIS 7)」を参照してください。 Windows Server での DNS サーバーの役割の詳細については、「DNS サーバーの概要」を参照してください。
[ アクション ] ウィンドウの [ サイトの編集] の下にある [ バインド] をクリックします。
[サイト バインド] ダイアログ ボックスの [追加]をクリックします。
[サイト バインドの追加] ダイアログ ボックスで、既存のサイト構成に合わせて IP アドレスとポートを設定します。
[ホスト名] ボックスに、Web サーバーの名前 (STAGEWEB1 など) を入力し、[OK] をクリックします。
Note
最初のサイト バインドを使用すると、IP アドレスとポート、 または
http://localhost:85
を使用してサイトにローカルでアクセスできます。 2 番目のサイト バインドでは、http://stageweb1:85). などのコンピューター名を使用してドメイン上の他のコンピューターからサイトにアクセスできます[サイト バインド] ダイアログ ボックスの [閉じる]をクリックします。
[接続] ウィンドウで [アプリケーション プール] をクリックします。
[アプリケーション プール] ウィンドウで、アプリケーション プールの名前を右クリックし、[基本設定] をクリックします。 既定では、アプリケーション プールの名前は Web サイトの名前 (DemoSite など) と一致します。
.NET CLR の バージョン一覧で .NET CLR v4.0.30319 を選択し、[OK] をクリックします。
Note
サンプル ソリューションには .NET Framework 4.0 が必要です。 これは、一般的に Web 配置の要件ではありません。
Web サイトがコンテンツを提供するためには、アプリケーション プール ID にコンテンツを格納するローカル フォルダーに対する読み取りアクセス許可が必要です。 IIS 7.5 では、アプリケーション プールは既定で一意のアプリケーション プール ID で実行されます (以前のバージョンの IIS とは異なり、アプリケーション プールは通常、ネットワーク サービス アカウントを使用して実行されます)。 アプリケーション プール ID は実際のユーザー アカウントではなく、ユーザーまたはグループの一覧には表示されません。代わりに、アプリケーション プールの起動時に動的に作成されます。 各アプリケーション プール ID は、隠しアイテムとしてローカル IIS_IUSRS セキュリティ グループに追加されます。
ファイルまたはフォルダーのアプリケーション プール ID にアクセス許可を付与するには、次の 2 つのオプションがあります:
- IIS AppPool(アプリケーション プール名) の形式を使用して、(例えば IIS AppPool\DemoSite など) アプリケーション プール ID に直接アクセス許可を割り当てます。
- IIS_IUSRS グループにアクセス許可を割り当てる。
最も一般的な方法は、ローカル IIS_IUSRS グループにアクセス許可を割り当てることです。この方法では、ファイル システムのアクセス許可を再構成せずにアプリケーション プールを変更できるためです。 次の手順では、このグループ ベースのアプローチを使用します。
Note
IIS 7.5 のアプリケーション プール ID の詳細については、「アプリケーション プール ID」を参照してください。
IIS Web サイトのフォルダーアクセス許可を構成するには
Windows Explorer で、ローカル フォルダーの場所を参照します。
フォルダーを右クリックし、[プロパティ] をクリックします。
[Security] タブで、[Edit]、[Add] の順にクリックします。
[場所] をクリックします。 [場所] ダイアログ ボックスで、ローカル サーバーを選択し、[OK] をクリックします。
[ユーザーまたはグループの選択] ダイアログ ボックスで、[IIS_IUSRS] と入力し、[名前の確認] をクリックして、[OK] をクリックします。
[(フォルダー名) のアクセス許可] ダイアログ ボックスで、新しいグループに既定で [読み取りおよび実行]、[フォルダーの内容の一覧表示]、 および [読み取りアクセス許可] が割り当てられていることに注意してください。 これは変更せずに、[OK] をクリックします。
[OK] をクリックして、[(フォルダー名) のプロパティ] ダイアログ ボックスを閉じます。
最後のタスクとして、コンテンツの展開に使用する資格情報を持つ管理者以外のユーザーに適切なアクセス許可を付与する必要があります。 このユーザーには、Web サイトにコンテンツをリモートで展開するためのアクセス許可が必要です。
管理者以外のドメイン ユーザーに IIS Web サイトのアクセス許可を構成するには
IIS マネージャーの [接続] ウィンドウで、Web サイト ノード (DemoSite など) を右クリックし、[展開] をポイントして、[Web 配置発行の構成] をクリックします。
[Web 配置発行の構成] ダイアログ ボックスの [発行アクセス許可を付与するユーザーの選択] ボックスの右側にある省略記号ボタンをクリックします。
[ユーザーの許可] ダイアログ ボックスで、コンテンツの展開に使用するアカウントのドメインとユーザー名を入力し、[OK] をクリックします。
[Web 配置発行の構成] ダイアログ ボックスで、[セットアップ] をクリックします。
Note
この操作では、1 つの手順で 2 つの主要な関数が実行されます。 まず、前のセクションで調べた委任規則に従って、Web 管理サービスを通じて Web サイトをリモートで変更するアクセス許可をユーザーに付与します。 次に、ユーザーが Web サイトのソース フォルダーを完全に制御できるようにします。これにより、ユーザーは Web サイトのコンテンツに対するアクセス許可を追加、変更、設定できます。
[Web 配置発行の構成] ダイアログ ボックスで、[閉じる] をクリックします。
ファイアウォール例外の構成
既定では、IIS Web 管理サービスは TCP ポート 8172 でリッスンします。 Web サーバーで Windows ファイアウォールが有効になっている場合は、ポート 8172 で TCP トラフィックを許可する新しい受信規則を作成する必要があります (Windows ファイアウォールでは、すべての送信トラフィックが既定で許可されます)。 サードパーティのファイアウォールを使用する場合は、トラフィックを許可するルールを作成する必要があります。
方向 | 元ポート | 対象ポート | ポートの種類 |
---|---|---|---|
受信 | Any | 8172 | TCP |
発信 | 8172 | Any | TCP |
Windows ファイアウォールでの規則の構成の詳細については、「ファイアウォール規則の構成」を参照してください。 サード パーティ製のファイアウォールについては、製品のドキュメントを参照してください。
まとめ
Web サーバーは、Web 管理サービスを介して Web 配置ハンドラーへのリモート デプロイを受け入れる準備ができました。 Web アプリケーションをサーバーにデプロイする前に、次の重要な点を確認することをおすすめします:
- IIS のサーバー レベルで基本認証を有効にしていますか?
- Web 管理サービスへのリモート接続を有効にしていますか?
- Web 管理サービスを開始しましたか?
- 管理サービスの委任規則はありますか?
- アプリケーション プール ID は、Web サイトのソース フォルダーへの読み取りアクセス権を持っていますか?
- 管理者以外のユーザー アカウントには、IIS のサイト レベルのアクセス許可がありますか?
- ファイアウォールでは、TCP ポート 8172 上のサーバーへの受信接続が許可されていますか?
もっと読む
Web パッケージを Web 配置ハンドラーに配置するようにカスタム Microsoft ビルド エンジン (MSBuild) プロジェクト ファイルを構成する方法のガイダンスについては、「ターゲット環境の配置プロパティの構成」を参照してください。