モジュール(mod)は、Oracle HTTP Serverの基本機能を拡張し、Oracle HTTP Serverとその他のOracle Fusion Middlewareコンポーネントとの統合をサポートします。
注意: 特に他に記載のないかぎり、このドキュメントに収められている情報は、Oracle HTTP ServerがOracle WebLogic ServerおよびOracle Fusion Middleware Controlにインストールされている場合に適用できます。このドキュメントの対象読者は、『Oracle Fusion Middlewareコンセプト・ガイド』および『Oracle Fusion Middleware管理者ガイド』の説明に従ってOracle Fusion Middlewareの主要概念を十分に理解しておく必要があります。 スタンドアロン・モードでのOracle HTTP Serverのインストールについては、『Oracle Fusion Middleware Oracle Web Tierインストレーション・ガイド』のスタンドアロン・モードでのOracle Web Tierのインストールに関する項を参照してください。 |
この章では、オラクル社により特にOracle HTTP Server向けに開発されたモジュールについて説明します。この章の内容は、次のとおりです。
この項では、Oracle HTTP Serverにバンドルされているすべてのモジュールを示します。
オラクル社が開発したOracle HTTP Server用のモジュール
次のモジュールは、オラクル社により特にOracle HTTP Server向けに開発されたものです。
Oracle HTTP Server内のApache HTTP Serverおよびサード・パーティのモジュール
Oracle HTTP Serverには、次のApache HTTP Serverおよびサード・パーティのモジュールも即時利用できるように組み込まれています。これらのモジュールは、オラクル社が開発したものではありません。
|
|
|
mod_certheadersモジュールは、Oracle HTTP Serverの前でSecure Sockets Layer (SSL)接続が終了するリバース・プロキシが、SSL接続に関する情報(SSLクライアント証明書情報など)を、Oracle HTTP ServerおよびOracle HTTP Serverを介して動作しているアプリケーションに送信できるようにします。この情報は、HTTPヘッダーを使用してリバース・プロキシからOracle HTTP Serverに送信されます。その後、情報はヘッダーから標準CGI環境変数に送信されます。SSL接続がOracle HTTP Serverによって終了される場合は、mod_osslモジュールまたはmod_sslモジュールがこの環境変数に値を移入します。
mod_certheadersモジュールでは、特定のリクエストがHTTP経由で受信される場合も、HTTPSリクエストとして扱うことができます。これは、SimulateHttps
ディレクティブを使用して実行されます。
SimulateHttps
は、自身が含まれるコンテナ(<VirtualHost>
や<Location>
など)を使用し、受信されたこのコンテナに対するすべてのリクエストを、リクエストで使用された実際のプロトコルに関係なく、HTTPS経由で受信されたものとして扱います。
注意: Oracle HTTP Server 11.1.1では、mod_dmsはデフォルトで無効になっています。 |
mod_dmsモジュールでは、Oracle Dynamic Monitoring Service (DMS)を使用してサイト・コンポーネントのパフォーマンスを監視できます。
DMSの詳細は、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』のOracleダイナミック・モニタリング・サービス(DMS)に関する章を参照してください。
mod_onsintモジュールは、Oracle Notification Service (ONS)およびOracle Process Manager and Notification Server (OPMN)を使用した統合サポートを提供します。これはOracleモジュールであり、次の機能を提供します。
Oracle HTTP Server内でのONS通知にサブスクリプション・メカニズムを提供します。mod_onsintは、Oracle HTTP Serverインスタンス内のすべてのモジュールに対する通知を受信します。
リスナーが起動され使用可能であることをOPMNが認識できるように、PROC_READY ONS
通知をパブリッシュします。また、DMSメトリックなどの情報や、リスナーへの接続方法に関する情報も提供します。これらの通知は、Oracle HTTP Serverインスタンスが実行されているかぎり、mod_onsintにより定期的に送信されます。
mod_onsintは、UNIXではOracle HTTP Server親プロセス内のスレッドとして、Windowsでは子プロセス内のスレッドとして実行されます。このスレッドは、ONSメッセージの送受信を担当します。
mod_onsintに対して構成できるOpmnHostPort
というオプションのディレクティブがあります。このディレクティブを使用すると、mod_onsintが動作中のOracle HTTP Serverインスタンスをpingするため、OPMNが使用するホスト名とポートを指定できます。OpmnHostPort
が指定されていないと、mod_onsintはHTTPポートを自動的に選択します。状況によっては、OPMNがリスナーのpingに使用するHTTPポートとホスト名に特定のものを選択する場合があります。
OpmnHostPort
の構文形式は次のとおりで、OPMNに渡す値を指定します。
OpmnHostPort [<http> | <https>://]<host>:<port>
たとえば、次の行は、OPMNがこのリスナーをpingするときにHTTP、localhostインタフェースおよびポート7778を使用することを指定しています。
OpmnHostPort http://localhost:7778
ONSおよびOPMNの詳細は、『Oracle Fusion Middleware Oracle Process Manager and Notification Server管理者ガイド』のOracle Process Manager and Notificationの概要に関する章を参照してください。
mod_onsintのディレクティブ
mod_onsintで使用できるディレクティブのリストおよび説明は、E.2項を参照してください。
mod_oradavモジュールは、mod_davの実装を拡張するC言語で記述されたOracle Call Interface (OCI)アプリケーションです。mod_oradavディレクティブでは、ローカル・ファイルまたはOracle Databaseに対する読取りと書込みができます。Oracle Databaseには、mod_oradavモジュールがWebDAVアクティビティをデータベース・アクティビティにマップするためのOraDAVドライバ(ストアド・プロシージャ・パッケージ)が必要です。実際には、WebDAVクライアントはmod_oradavモジュールによりOracle Databaseに接続し、内容の読取りと書込み、および各種スキーマ内のドキュメントの問合せとロックを実行できます。
Oracle HTTP Serverの標準ディレクティブを使用して、mod_oradavモジュールを構成できます。mod_oradavモジュールを構成するには、Fusion Middleware Controlの「サーバーの詳細構成」ページを使用します。mod_oradavディレクティブでは、コンテンツ管理タスクを実行するために、他のモジュール・コード(mime_magicなど)をすぐに活用できます。ほとんどのOraDAV処理アクティビティでは、コンテンツ・プロバイダとの間でコンテンツをストリーム化する必要があります。mod_oradavディレクティブでは、Oracle HTTP Server内でOCIストリーム・ロジックが直接使用されます。
関連項目:
|
mod_oradavのディレクティブ
mod_oradavで使用できるディレクティブのリストおよび説明は、E.3項を参照してください。
mod_osslモジュールは、Oracle HTTP Serverに対して厳密な暗号化を有効にします。このOracleモジュールは、サーバーでSSLを使用できるようにするOracle HTTP Serverへのプラグインです。これは、OpenSSLモジュールのmod_sslと非常によく似ています。mod_osslモジュールは、SSLバージョン3およびTLSバージョン1をサポートするOracleのSSL実装を基盤とし、CerticomおよびRSAセキュリティ・テクノロジに基づいています。
mod_osslのディレクティブ
mod_osslで使用できるディレクティブのリストおよび説明は、E.4項を参照してください。
関連項目: 詳細は、『Oracle Fusion Middleware管理者ガイド』のWeb層のSSLの構成に関する項を参照してください。 |
注意: mod_ossoは、Oracle Single Sign-On 10gでは非推奨です。次のいずれかのオプションを使用できます。
|
mod_ossoモジュールは、受信リクエストを検査して、リクエストされたリソースが保護されているかどうかを判断することで、Oracle HTTP Serverのシングル・サインオンを有効化します。リソースが保護されている場合、Oracle HTTP ServerのCookieを取得します。
デフォルトでは、モジュールは無効ですmod_ossoモジュールは、Fusion Middleware Controlのサーバー構成プロパティ・ページで有効化できます。詳細は、4.3.1項「Fusion Middleware Controlを使用したサーバー・プロパティの指定」を参照してください。
mod_ossoのディレクティブ
mod_ossoで使用できるディレクティブのリストおよび説明は、E.5項を参照してください。
関連項目: 強制認証の詳細は、『Oracle Fusion Middleware Oracle Identity Managementアプリケーション開発者ガイド』を参照してください。 シングル・サインオンの詳細は、『Oracle Fusion Middlewareセキュリティ・ガイド』を参照してください。 |
mod_perlモジュールは、Oracle HTTP ServerにPerlインタプリタを埋め込みます。これにより、起動時のオーバーヘッドが排除され、モジュールをPerlで記述できます。Oracle Fusion Middlewareでは、Perlバージョン5.10を使用します。
デフォルトでは、モジュールは無効です。mod_perlモジュールを有効化するには、4.4.3項「mod_perlモジュールの構成」の手順に従ってください。
この項では、データベースを使用するmod_perlユーザー向けの情報を提供します。また、ローカル・データベース接続をテストし、文字構成を設定する方法についても説明します。
Perlスクリプトは、Oracle用のDBI/DBDドライバを使用してデータベースにアクセスします。DBI/DBDドライバはOracle Fusion Middlewareに含まれています。このドライバは、Oracle Call Interface (OCI)をコールしてデータベースにアクセスします。
mod_perlを有効化した後、機能させるためにはmod_perl.conf
ファイル内のDBIを有効化する必要があります。DBIを有効化するには、次の手順を実行します。
mod_perl.conf
ファイルを編集します。
Fusion Middleware Controlで、Oracle HTTP Serverの「サーバーの詳細構成」ページに移動します。
メニューからmod_perl.conf
ファイルを選択し、「実行」をクリックします。
mod_perl.conf
ファイルに次の行を追加します。
PerlModule Apache::DBI
「適用」をクリックして、ファイルを保存します。
4.1.4項「Oracle HTTP Serverの再起動」の説明に従って、Oracle HTTP Serverを再起動します。
実行するPerlスクリプトをORACLE_INSTANCE
/config/OHS/
component_name
/cgi-bin
ディレクトリに配置します。
例3-1 Perlスクリプトを使用したデータベース・アクセス
#!ORACLE_HOME/perl/bin/perl -w use DBI; my $dataSource = "host=hostname.domain;sid=orclsid;port=1521"; my $userName = "userid"; my $password = "password"; my $dbhandle = DBI->connect("dbi:Oracle:$dataSource", $userName, $password) or die "Can't connect to the Oracle Database: $DBI::errstr\n"; print "Content-type: text/plain\n\n"; print "Database connection successful.\n"; ### Now disconnect from the database $dbhandle->disconnect or warn "Database disconnect failed; $DBI::errstr\n"; exit;
DBIスクリプトを実行する場合、URLは次のようになります。
http://hostname.domain:port/cgi-bin/scriptname http://hostname.domain:port/perl/scriptname
スクリプトにuse DBI
ではなくuse Apache::DBI
と指定されている場合、このスクリプトを実行できるのは、http://
hostname.domain:port
/perl/
scriptname
というURLからのみです。
例3-2は、データベース接続をテストするためのサンプルPerlスクリプトを示しています。connect
文のインスタンス名、ユーザーIDおよびパスワードは、ターゲット・データベースの適切な値で置き換えてください。
例3-2 ローカル・シード・データベースの接続テスト用サンプルPerlスクリプト
use DBI; print "Content-type: text/plain\n\n"; $dbh = DBI->connect("dbi:Oracle:instance_name", userid/password, "") || die $DBI::errstr; $stmt = $dbh->prepare("select * from emp order by empno")|| die $DBI::errstr; $rc = $stmt->execute() || die $DBI::errstr; while (($empno, $name) = $stmt->fetchrow()) { print "$empno $name\n"; } warn $DBI::errstr if $DBI::err; die "fetch error: " . $DBI::errstr if $DBI::err; $stmt->finish() || die "can't close cursor"; $dbh->disconnect() || die "cant't log off Oracle";
SQL NCHARデータ型(NCHAR、NVARCHAR2およびNCLOB)は、信頼性の高いUnicodeデータ型です。SQL NCHARデータ型を使用すると、Unicode文字をデータベースのキャラクタ・セットに関係なく格納できます。これらのデータ型のキャラクタ・セットは、各国語キャラクタ・セット、つまりAL16UTF-16またはUTF8で指定します。
例3-3は、SQL NCHARデータにアクセスする場合の例を示しています。
例3-3 SQL NCHARデータにアクセスするためのサンプル・スクリプト
# declare to use the constants for character forms use DBD::Oracle qw(:ora_forms); # connect to the database and get the database handle $dbh = DBI->connect( ... ); # prepare the statement and get the statement handle $sth = $dbh->prepare( 'SELECT * FROM TABLE_N WHERE NCOL1 = :nchar1' ); # bind the parameter of a NCHAR type $sth->bind_param( ':nchar1', $param_1 ); # set the character form to NCHAR $sth->func( { ':nchar1' => ORA_NCHAR } , 'set_form' ); $sth->execute;
例3-3に示したとおり、標準のDBI func
メソッドで起動できるプライベート・ファンクションとして、set_form
ファンクションが提供されています。set_form
ファンクションでは、パラメータの文字構成を設定できる匿名ハッシュを使用します。
文字構成の有効値は、ORA_IMPLICIT
またはORA_NCHAR
のいずれかです。文字構成をORA_IMPLICIT
に設定すると、アプリケーションのバインド・データはデータベースのキャラクタ・セットに変換され、ORA_NCHAR
に設定すると各国語キャラクタ・セットに変換されます。デフォルトはORA_IMPLICIT
です。
DBD::Oracle
では、ora_forms
として定数を使用できます。
set_default_form
では、データベース・ハンドルのデフォルトの文字構成を設定します。次の例では、その構文を示しています。
# specify the default form to be NCHAR $dbh->func( ORA_NCHAR, 'set_default_form' );
set_form
コールで特に指定しないかぎり、この構文によりすべてのパラメータの構成がORA_NCHAR
になります。set_form
ファンクションとは異なり、set_default_form
はデータベース・ハンドルのファンクションであるため、データベース・ハンドルの各文は任意に選択した構成になります。
例3-4 set_formのサンプル
# a declaration example for the constants ORA_IMPLICIT and ORA_NCHAR use DBD::Oracle qw(:ora_forms); # set the character form for the placeholder :nchar1 to NCHAR $sth->func( { ':nchar1' => ORA_NCHAR } , 'set_form' ); # set the character form using the positional index $sth->func( { 2 => ORA_NCHAR } , 'set_form' ); # set the character form for multiple placeholders at once $sth->func( { 1 => ORA_NCHAR, 2 => ORA_NCHAR } , 'set_form' );
mod_reqtimeoutは、リクエストを受信するためのタイムアウトおよび最小データ率を設定します。mod_reqtimeoutモジュールはDOS攻撃および関連する問題に対する保護を提供します。詳細は、次の資料を参照してください。
mod_plsqlモジュールにより、Oracle HTTP ServerはOracle Databaseに接続され、Oracleストアド・プロシージャを使用してWebアプリケーションを作成できるようになります。
Web対応のPL/SQLアプリケーションにアクセスするには、mod_plsqlモジュール用PL/SQLデータベース・アクセス・ディスクリプタ(DAD)を構成します。DADは、このモジュールがデータベース・サーバーに接続してHTTPリクエストを実行する方法を指定する値のセットです。DADには、接続詳細の他、データベースでの各種操作およびmod_plsqlモジュール全般にとって重要な構成パラメータが含まれています。PL/SQL Web Toolkitを使用するWeb対応のPL/SQLアプリケーションでは、そのアプリケーションを起動するDADを作成する必要があります。
この項の内容は次のとおりです。
mod_plsqlのディレクティブ
mod_plsqlで使用できるディレクティブのリストおよび説明は、E.6項を参照してください。
DADを作成するには、次の手順を実行します。
dads.conf
構成ファイルを開きます。
mod_plsql構成ファイルの場所については、表3-1を参照してください。
注意: 4.4.5項「Oracle HTTP Server構成ファイルの変更」の説明に従って、Oracle HTTP Serverの「サーバーの詳細構成」ページでOracle Fusion Middleware Controlを使用して、 |
次を追加します。
PL/SQL Webアプリケーションへのアクセスに使用する仮想パスを定義する<Location>
要素。このディレクティブは、Location
に適用されるディレクティブのセットをグループ化します。
たとえば、次のディレクティブは、http://host:port/myapp/
のようなURLを介してPL/SQL Webアプリケーションを起動するために使用する、/myapp
という仮想パスを定義します。
<Location /myapp>
注意: 以前のリリースのmod_plsqlモジュールでは、常に接頭辞 |
Oracle HTTP Serverに対して、Locationで定義された仮想パスに対するリクエストをmod_plsqlモジュールが処理できるように指示するSetHandler
ディレクティブ。
SetHandler pls_handler
<Location>
ディレクティブのコンテキストで許可されるその他のOracle HTTP Serverのディレクティブ。通常は、次のディレクティブが使用されます。
Order deny,allow Allow from all
1つ以上の特定のmod_plsqlディレクティブ。例:
PlsqlDatabaseUsername scott PlsqlDatabasePassword tiger PlsqlDatabaseConnectString orcl PlsqlAuthenticationMode Basic
<Location>
要素をクローズする</Location>
タグ。
編集内容を保存します。
ORACLE_HOME/bin
ディレクトリにあるdadTool.pl
スクリプトを実行することで、DADパスワードを不明瞭化します。
4.1.4項「Oracle HTTP Serverの再起動」の説明に従って、Oracle HTTP Serverを再起動します。
dads.conf
に一意の名前を持つ他の<Location>
要素を定義することで、追加のDADを作成することもできます。
DADの例
次のDADは特定のユーザーとして接続し、デフォルトのホームページを持ちます。
<Location /pls/mydad> SetHandler pls_handler Order allow,deny Allow from All PlsqlDatabaseUsername scott PlsqlDatabasePassword tiger PlsqlDatabaseConnectString prod_db PlsqlDefaultPage scott.myapp.home </Location>
次のDADはHTTP Basic認証を使用し、ドキュメントのアップロードおよびダウンロード操作をサポートします。
<Location /pls/mydad2> SetHandler pls_handler Order allow,deny Allow from All PlsqlDatabaseConnectString prod_db2 PlsqlDefaultPage scott.myapp.my_home PlsqlDocumentTablename scott.my_documents PlsqlDocumentPath docs PlsqlDocumentProcedure scott.docpkg.process_download </Location>
表3-1に示すように、mod_plsql構成パラメータは、ORACLE_INSTANCE
ディレクトリ内の構成ファイルに含まれています。
表3-1 Oracleインスタンス内のmod_plsql構成ファイル
ディレクトリ名 | 目次 |
---|---|
|
|
|
|
mod_plsql構成ディレクティブは、次の構成ファイルで使用されます。
plsql.conf
ファイルは、ORACLE_INSTANCE
/config/OHS/config/OHS/
component_name
/moduleconf
ディレクトリ内にあります。Oracle HTTP Serverでは、すべての.conf
ファイルが自動的にこのディレクトリ内にロードされます。plsql.conf
ファイルには、mod_plsqlモジュールをOracle HTTP ServerにロードするLoadModule
ディレクティブ、mod_plsqlモジュールのグローバル設定、およびdads.conf
とcache.conf
のインクルード・ディレクティブが含まれています。
plsql.conf内のmod_plsqlのディレクティブ
plsql.conf
で使用されるディレクティブのリストおよび説明は、E.6.1項を参照してください。
関連項目:
|
dads.conf
ファイルには、PL/SQLのデータベース・アクセス・ディスクリプタの構成パラメータが含まれています。(ファイルの場所については、表3-1を参照してください。)DADは、mod_plsqlモジュールがデータベース・サーバーに接続してHTTPリクエストを実行する方法を指定する値のセットです。
dads.conf内のmod_plsqlのディレクティブ
dads.conf
で使用されるディレクティブのリストおよび説明は、E.6.2項を参照してください。
cache.conf
ファイルには、mod_plsqlモジュールに実装されたファイル・システム・キャッシュ機能の構成の設定が含まれています。この構成ファイルが関係するのは、PL/SQLアプリケーションがOWA_CACHE
パッケージを使用して、ファイル・システム内の動的生成コンテンツをキャッシュする場合のみです。
cache.conf内のmod_plsqlのディレクティブ
cache.conf
で使用されるディレクティブのリストおよび説明は、E.6.3項を参照してください。
注意: 次のことに注意してください。
|
mod_securityは、Oracle HTTP Serverに対する侵入攻撃を検出および防止するために使用できる、オープンソース・モジュールです。たとえば、mod_securityルールを指定して、すべての受信リクエストをスクリーニングし、ルールで指定された条件に一致するリクエストを拒否することができます。mod_securityモジュール(バージョン2.6.2)とその前提条件は、mod_security2.soという共有オブジェクトとして、ORACLE_HOME/ohs/modulesディレクトリ内のOracle HTTP Serverインストールに含まれています。
このバージョンのOHSは、mod_security (バージョン2.6.2)のディレクティブ、変数、アクション、フェーズおよび関数のみをサポートしています。このモジュールをより新しいバージョンに置き換えると、これらはサポートされなくなります。これらのディレクティブの詳細は、次のmod_securityドキュメントを参照してください。
http://www.modsecurity.org/documentation/
Oracle HTTP Serverの実行時にmod_securityモジュールを使用できるようにするには、mod_security.confが次の行で開始されていることを確認します。
#Load Module LoadModule security2_module "${ORACLE_HOME}/ohs/modules/mod_security2.so"
付録D「mod_securityの構成」に、mod_security.confの例が示されています。Oracle HTTP Server 11.1.1.6のユーザーで現在は11.1.1.7を使用している場合、以前にパッチが実装されているため、このモジュールはすでに適切に構成されています。
mod_securityを構成する際には、Oracle HTTP Server構成ファイルで特定のディレクティブを指定する必要があります。IfModuleコンテナにあるhttpd.confファイルで直接ディレクティブを指定できます。別の方法として、別個のmod_security.confファイルにmod_securityディレクティブを指定し、Include
ディレクティブを使用してhttpd.confにその.confファイルを含めることもできます。
デフォルトではmod_security.confは存在しないため、ご使用のシステムに作成する必要があります。付録D「mod_securityの構成」には、この目的に使用できるサンプルmod_security.confファイルが含まれています。テキスト・エディタにサンプルをコピーして貼り付け、ファイル全体を読んで、使用しているシステム用に編集します。次に、それを自身のmod_security.confとして保存し、httpd.confに含めます。
mod_wl_ohsモジュールにより、Oracle HTTP Server 11gからOracle WebLogic Serverへのリクエストをプロキシ処理できます。
mod_wl_ohsを構成する際の前提条件と手順の詳細は、『Oracle WebLogic ServerにおけるWebサーバー1.1プラグインの使用』のOracle HTTP Serverのmod_wl_ohsプラグインの構成に関する項を参照してください。
mod_wl_ohsのディレクティブ
mod_wl_ohsで使用できるディレクティブのリストおよび説明は、E.7項を参照してください。
注意: mod_wl_ohsは、Apache HTTP ServerからOracle WebLogic Serverへのリクエストをプロキシ処理するために使用できる、mod_wlプラグインに似ています。ただし、Apache HTTP Server用のmod_wlプラグインは別途ダウンロードしてインストールする必要があるのに対し、mod_wl_ohsプラグインはOracle HTTP Serverインストールに含まれています。 |