Windows 向けの Microsoft インターネット・インフォメーション・サービス (IIS)
Windows 向けの Microsoft インターネット・インフォメーション・サービス (IIS)
Windows の多くの配布では、Microsoft IIS (https://www.iis.net/Opens in a new tab) が事前にインストールされています。ただし、通常は既定で無効になっています。"IIS の有効化" を参照してください。
このページでは、IIS 独自の API を使用して、Web ゲートウェイをネイティブ・モジュールとして導入する方法について説明します。
Web ゲートウェイ・ネイティブ・モジュールは、2 つのダイナミック・リンク・ライブラリ (.dll) ファイルを使用して Web ゲートウェイを実装します。
-
CSPms.dll — ランタイム・バイナリ
-
CSPmsSys.dll — Web ゲートウェイ管理バイナリ
これが推奨される導入オプションで、ほとんどのユース・ケースで有効です。
"IIS 7 以降の代替オプション (Windows)" では、ISAPI を使用するオプションや Network Service Daemon (NSD) を使用するオプションを含め、IIS で Web ゲートウェイを導入するその他のオプションについて説明しています。
IIS の有効化
IIS を有効にするには、次の手順に従います。
-
[Windows の機能の有効化または無効化] を探すか、[コントロール パネル] を開き、[プログラム]→[プログラムと機能]→[Windows の機能の有効化または無効化] を選択して、[Windows の機能] マネージャを開きます。
-
[インターネット インフォメーション サービス] を選択します。
-
ドキュメント・リンクのリダイレクトを有効にするには、IIS 内で [HTTP リダイレクト] も有効にする必要があります。有効にするには、[インターネット インフォメーション サービス]→[World Wide Web サービス]→[HTTP 共通機能]→[HTTP リダイレクト] が選択されていることを確認します。
-
サポートされている IDE でデバッグ・セッションを有効にするには、IIS 内で [WebSocket プロトコル] も有効にする必要があります。有効にするには、[インターネット インフォメーション サービス]→[World Wide Web サービス]→[アプリケーション開発機能]→[WebSocket プロトコル] が選択されていることを確認します。
-
[OK] をクリックします。
インストーラで、IIS 経由で Web アプリケーションを提供するように新しいまたはアップグレードされた InterSystems IRIS インスタンスを自動構成する場合は、インストールの前に IIS を有効にする必要があります。ただし、IIS の [HTTP リダイレクト] および [WebSocket プロトコル] 機能はいつでも有効にすることができます。
Web ゲートウェイ・コンポーネントに対する許可の設定
既定では、IIS は Web アプリケーションのユーザに対して、Web ドキュメント・ルート・ディレクトリ (通常は C:\Inetpub\wwwroot) 外にあるものへのアクセスを許可しません。以下のユーザ・グループが Web ドキュメント・ルート外のディレクトリにある Web アプリケーション・リソースにアクセスするには、そのディレクトリに対する読み取り、書き込み、実行権限を持っている必要があります。
-
[machine_name]\IIS_IUSRS。IIS ワーカ・プロセスおよび IIS で制御されるアプリケーション (Web ゲートウェイなど) が実行されるユーザ・グループ。
-
[machine_name]\Users
Web ゲートウェイ・ディレクトリ (通常は C:\Inetpub\CSPGateway) および Web アプリケーションが処理する静的ファイルを含むディレクトリに対するこれらの権限を、手動で設定する必要があります。そのためには、以下の操作を実行します。
-
Windows エクスプローラーで、ディレクトリの親ディレクトリに移動します。例えば、C:\Inetpub\CSPGateway ディレクトリを構成する場合は、C:\Inetpub に移動します。
-
ディレクトリ名を右クリックし、[プロパティ] を選択します。
-
[セキュリティ] タブを選択します。
-
[編集] を選択します。
-
[追加] を選択します。
-
[選択するオブジェクト名を入力してください] テキスト・ボックスに以下のように入力します。
[machine_name]\IIS_IUSRS
-
[名前の確認]、[OK] の順に選択します。
-
[グループまたはユーザー名] ウィンドウで [[machine_name]\IIS_IUSRS] を選択してから、以下の操作を実行します。
-
[許可] ウィンドウで [読み取りと実行] および [書き込み] 許可を割り当てます。
-
[適用]、[OK] の順に選択します。
-
[[machine_name]\Users] ユーザ・グループについて、上記の処理を繰り返します。
Web ゲートウェイ構成ファイル (CSP.ini) または Web ゲートウェイ・ログ・ファイル (CSP.log) がファイル・システム内の他の場所に配置されている場合は、IIS_IUSRS グループがこれらのファイルに対する完全な読み取りおよび書き込み権限を持っていることも確認する必要があります。
ネイティブ・モジュールの登録
Web ゲートウェイ・ネイティブ・モジュールを使用する前に、それらを IIS に登録する必要があります。そのためには、以下の操作を実行します。
-
[インターネット インフォメーション サービス (IIS) マネージャ] を開きます。
-
[接続] パネルから localhost 接続を選択します。
-
接続のホーム・ページの [機能ビュー] で、[モジュール] 機能構成項目を開きます (ダブルクリック)。
-
[操作] パネルから [ネイティブ モジュールの構成...] 操作を選択します。
-
[登録] を選択し、[ネイティブ モジュールの登録] ダイアログに以下を入力します。
名前 : CSPms (または類似した名前)
パス : C:\Inetpub\CSPGateway\CSPms.dll
-
[OK] をクリックします。
-
[接続] パネルで localhost 接続のコンテンツを展開して、[サイト]→[Default Web Site] を選択します。
-
Web ゲートウェイ・モジュールが有効になっていることを確認します。
-
[Default Web Site ホーム] ページの [機能ビュー] で、[モジュール] 機能構成項目を開きます (ダブルクリック)。
-
[操作] パネルから [ネイティブ モジュールの構成...] 操作を選択します。
-
[ネイティブ モジュールの構成] ダイアログで、リストに [CSPms] がある場合はそれを選択し、[OK] を選択します。
-
Web アプリケーション・パスの構成
提供する InterSystems IRIS Web アプリケーションごとに、その相対パス (/csp または /irisinstance2) を IIS アプリケーションとして構成します。
IIS アプリケーションを構成すると、Web サーバが物理パスにアクセスするための適切な権限を持っている場合、Web サーバが静的ファイルを処理するために必要なパス・マッピングが作成されます。
構成する各アプリケーション・パスに対して、以下の手順を実行します。
-
[インターネット インフォメーション サービス (IIS) マネージャ] を開きます。
-
[接続] パネルで localhost 接続のコンテンツを展開して、[サイト]→[Default Web Site] を選択します。
-
[操作] パネルから [アプリケーションの表示] を選択します。
-
[操作] パネルから [アプリケーションの追加...] を選択します。
-
[アプリケーションの追加] ダイアログに以下の情報を入力します。
-
エイリアス : アプリケーションの相対ベース URL パス。例えば、インスタンス IRISinstance2 でホストされるアプリケーションの場合は /irisinstance2、アプリケーション /csp/sys とその兄弟アプリケーションの場合は csp です。
-
物理パス : アプリケーションに関連付けられている静的ファイルを含むディレクトリ。IIS で、現在構成中のアプリケーション・パスの下位パスを持つアプリケーションの、異なるディレクトリからの静的ファイルを処理する場合は、子ディレクトリの IIS 仮想ディレクトリを定義します。
-
-
[OK] をクリックします。
-
IIS の構成が完了したら、IIS を再起動して構成の変更を有効にします。
InterSystems IRIS インスタンスにアクセスせずに、Web ゲートウェイの管理ページにアクセスするには、/csp パスに対して Web ゲートウェイを有効にします。
代替オプションに基づく Web ゲートウェイ・ソリューションを使用している場合は、/csp アプリケーションの下に /bin というアプリケーションをセットアップします。Web ゲートウェイ・バイナリを保持している物理ディレクトリにこれをマップします。ほとんどの場合、これはアプリケーション・パス /csp/bin と物理パス C:\Inetpub\CSPGateway 間のマッピングです。
仮想ディレクトリの定義
IIS の仮想ディレクトリを使用すると、アプリケーションに指定されたファイル・システムの場所の外にあるファイル・システムからの静的コンテンツを処理できます。例えば、domain.com/images でイメージをホストする静的 Web サイトの管理者は、Web サイトのほとんどのコンテンツを C:\Inetpub\wwwroot に格納できますが、仮想ディレクトリ images をその物理パスにマッピングすることで、イメージを C:\siteimg に格納できます。
1 つの親パス・ディレクトリ (/csp など) 内に、InterSystems IRIS アプリケーションごとに異なる静的ファイルのストレージ場所を保持する場合は、IIS の仮想ディレクトリを使用できます。
IIS の仮想ディレクトリを構成するには、次の手順に従います。
-
[インターネット インフォメーション サービス (IIS) マネージャ] 内の [接続] パネルで、下位の仮想ディレクトリを構成する IIS アプリケーションを見つけて選択します。
-
[操作] パネルから [仮想ディレクトリの表示] を選択します。
-
[操作] パネルから [仮想ディレクトリの追加] を選択します。
-
[仮想ディレクトリの追加] ダイアログに以下の情報を入力します。
-
エイリアス : アプリケーションの URL パスの下位部分 (例 : パス /csp/sys の sys)。
-
物理パス : このパスの静的ファイルの代替の場所。
-
-
[OK] をクリックします。
-
IIS の構成が完了したら、IIS を再起動して構成の変更を有効にします。
アプリケーション要求のハンドラ・マッピングの設定
構成した IIS アプリケーションごとに、ハンドラ・マッピングを作成して、アプリケーション・パスに送信される一部 (またはすべて) の要求のハンドラとして Web ゲートウェイを呼び出すように IIS に指示します。
アプリケーション・パスに送信されるすべての要求のハンドラとして Web ゲートウェイを呼び出すには、以下の手順に従って要求パス * (ワイルドカード) のハンドラ・マッピングを作成します。
特定のファイル・タイプに対してのみ Web ゲートウェイを呼び出すには、ファイル・タイプごとに、以下の手順に従って *.xxx (xxx はファイル拡張子) を要求パスとして指定します。インターシステムズ固有のファイル・タイプを処理するには、*.csp、*.cls、*.zen、および *.cxw の要求パスのハンドラ・マッピングを作成します。アプリケーションで処理する静的ファイル・タイプのハンドラ・マッピングも作成する必要があります。(REST API エンドポイントは通常、ファイルではなくパスであるため、REST アプリケーションの要求を呼び出すには、このファイル・タイプ固有のアプローチでは不十分です。)
以下の手順を実行して、IIS アプリケーションのハンドラ・マッピングを作成します。
-
[インターネット インフォメーション サービス (IIS) マネージャ] を開きます。
-
[接続] パネルで localhost 接続のコンテンツを展開し、[サイト]→[既定の Web サイト] 内のリストから [アプリケーション] の名前を選択します。
-
接続のホーム・ページの [機能ビュー] で、[ハンドラー マッピング] 機能構成項目を開きます (ダブルクリック)。
-
[操作] パネルで、[モジュール マップの追加..] を選択します。
Note:Web ゲートウェイをアプリケーション・パスのすべての要求のハンドラとして設定するために、[ワイルドカードスクリプトマップの追加...] 操作を使用しないでください。これを試みると、エラーが発生します。代わりに、ワイルドカード (*) 文字のモジュール・マッピングを追加します。
-
[モジュール マップの追加] ダイアログで以下を指定します。
-
要求パス — Web ゲートウェイが処理する一連の要求を指定する式を指定します。(有効な式の例は、このセクションの冒頭を参照してください。)
-
モジュール — ドロップダウン・メニューから、Web ゲートウェイ・モジュールに指定した名前を選択します (CSPms)。
-
名前 — このマッピングにわかりやすい名前を指定します (WebGateway_* など)。
-
-
[要求の制限] を選択し、[要求のマップ先が次の場合のみハンドラーを呼び出す] の横にあるボックスにチェックが付けられていない (選択されていない) ことを確認します。この操作により、[ハンドラー マッピング] テーブルに示すように、[パスの種類] の値が [指定なし] に設定されます。
-
[OK] を選択して [モジュール マップの追加] ダイアログに戻り、もう一度、[OK] を選択します。
-
上記のプロセスを繰り返して、IIS アプリケーションに必要なすべてのハンドラ・マッピングを追加します。
-
IIS の構成が完了したら、IIS を再起動して構成の変更を有効にします。
/bin を含む URLの有効化
既定では、IIS はディレクトリ /bin を含む要求パスからはリソースを提供しません。Web ゲートウェイ管理ページを提供するには、このフィルタを無効にする必要があります。
インストーラが Web ゲートウェイを自動構成した場合、この手順は自動的に実行されています。Web ゲートウェイを手動でインストールする場合は、この構成を手動で実行する必要があります。
具体的には、以下の手順によって、IIS で Web ゲートウェイ管理ページを提供できるようにします。
-
テキスト・エディタで、applicationHost.config ファイルを開きます。このファイルは通常、C:\Windows\System32\Inetsrv\Config ディレクトリにあります。お使いのシステムで、このファイルの場所を見つけるには、以下を実行します。
-
[接続] パネルで、localhost 接続またはその接続内の任意のサイト項目のホーム・ページから、[構成エディター] を選択 (ダブルクリック) します。
-
[操作] パネルから [構成の検索...] を選択します。
-
[階層表示] で、[ApplicationHost.config] (またはその子項目) を選択します。この操作によって、[構成検索] ダイアログに ApplicationHost.config ファイルの場所が表示されます。
-
-
<configuration> ブロックの最後に (ただし、ブロック内) に、以下の <Location> タグを追加します。
<location path="localhost/csp/bin/Systems/Module.cxw"> <system.webServer> <security> <requestFiltering> <hiddenSegments> <remove segment="bin" /> </hiddenSegments> </requestFiltering> </security> </system.webServer> </location>
-
ファイルを保存します。
-
IIS の構成が完了したら、IIS を再起動して構成の変更を有効にします。
リモート Web サーバ接続のランチャーの構成
InterSystems IRIS ランチャーが InterSystems IRIS インスタンスの組み込みの Web の有効な URL を構成できるようにするには、InterSystems IRIS サーバ・マネージャでインスタンスの接続の詳細を指定する必要があります。これらの接続の詳細は、Web サーバ構成と一致する必要があります。"システム管理ガイド" の "リモート・サーバ接続の定義" を参照してください。
SOAP フォルトの詳細を返すための IIS の構成
エラーが発生している InterSystems IRIS Web サービスは、関連する SOAP フォルトの詳細を含めずに HTTP 500 エラーを返すことがあります。既定では、IIS は広範なエラー情報をローカル・クライアントに対してのみ返します。 しかし、構成ファイル web.config 内の <httpErrors> 要素でこの動作を変更できます。変更するには、以下のセクションを追加して、詳細なエラー情報をすべてのクライアントに配信するように IIS に指示します。
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
</system.webServer>
</configuration>
ホスト環境に関する機密情報がクライアントに公開されることがあるため、この方法を使用する場合は注意が必要です。 errorMode="Detailed" の使用に関するセキュリティ上の問題を回避する代わりの方法は、existingResponse="PassThrough" 指示文を使用することです。
<configuration>
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
</configuration>
構成の変更後に、IIS を再起動します。
これらの変更は、IIS web.config ファイルに対して手動で行うことができます。または、より適切で、エラーの発生が少ない方法を選択するには、IIS マネージャに組み込まれている構成エディタ を使用します。
-
IIS マネージャの左側の [接続] パネルから、Web サービスに対応するパスを選択します。 例 :[既定の Web サイト] の後に csp を選択。
-
中央のパネル下部の [管理] という見出しの下で、[構成エディタ] をダブルクリックします。
-
[セクション] のラベルが付いた上部の [構成エディタ] ドロップダウンで、system.webServer を展開し、[httpErrors] をクリックします。
-
[existingResponse] の横にある値をクリックし、ドロップダウンを使用してオプションを表示します。 [PassThrough] を選択します。
-
右側の [アクション] ペインで、[適用] をクリックします。
-
IIS の構成が完了したら、IIS を再起動して構成の変更を有効にします。
IIS でのエラー処理の詳細は、以下を参照してください。
https://docs.microsoft.com/ja-jp/iis/configuration/system.webServer/httpErrors/Opens in a new tab
IIS の再起動
このセクションでは、各種コントロール・パネル経由で IIS を再起動したときに何が起こるかについて説明します。
アクティブな IIS インストールに対する構成変更の大半はリアルタイムで行うことができます。しかし、[インターネット インフォメーション サービス (IIS) マネージャ] コントロール・パネルには停止、開始、および再起動オプションが用意されています。これらのオプションは Web サーバ構成の更新には便利です。しかし、Web ゲートウェイ・インストールは再初期化されません。
Web ゲートウェイ・インストールに変更を加えた場合は、以下のいずれかの方法で IIS を再起動します。
-
Windows サービス・マネージャを開いて、World Wide Web Publishing サービスを再起動します。
-
コマンド行から以下のコマンドを実行して、IIS を停止します。
sc stop W3SVC
Web サーバが停止したら、以下のコマンドを実行してこの Web サーバを再起動します。
sc start W3SVC
次のステップ : Web ゲートウェイのサーバ・アクセス・プロファイルとアプリケーション・アクセス・プロファイルの定義
IIS と InterSystems IRIS サーバ・インスタンス間の Web ゲートウェイ接続の構成を完了するには、以下の手順を完了する必要があります。
-
IIS Web サーバの Web ゲートウェイの構成内で、インスタンスのサーバ・アクセス・プロファイルを定義します。
-
IIS Web サーバの Web ゲートウェイの構成内で、目的のアプリケーション・パスの 1 つ以上のアプリケーション・アクセス・プロファイルを定義します。
トラブルシューティング
このセクションでは、IIS で使用するためにサードパーティ・モジュール (ネイティブ・モジュールおよび ISAPI モジュールの両方) を構成しているときによく発生する問題について説明します。
最もよく発生する問題は、再構成後、IIS への要求が失敗し、以下のエラーが表示されるというものです。
Service Unavailable
HTTP Error 503. The service is unavailable.
これは通常、既定のアプリケーション・プールが終了していることを示します。
-
[インターネット インフォメーション サービス (IIS) マネージャ] ウィンドウを開きます。
-
左側のパネルで、最上位レベルを展開します。[アプリケーション プール] セクションが表示されます。
[MACHINE_NAME] ([machine_name]\[user_name])
アプリケーション・プール
-
既定のアプリケーション・プール (DefaultAppPool)、またはサーバで使用が構成されているアプリケーション・プールのステータスが [開始] になっていることを確認します。
-
必要に応じて、右側のパネルのオプションを使用して、アプリケーション・プールを再開します。
-
それでも問題が解決されない場合は、メインの Windows イベント・ログ ([アプリケーション] セクション内) を見て、ヒントを探してください。特に、次のエラー・メッセージを確認してください。
Failed to find the RegisterModule entrypoint in the module DLL C:\Inetpub\CSPGateway\CSPms.dll.The data is the error.
例えば、これは、使用しているバージョンの Web ゲートウェイ DLL が、このネイティブ・モジュール・インタフェースを実装していないことを示します。インターシステムズから最新の DLL を入手するか、または従来の ISAPI インタフェースで動作するように Web ゲートウェイを構成します。
すべてのソフトウェアと同様、一時的な問題が再起動により解決されることはよくあります。IIS を完全に再起動するには、メインの Windows サービス・コントロール・パネルから World Wide Web Publishing サービスを再起動します。
ファイル拡張子をマップするのにワイルドカードスクリプトマップの追加ユーティリティを使用しないでください。使用すると、「このハンドラーに対して指定されたモジュールが、モジュールの一覧にありません。スクリプト マップ ハンドラー マッピングを追加する場合は、モジュールの一覧に IsapiModule または CgiModule が存在している必要があります。」というエラーが発生する可能性があります。 代わりに、モジュールマップの追加を使用し、ワイルドカードを指定してファイル拡張子をマップしてください。
/bin を含む URL が機能しない場合には、/bin を含む URLの有効化の手動手順を参照してください。