シナリオ: IIS でクラシック ASP Web サイトを構築する
作成者: Keith Newman および Robert McMurray
このドキュメントでは、IIS をインストールして Classic ASP Web サイトを構成する方法について説明します。 Classic ASP はサーバー側のスクリプト環境で、動的な Web アプリケーションを作成して実行するときに使用できます。 ASP を使用すると、HTML ページ、スクリプト コマンド、および COM コンポーネントを組み合わせて、開発および変更が容易な対話型の Web ページを作成することができます。 Classic ASP は ASP.NET の前身ですが、今日でも広く使用されています。
Classic ASP のサーバー構成では、ASP および ISAPI 拡張機能向け IIS モジュールを、既定の IIS インストールに追加します。
前提条件
このチュートリアルを最大限に活用するには、次のいずれかのオペレーティング システムを実行しているコンピューターにアクセスできる必要があります。
- Windows Server® 2012
- Windows® 8
手順 1:IIS Web サーバーをインストールする
この手順は、Windows ユーザー インターフェイス (UI) を使用するか、コマンド ラインから実行できます。
UI を使用して Windows Server 2012 に IIS をインストールするには
スタート ページで [サーバー マネージャー] タイルをクリックし、[OK] をクリックします。
サーバー マネージャーで [ダッシュボード] を選択し、[役割と機能の追加] をクリックします。
役割と機能の追加ウィザードの [開始する前に] ページで、[次へ] をクリックします。
[インストールの種類の選択] ページで、[役割ベースまたは機能ベースのインストール] を選択し、[次へ] をクリックします。
[対象サーバーの選択] ページで、[サーバー プールからサーバーを選択] を選択し、サーバーを選択して、[次へ] をクリックします。
[サーバーの役割の選択] ページで、[Web サーバー (IIS)] を選択し、[次へ] をクリックします。
[機能の選択] ページで、既定でインストールされる事前選択された機能を確認し、以下の追加の役割サービスを選択します。
- ASP
- ISAPI 拡張
次へ をクリックします。
[Web サーバーの役割 (IIS)] ページで、[次へ] をクリックします。
[役割サービスの選択] ページで、既定でインストールされる事前選択された役割サービスを確認し、[次へ] をクリックします。 (注: 静的コンテンツを扱う Web サーバーにインストールする必要があるのは、IIS 8 の既定の役割サービスのみです)。
[インストール オプションの確認] ページで、選択したオプションを確認して、[インストール] をクリックします。
[インストールの進行状況] ページで、Web サーバー (IIS) の役割と必要な役割サービスのインストールが正常に完了したことを確認し、[閉じる] をクリックします。
IIS が正常にインストールされたことを確認するには、Web ブラウザーに次の URL を入力します。
http://localhost
IIS の既定の [ようこそ] ページが表示されます。
UI を使用して Windows 8 に IIS をインストールするには
スタート ページで「 コントロール パネル」と入力し、検索結果の [コントロール パネル] アイコンをクリックします。
コントロール パネルで [プログラム]をクリックし、 [Windows の機能の有効化または無効化]をクリックします。
[Windows の機能] ダイアログ ボックスで [インターネット インフォメーション サービス]をクリックし、既定でインストールされる事前選択された機能を確認して、以下の追加の役割サービスを選択します。
- ASP
- ISAPI 拡張
OK をクリックします。
IIS が正常にインストールされたことを確認するには、Web ブラウザーに次の URL を入力します。
http://localhost
IIS の既定の [ようこそ] ページが表示されます。
コマンド ラインを使用して IIS をインストールするには
コマンド プロンプトまたはスクリプトに次のコマンドを入力します。
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;IIS-ManagementConsole;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI
手順 2:Classic ASP Web サイトを追加する
この手順を実行するには、ユーザー インターフェイス (UI) を使用するか、コマンド ライン ウィンドウで Appcmd.exe コマンドを実行するか、構成ファイルを直接編集するか、または WMI スクリプトを記述します。
UI を使用して、Web サイトを追加するには
IIS マネージャーを開きます。
- Windows Server 2012 の場合は、[スタート] ページで [サーバー マネージャー] タイルをクリックし、[OK] をクリックします。 サーバー マネージャー ダッシュボードで、 [ツール] メニューをクリックし、 [インターネット インフォメーション サービス (IIS) マネージャー]をクリックします。
- Windows 8 の場合は、[スタート] ページで「コントロール パネル」と入力し、検索結果の [コントロール パネル] アイコンをクリックします。 コントロール パネル 画面で、 [システムとセキュリティ]、 [管理ツール]、 [インターネット インフォメーション サービス (IIS) マネージャー]の順にクリックします。
[接続] ウィンドウで、ツリー内の [サイト] ノードを右クリックし、 [Web サイトの追加]をクリックします。
[Web サイトの追加] ダイアログ ボックスで、 [サイト名] ボックスに Web サイトのわかりやすい名前を入力します。
[アプリケーション プール] ボックスに表示されていないアプリケーション プールを選択する場合は、 [選択]をクリックします。 [アプリケーション プールの選択] ダイアログ ボックスで、 [アプリケーション プール] ボックスの一覧からアプリケーション プールを選択し、 [OK]をクリックします。
[物理パス] ボックスで、Web サイトのフォルダーの物理パスを入力するか、参照ボタン ([...]) をクリックして、ファイル システムから対象のフォルダーを参照します。
手順 5. で入力した物理パスがリモート共有へのパスである場合は、 [接続] をクリックして、そのパスにアクセスするアクセス許可を持つ資格情報を指定します。 特定の資格情報を使用しない場合は、 [接続] ダイアログ ボックスで [アプリケーション ユーザー (パススルー認証)] オプションを選択します。
[種類] ボックスの一覧から Web サイトのプロトコルを選択します。
[IP アドレス] ボックスの既定値は、 [未使用の IP アドレスすべて]です。 Web サイトに静的 IP アドレスを指定する必要がある場合は、 [IP アドレス] ボックスに IP アドレスを入力します。
[ポート] ボックスに、ポート番号を入力します。
必要に応じて、 [ホスト ヘッダー] ボックスに、Web サイトのホスト ヘッダー名を入力します。
Web サイトに変更を加える必要がなく、すぐに利用できるようにするには、 [Web サイトを直ちに開始する] チェック ボックスをオンにします。
OK をクリックします。
コマンド ラインを使用して、Web サイトを追加するには
コマンド プロンプトまたはスクリプトで次の構文を使用します (注: この構文が機能するには、%windir%\system32\inetsrv
ディレクトリにいるか、パスにそのディレクトリを含める必要があります)。
appcmd add site /name:string /id:uint /physicalPath:string /bindings:string
変数 name:string
は名前であり、変数 id:uint
はサイトに割り当てる符号なし整数です。 Appcmd.exe にサイトを追加するときに必要な変数は、変数 name:string
と id:uint
のみです。 (注: bindings 属性と physicalPath 属性に値を指定しないでサイトを追加した場合、そのサイトは開始できません)。
変数 physicalPath:string
は、ファイル システム内のサイト コンテンツのパスです。
変数 bindings:string
には、そのサイトへのアクセスに使用する情報が含まれており、protocol/IP_address:port:host_header
の形式にする必要があります。 たとえば、Web サイトのバインドは、プロトコル、IP アドレス、ポート、およびホスト ヘッダーの組み合わせです。 http/*:85:
というバインドを使用すると、Web サイトが、すべての IP アドレスとドメイン名 (ホスト ヘッダーまたはホスト名とも呼ばれます) に対する HTTP 要求をポート 85 でリッスンできます。 これに対して、http/*:85:marketing.contoso.com
のバインドでは、すべての IP アドレスとドメイン名 marketing.contoso.com についてポート 85 で HTTP 要求をリッスンするように Web サイトが構成されます。
名前が contoso
で、ID が 2、コンテンツの場所が c:\contoso
で、すべての IP アドレスとドメイン名 marketing.contoso.com
に対する HTTP 要求をポート 85 上でリッスンする Web サイトを追加するには、コマンド プロンプトで次のように入力して ENTER キーを押します。
appcmd add site /name: contoso /id:2 /physicalPath: c:\contoso /bindings:http/*:85: marketing.contoso.com
手順 3:ASP アプリケーションの設定を編集する
IIS 8 には、ASP アプリケーション向けの既定の設定が用意されていますが、これらの設定は、必要に応じて変更できます。 たとえば、テスト サーバーでクライアント側のデバッグを有効にして、テスト段階での問題のトラブルシューティングに役立てることができます。
UI を使用して ASP アプリケーションの設定を編集するには
- IIS マネージャーを開き、管理するレベルに移動します。
- [機能ビュー]で、 [ASP]をダブルクリックします。
- [ASP] ページで、必要に応じて設定を編集します。
- 編集が終わったら、 [操作] ウィンドウで [適用] をクリックします。
コマンド ラインを使用して ASP アプリケーションの設定を編集するには
既定の文字セットを指定する
アプリケーションの既定の文字セットを指定するには、次の構文を使用します。
appcmd set config /section:asp /codePage:integerRange
変数 integerRange
は既定の文字セットです。 たとえば、コード ページをアメリカ英語および多くのヨーロッパ言語で使用されるラテン文字セットに設定するには、コマンド プロンプトで次のように入力し、Enter キーを押します。
appcmd set config /section:asp /codePage:1252
バッファー処理を有効または無効にする
ASP アプリケーション出力のバッファー処理を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /bufferingOn:true|false
値を true
に指定するとバッファー処理が有効になり、false
に指定するとバッファー処理が無効になります。 既定値は true
です。
HTTP 1.1 チャンク転送エンコードを有効または無効にする
World Wide Web 発行サービスの HTTP 1.1 チャンク転送エンコードを有効にするには、次の構文を使用します。
appcmd set config /section:asp /enableChunkedEncoding:true|false
値を true
に指定すると HTTP 1.1 チャンク転送エンコードが有効になり、false
に指定すると HTTP 1.1 チャンク転送エンコードが無効になります。 既定値は true
です。
HTML フォールバックを有効または無効にする
HTML フォールバックを有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /enableASPHTMLFallback:true|false
値を true
に指定すると、要求キューがいっぱいになって要求が拒否された場合、要求された .asp ファイルと同じ名前の .htm ファイルが存在していれば、そのファイルが .asp ファイルの代わりに送信されます。 既定値は true
です。
親パスを有効または無効にする
現在のディレクトリまたはそれより上位のディレクトリへの相対パスを有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /enableParentPaths:true|false
値を true
に指定すると、ASP ページが、現在のディレクトリまたはそれより上位のディレクトリへの相対パスを許可するように設定されます。 既定値は true
です。
クライアント接続テストの間隔を設定する
要求を実行する前にクライアントがまだ接続しているかどうかを ASP が確認するまでの時間間隔を設定するには、次の構文を使用します。
appcmd set config /section:asp /queueConnectionTestTime:timeSpan
変数 timeSpan
は、要求を実行する前にクライアントがまだ接続しているかどうかを ASP が確認するまでの時間間隔 (hh:mm:ss) を設定します。 既定値は 00:00:03
です。
最大要求エンティティ ボディ制限を設定する
ASP 要求のエンティティ ボディに許可される最大バイト数を指定するには、次の構文を使用します。
appcmd set config /section:asp /maxRequestEntityAllowed:int
変数 int
は、ASP 要求のボディに許可される最大バイト数を表します。 既定値は 200000
バイトです。
要求キューの長さを設定する
キュー内で許可される同時 ASP 要求の最大数を指定するには、次の構文を使用します。
appcmd set config /section:asp /requestQueueMax:int
変数 int
は、要求キュー内で許可される同時 ASP 要求の最大数を表します。 既定値は 3000
です。
要求キューのタイムアウトを設定する
要求キュー内で ASP 要求が待機できる期間を指定するには、次の構文を使用します。
appcmd set config /section:asp /queueTimeout:timeSpan
変数 timeSpan
は、要求キュー内で ASP 要求が待機できる最長時間 (hh:mm:ss) を表します。 既定値は 00:00:00
です。
応答バッファー処理の制限を指定する
フラッシュが発生するまでに ASP ページが応答バッファーに書き込むことができる最大バイト数を制御するには、次の構文を使用します。
appcmd set config /section:asp /bufferingLimit:int
変数 int
は、ASP バッファーの最大サイズ (バイト単位) を表します。 既定値は 4194304
バイトです。
スクリプトのタイムアウトを設定する
スクリプトを終了してイベントを Windows イベント ログに書き込む前に ASP ページがスクリプトを実行できる時間の長さの既定値を指定するには、次の構文を使用します。
appcmd set config /section:asp /scriptTimeout:timeSpan
変数 timeSpan
は、イベントが Windows イベント ログに書き込まれる前に ASP 要求を実行できる最長時間 (hh:mm:ss) を表します。 既定値は 00:01:30
です。
1 プロセッサあたりのスレッド制限を指定する
ASP が作成できる 1 プロセッサあたりの最大ワーカー スレッド数を指定するには、次の構文を使用します。
appcmd set config /section:asp /processorThreadMax:int
変数 int
は、ASP が作成できる 1 プロセッサあたりの最大ワーカー スレッド数を表します。 既定値は 25
です。
既定のロケール識別子を指定する
ASP アプリケーションでの日付、時刻、および通貨の形式を定義するには、次の構文を使用します。
appcmd set config /section:asp /lcid:int
変数 int
は、ASP アプリケーションの既定のロケール識別子を表します。 既定値は 0
です。
アプリケーションの自動再起動を有効または無効にする
構成設定が変更されるたびに ASP アプリケーションを自動的に再起動する設定を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /enableApplicationRestart:true|false
値を true
に指定すると、構成設定が変更されるたびに ASP アプリケーションが自動的に再起動されます。 既定値は true
です。
行番号の計算を有効または無効にする
エラー報告に行番号を表示できるように、実行された各コード行の行番号を ASP で計算して保存する設定を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /calLineNumber:true|false
値を true
に指定すると、行番号の計算および保存が有効になります。 既定値は true
です。
COM コンポーネントの例外トラップを有効または無効にする
ASP ページが COM コンポーネントによってスローされた例外をキャッチする設定を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /exceptionCatchEnable:true|false
値を true
に指定すると、COM コンポーネントの例外トラッピングが有効になります。 false
に設定すると、Microsoft Script Debugger ツールは、デバッグ中のコンポーネントから送信される例外をキャッチしません。 既定値は true
です。
クライアント側のデバッグを有効または無効にする
クライアント側のデバッグを有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /appAllowClientDebug:true|false
値を true
に指定すると、クライアント側のデバッグが有効になります。 既定値は false
です。
エラー要求のログ記録を有効または無効にする
Windows イベント ログのアプリケーション セクションへの ASP エラーの書き込みを有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /logErrorRequests:true|false
値を true
に指定すると、エラー要求のログ記録が有効になります。 既定では、ASP エラーはクライアント ブラウザーおよび IIS ログに書き込まれます。 既定値は true
です。
ASP エラーの Windows イベント ログへの記録を有効または無効にする
サーバーでの ASP のデバッグを有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /appAllowDebugging:true|false
値を true
に指定すると、ASP アプリケーションのサーバー側でのデバッグが有効になります。 既定値は false
です。
On End 関数を匿名で実行する
SessionOnEnd
および ApplicationOnEnd
グローバル ASP 関数を匿名ユーザーとして実行する設定を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /runOnEndAnonymously:true|false
値を true
に指定すると、SessionOnEnd
および ApplicationOnEnd
グローバル ASP 関数を匿名ユーザーとして実行できるようになります。 既定値は true
です。
スクリプト エラー メッセージを指定する
特定のデバッグ エラーがクライアントに送信されない場合にブラウザーに送信するエラー メッセージを指定するには、次の構文を使用します。
appcmd set config /section:asp /scriptErrorMessage:string
変数 string
は、特定のデバッグ エラーがクライアントに送信されない場合にブラウザーに送信されるエラー メッセージを表します。 既定値は、"URL の処理中にサーバー上でエラーが発生しました。 システム管理者に連絡してください。" です。
ブラウザーへのエラー送信を有効または無効にする
デバッグ詳細 (ファイル名、エラー、行番号、および説明) を Windows イベント ログに記録するだけでなくクライアント ブラウザーにも書き込む設定を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /scriptErrorSentToBrowser:true|false
値を true
に指定すると、デバッグ詳細のクライアント ブラウザーへの書き込みが有効になります。 既定値は false
です。
既定のスクリプト言語を指定する
Web サーバーで実行されているすべての ASP アプリケーションの既定のスクリプト言語を指定するには、次の構文を使用します。
appcmd set config /section:asp /scriptLanguage:string
変数 string
は既定のスクリプト言語を表します。 既定値は VBScript
です。
キャッシュ ディレクトリ パスを指定する
メモリ内キャッシュのオーバーフロー時に ASP がコンパイル済み ASP テンプレートを保存するディレクトリの名前を指定するには、次の構文を使用します。
appcmd set config /section:asp /diskTemplateCacheDirectory:string
変数 string
は、キャッシュ ディレクトリ パスを表します。 既定値は %windir%\system32\inetsrv\ASP Compiled Templates
です。
タイプ ライブラリ キャッシュを有効または無効にする
タイプ ライブラリのキャッシュを有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /enableTypelibCache:true|false
値を true
に指定すると、タイプ ライブラリのキャッシュが有効になります。 既定値は true
です。
保存するコンパイル済み ASP テンプレートの最大数を設定する
保存できるコンパイル済み ASP テンプレートの最大数を設定するには、次の構文を使用します。
appcmd set config /section:asp /maxDiskTemplateCacheFiles:int
変数 int
は、保存するコンパイル済み ASP テンプレートの最大数を表します。 既定値は 2000
です。
保存するコンパイル済み ASP テンプレートの最大数を設定する
キャッシュするプリコンパイル済みスクリプト ファイルの最大数を設定するには、次の構文を使用します。
appcmd set config /section:asp /scriptFileCacheSize:int
変数 int
は、キャッシュするプリコンパイル済みスクリプト ファイルの数を表します。 0 に設定すると、スクリプト ファイルはキャッシュされません。 4294967295
に設定すると、要求されたスクリプト ファイルがすべてキャッシュされます。 既定値は 500
です。
キャッシュするスクリプト エンジンの最大数を設定する
ASP ページがメモリ内にキャッシュしておくスクリプト エンジンの最大数を設定するには、次の構文を使用します。
appcmd set config /section:asp /scriptEngineCacheMax:int
変数 int
は、キャッシュされるスクリプト エンジンの最大数を表します。 既定値は 250
です。
COM+ サイド バイ サイド アセンブリを有効または無効にする
使用するシステム DLL または従来の COM コンポーネントのバージョンを ASP アプリケーションで指定できるようにするサイド バイ サイド COM+ アセンブリを有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /appServiceFlags:true|false
値を true
に指定すると、COM+ サイド バイ サイド アセンブリが有効になります。 既定値は false
です。
COM+ トラッカーを有効または無効にする
COM+ トラッカーを有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /enableTypelibCache:true|false
値を true
に指定すると、COM+ トラッカーが有効になり、管理者または開発者が ASP アプリケーションをデバッグできるようになります。 既定値は false
です。
マルチスレッド環境を有効または無効にする
マルチスレッド環境での ASP の実行を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /executeInMta:true|false
値を true
に指定すると、マルチスレッド環境で ASP を実行できるようになります。 既定値は false
です。
スレッド モデルのチェックを有効または無効にする
アプリケーションで作成されるすべてのコンポーネントのスレッド モデルの IIS によるチェックを有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /trackThreadingModel:true|false
値を true
に指定すると、スレッド モデルのチェックが有効になります。 既定値は false
です。
COM+ パーティション ID を指定する
COM+ パーティションのグローバル一意識別子 (GUID) を指定するには、次の構文を使用します。
appcmd set config /section:asp /partitionID:string
変数 string
は、COM+ パーティションの GUID を表します。 既定値は 00000000-0000-0000-0000-000000000000
です。
Note
また、appServiceFlags
フラグを true
に設定する必要もあります。
COM+ アプリケーションを指定する
COM+ アプリケーションの名前を指定するには、次の構文を使用します。
appcmd set config /section:asp /sxsName:string
変数 string
は、COM+ アプリケーションの名前を表します。
Note
また、appServiceFlags
フラグを true
に設定する必要もあります。
COM+ パーティション処理を有効または無効にする
COM+ パーティション処理を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /appServiceFlags:true|false
値を true
に指定すると、COM+ パーティション処理が有効になり、アプリケーションを独自の COM+ パーティションに分離する際に使用できます。 既定値は false です。
Note
true
に設定する場合は、partitionID
プロパティの値も設定する必要があります。
セッション状態を有効または無効にする
ASP アプリケーションのセッション状態保持を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /allowSessionState:true|false
値を true
に指定すると、セッション状態の永続化が有効になります。 既定値は true
です。
同時セッションの最大数を設定する
ASP で許可される同時セッションの最大数を設定するには、次の構文を使用します。
appcmd set config /section:asp /max:int
変数 int
は、同時セッションの最大数を表します。 既定値は -1
です。
セキュリティで保護されたセッション ID を有効または無効にする
セキュリティで保護されたセッション チャネル経由でセッション ID が割り当てられた場合に、セキュリティで保護された Cookie としてセッション ID を送信する設定を有効または無効にするには、次の構文を使用します。
appcmd set config /section:asp /keepSessionIdSecure:true|false
値を true
に指定すると、セキュリティで保護されたセッション ID が有効になります。 既定値は true
です。
セッションのタイムアウトを設定する
セッション オブジェクトに関連付けられた要求が前回発生してから、そのオブジェクトが保持される時間の既定値を指定するには、次の構文を使用します。
appcmd set config /section:asp /timeout:timeSpan
変数 timeSpan
は、セッション オブジェクトに関連付けられた要求が前回発生してからそのオブジェクトが保持される最長時間 (hh:mm:ss) を表します。 既定値は 00:20:00
です。
次のステップ
Web サイトを十分にテストして、想定どおりに機能することを確認します。 その後、次の機能を構成することを検討してください。
- トラブルシューティングや Web サーバーのパフォーマンスの最適化に役立てるため、IIS のログを設定します。 手順については、「 Configure Logging in IIS」を参照してください。
- Web サーバーのセキュリティを強化するため、要求フィルタリングを構成します。 手順については、「 Configure Request Filtering in IIS」を参照してください。