UNC ホスティングにおいて失敗した要求トレースを有効にする方法

発行日 : 2007 年 11 月 23 日 (作業者 : saad(英語))
更新日 : 2008 年 3 月 6 日 (作業者 : saad(英語))

ホスティング シナリオにおける失敗した要求トレースの構成およびログ記録

ホスティング シナリオにおいてアプリケーションのコンテンツとコードを UNC 共有に置くことは、Web アプリケーション サーバーでますます重要になっています。ホスティング シナリオでは、Web アプリケーションのコンテンツおよびコードだけではなく、ログを保持できることが重要です。ログには、IIS 7.0 が記録する Web サイトのヒット ログの他に、失敗した要求トレースのログ ファイルが含まれます。このドキュメントでは、適切なディレクトリの作成、ディレクトリへの正しいアクセス許可の設定、各種ログ ファイルでこれらのディレクトリを使用するための IIS 7.0 の構成について説明します。 

ログ ファイルのディレクトリの命名規則、ユーザー アカウント、およびアクセス許可設定は、このサイトで提供されているドキュメント「Shared Hosting Walkthrough」と同じです。このチュートリアルでは、以下の場合のさまざまな操作方法の違いについても説明します。

  • UI : IIS マネージャーまたはエクスプローラーを使用して操作を実行
  • コマンド : コマンド ライン (PowerShell、AppCmd など) を使用して操作を実行
  • XML : 構成を手動で編集して操作を実行

ホスティング シナリオにおける失敗した要求トレースの構成

失敗した要求トレースは強力な診断機能であり、この機能により開発者や管理者は、アプリケーションで問題が発生した場所や発生した理由を特定できます。コンピューターの管理者以外の開発者が、インストール後に失敗した要求トレースを使用するのは非常に困難です。このセクションでは、以下の方法によって、開発者が失敗した要求トレースにアクセスできるように設定します。

  • 開発者が自分のアプリケーション用の独自の失敗した要求トレース規則を定義するのに必要なセクションをロック解除します。
  • アプリケーション所有者のために、失敗した要求トレースを UNC 共有にログ記録するように設定します。

管理者以外のユーザーへの <traceFailedRequests> の委任

失敗した要求トレースの構成には、2 つのセクションがあります。

  • <traceFailedRequestsLogging> : このセクションは、常に IIS 7.0 の管理者のみに制限されています。管理者はこのセクションを使用して、サイトで失敗した要求トレース機能を有効または無効にしたり、ログ ファイルの最大数、ログ ファイルのサイズ、およびログ ファイルを置くディレクトリを構成したりすることができます。これらの理由により、このセクションは管理者によって制御される必要があります (たとえば、ディスクがログ ファイルで一杯にならないように制御する必要があります)。
  • <traceFailedRequests> : このセクションでは、失敗の定義を作成します (トレースを取得する URL、およびトレースを XML としてディスクに保存する条件など)。このセクションはロック解除できます。

失敗した要求トレース モジュールをインストールすると、<traceFailedRequests> セクションに読み取り/書き込みアクセス許可が設定されます (失敗した要求トレースのインストールおよび基本的な使用法については、IIS.net の「IIS7 の追跡機能を使用して失敗した要求をトラブルシューティングする」を参照してください)。これにより、アプリケーションの所有者は独自の失敗した要求トレース規則を定義できます。管理者が代わりに規則を定義する必要はありません。

UI : IIS マネージャーからの <traceFailedRequests> の委任の確認

IIS マネージャーの UI から <traceFailedRequests> の委任が設定されていることを確認するには、以下の手順を実行します。

  1. [スタート] をクリックして**「inetmgr」**と入力します。管理者でない場合は、管理者の資格情報を入力します。
  2. コンピューター名をクリックして [機能の委任] をダブルクリックします。
  3. [失敗した要求トレース規則][読み取り/書き込み] に設定されていることを確認します。

Ee175750.unc_1(ja-jp,TechNet.10).gif 

これにより、ApplicationHost.config に対するアクセス権のない開発者でも、アプリケーションの web.config ファイルで独自の失敗の定義を作成できます。規則が有効になるのは、管理者が失敗した要求トレースを有効にした場合のみです。

XML : ApplicationHost.config での <traceFailedRequests> の委任の確認

ApplicationHost.config によって <traceFailedRequests> の委任が設定されていることを確認するには、以下の手順を実行します。

  1. 管理者特権のコマンド プロンプトを起動します。
  2. ディレクトリを %windir%\system32\inetsrv\config に変更して、notepad applicationHost.config を実行します。
  3. applicationHost.config で文字列 <section name="traceFailedRequests" を検索します。overrideModeDefault="Allow" になっている場合、このセクションは委任されています。
                      

<configSections>
...other config sectionGroups...
  
<sectionGroup name="system.webServer">
  ...other sections...
   
 <sectionGroup name="tracing">
      
<section name="traceFailedRequests" overrideModeDefault="Allow" />

      ...
    
</sectionGroup>

   ...
  
</sectionGroup>
</configSections>

UNC 共有とアプリケーション プール ID の構成

IIS 7.0 で失敗した要求のログ ファイルを UNC 共有に書き込めるようにするには、ワーカー プロセス ID に、ネットワーク共有および UNC サーバーのファイルシステム パスに対するフル コントロールを付与する必要があります。これは、ディレクトリ コンテンツの一覧取得、ログ ファイルやディレクトリの新規作成、および古いログ ファイルの削除を実行する必要があるためです。

ビルトイン アカウント (IUSR または Network Service) のいずれかをアプリケーション プール ID として使用する場合、これらのアカウントは UNC サーバーでは ANONYMOUS として表示されます。次のいずれかの方法を採用することを強くをお勧めします。

  1. ドメインでの使用 : アプリケーション プール用のドメイン ユーザー アカウントを作成し、そのアプリケーション プール ID を使用して、失敗した要求のログ ファイルが置かれている共有およびファイルシステム ディレクトリに対する ACL を設定します。Web サーバーと UNC サーバーの両方が、ドメインのメンバーである必要があります。
  2. ドメイン以外での使用 : UNC サーバーおよび Web サーバーがドメインに参加していない場合、各コンピューターで同じアカウント パスワードを持つ同じアカウントを作成する必要があります。このチュートリアルでは、この例を使用します。

UI : UNC サーバーおよびフロントエンド Web サーバーでの新規ローカル アカウントの作成

この手順は、UNC サーバーと Web サーバーの両方で実行する必要があります。パスワードが "!p4ssw0rd" の、"PoolId1" というユーザーを作成します。

  1. 管理者特権のコマンド プロンプトで「start lusrmgr.msc」を実行します。

  2. [ユーザー] フォルダーを右クリックして、[新しいユーザー] を選択します。 . 

  3. [新しいユーザー] ダイアログ ボックスの各入力項目に次のように入力します。

a. [ユーザー名] : PoolId1

b. [パスワード] ([パスワードの確認入力] も) : !p4ssw0rd

c. [ユーザーは次回ログオン時にパスワードの変更が必要] をオフにします。

d. [ユーザーはパスワードを変更できない] をオンにします。

e. [作成][閉じる] の順にクリックします。

Ee175750.unc_2(ja-jp,TechNet.10).gif

PoolId1 ユーザーは、フロントエンドの IIS7 Web サーバーとバックエンドの UNC サーバーの両方で作成する必要があります。

また、PoolId1 をフロントエンド Web サーバーの IIS_IUSRS グループに追加する必要があります。それには、次の手順を実行します。

  1. lusrmgr MMC スナップインで [グループ] フォルダーをクリックします。
  2. IIS_IUSRS を右クリックして [グループに追加] を選択します。
  3. [追加] をクリックし、追加する ID として <servername>\PoolId1 を指定します。

コマンド : UNC サーバーおよびフロントエンド Web サーバーでの新規ローカル アカウントの作成

コマンド ラインから PoolId1 ID を新規追加するには、次の手順を実行します。

  1. 管理者特権のコマンド プロンプトを実行します。
  2. コマンド プロンプト ウィンドウで、次のコマンドを実行します。
                      
net user PoolId1 !p4ssw0rd /ADD /passwordchg:no

net localgroup IIS_IUSRS PoolId1 /ADD

  

注 : "net localgroup" コマンドが必要なのはフロントエンド Web サーバーの場合のみです。

UI : Web サイトの新規アプリケーション プールの作成および ID の変更

IIS チームが作成する共有ホスティング ガイダンスの一部は、新規アプリケーション プールです。先ほどの手順で作成した PoolId1 をアプリケーション プールの ID に設定します。

  1. IIS 7.0 フロントエンド サーバーで、[スタート] メニューから Inetmgr を実行します。
  2. UI で [アプリケーション プール] ノードをクリックし、[操作] の下の [アプリケーション プールの追加] を選択します。
  3. 名前を Pool_Site1 にし、他の設定はすべてそのままにして [OK] をクリックします。
  4. Pool_Site1 を右クリックして [詳細設定] を選択します。
  5. [プロセス モデル][ID] 行を選択し、[...] ボタンをクリックします。
  6. [設定] ボタンをクリックし、カスタム ID を構成して、先ほど作成したユーザー IDである PoolId1 を設定します。[OK] を 2 度クリックして、アプリケーション プールの ID を変更します。次のようになります。

Ee175750.unc_3(ja-jp,TechNet.10).gif

 

また、サイトをこのアプリケーション プールにドロップする必要があります。このチュートリアルでは、既定の Web サイトを使用します。INETMGR.exe を使用して、この目的のために新規サイト (SITE1) を作成することもできます。次の手順を実行します。

  1. [サイト] フォルダー、[Default Web Site] の順にクリックします。
  2. 右の [操作] ウィンドウで [基本設定] を選択します。
  3. [アプリケーション プール] の右の [選択] をクリックします。
  4. 先ほど作成した新規アプリケーション プール Pool_Site1 を選択して [OK] をクリックし、再度 [OK] をクリックします。

コマンド : Web サイトの新規アプリケーション プールの作成および ID の変更

コマンド ラインから上記の手順を実行するには、次の操作を行います。

  1. 管理者特権のコマンド プロンプトを起動します。
  2. 新規アプリケーション プールを追加するには、次のコマンドを実行します。
                      
%windir%\system32\inetsrv\appcmd add AppPool -name:Pool_Site1 -processModel.username:ERICDE-DELL-W\PoolId1 -processModel.password:!p4ssw0rd -processModel.identityType:SpecificUser

既定の Web サイトのルート アプリケーションが Pool_Site1 で実行されるように設定するには、次のコマンドを実行します。

                      
%windir%\system32\inetsrv\appcmd set app -app.name:"Default Web Site/" -applicationPool:Pool_Site1

UNC 共有における ACL の作成およびロック ダウン

次に UNC 共有とそのファイル システム ディレクトリを作成してロック ダウンします。

コマンド : UNC 共有における ACL の作成およびロック ダウン

UNC サーバーで次の手順を実行します。

  1. コンテンツをダンプするファイルシステム パスを作成します (content と名前を付けます)。

  2. その下に新規ディレクトリ Site1 を作成し、その下に別のディレクトリ Logs を作成し、最後にディレクトリ failedReqLogFiles を作成します。次のようになります。

    • g:\content

      • Site1

        • Logs

          • failedReqLogFIles
  3. g:\content\Site1\Logs\failedReqLogFiles のファイルシステム パスにアクセス許可を設定し、PoolId1 にログ ディレクトリへのフル コントロールを付与します。この設定が必要なのは、ワーカー プロセス ID はコンテンツの一覧取得、新規ファイルの書き込み、新規ディレクトリの作成、および古いファイルの削除を実行できる必要があるためです。これを管理者特権のコマンド プロンプトから行うには、次のコマンドを実行します。

    • Windows Server® 2008 ファイル サーバー : icacls g:\content\Site1\Logs\failedReqLogFiles /g PoolId1:F
    • Windows Server 2003 ファイル サーバー : cacls g:\content\Site1\Logs\failedReqLogFiles /g PoolId1:F /e
  4. ディレクトリを共有します。コマンド ラインから次のコマンドを実行します。

    • net share content$=g:\content /GRANT:Users,CHANGE

失敗した要求トレースのログを UNC パスに記録するための設定

ここまでの操作では、共有が設定され、適切なアクセス許可が設定されました。次に、失敗した要求トレースのログを UNC パスに記録するように構成します。

UI : 失敗した要求トレースのログを UNC に記録するための構成

失敗した要求トレースのログを UNC パスに記録するように構成するには、Web サーバーで次の手順を実行します。

  1. [スタート] メニューから Inetmgr を実行して INETMGR を開きます。
  2. [Default Web Site] をクリックし、[構成] の下の [失敗した要求トレース] をクリックします。
  3. [有効] チェック ボックスをオンにします。
  4. [ディレクトリ] に UNC 共有へのパス \\<UncServerName>\UNCContent\Site1\Logs\FailedReqLogFiles を入力します。

Ee175750.unc_4(ja-jp,TechNet.10).gif

テスト

すべてのコンテンツのすべての URL においてすべての 200 を取得する規則を構成して、テストを実行します。

1. INETMGR の UI で [サイト] フォルダーを展開し、[Default Web Site] をクリックします。
2. [失敗した要求トレース規則] をダブルクリックします。
3. 右の [操作] ウィンドウの [追加] をクリックします。
Ee175750.unc_5(ja-jp,TechNet.10).gif
4. [次へ] をクリックして状態コードを 200 に設定します。

Ee175750.unc_6(ja-jp,TechNet.10).gif 

5. [次へ] をクリックして、すべてを収集するために既定値をそのまま使用し、[終了] をクリックします。

XML : web.config での失敗した要求トレース規則の構成

既定の Web サイトの web.config ファイルの実際の XML は次のようになります。

                      

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  
<system.webServer>
   
 <tracing>
     
 <traceFailedRequests>
        
<add path="*">
          
<traceAreas>

            
<add provider="ASP" verbosity="Verbose" />
           
 <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />

            
<add provider="ISAPI Extension" verbosity="Verbose" />
            
<add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications" verbosity="Verbose" />

           
</traceAreas>
          
<failureDefinitions statusCodes="200" />
        
</add>

      
</traceFailedRequests>
    
</tracing>
  
</system.webServer>
</configuration>

UNC バック エンドの確認

失敗した要求トレース規則のログを UNC パスに記録するように設定した Web サイトを参照します (例 : http://uncsite/default.aspx)。ログの記録先として設定した UNC バック エンド サーバーのディレクトリを確認します。失敗した要求のログ ファイル用として構成したディレクトリ内に新規ディレクトリ W3SVC1 が作成されていることを確認します。このディレクトリを参照して、ログ ファイルと FREB.xsl ファイルを確認します。