前へ     目次     索引     DocHome     次へ     
iPlanet Web Server, Enterprise Edition NSAPI プログラマーズガイド



第 1 章   サーバの動作の基本


iPlanet Web Server の構成と動作は、1 連の構成ファイルによって決定されます。 構成ファイルの設定値は、サーバマネージャインタフェースを使って、または手動でファイルを編集して変更できます。

クライアントからの要求を処理する方法をサーバに指示する命令が含まれている構成ファイルは、obj.conf と呼ばれます。 obj.conf への命令の追加や変更により、要求処理プロセスを変更したり拡張したりできます。 NSAPI (Netscape Server Application Programming Interface) を使って、obj.conf に含める命令で使う新しいサーバアプリケーション関数 (Server Application Function: SAF) を作成できます。

この章では、iPlanet Web Server が使う構成ファイルについて説明します。 次に、要求の処理のためのサーバのプロセスの詳細を説明します。 最後に、NSAPI を使って、要求処理プロセスを変更する新しい関数を定義する方法を紹介します。

この章は、次の節で構成されています。



構成ファイル

iPlanet Web Server の構成と動作は、構成ファイルにより制御されます。 構成ファイルは、ディレクトリ server-root/server-id/config/ にあります。 このディレクトリには、各コンポーネントを制御するためのさまざまな構成ファイルがあります。 構成ファイルの正確な個数や名前は、サーバで使用可能になっている、またはサーバに読み込まれているコンポーネントによって決まります。

ただし、このディレクトリにはサーバの動作に必要不可欠な 4 つの構成ファイルが必ず含まれています。 それらのファイルを次に示します。

  • magnus.conf - グローバルサーバ初期化情報が含まれている

  • server.xml - 仮想サーバと待機ソケット用の初期化情報が含まれている

  • obj.conf - クライアントからの要求を処理する方法を指示する命令が含まれている

  • mime.types - 要求されたリソースの内容のタイプを判別するための情報が含まれている


magnus.conf

このファイルには、初期化時にサーバを構成する変数の値が設定されます。 サーバは、起動時にこのファイルを参照し、設定値に従って実行します。 サーバは、再起動されるまでこのファイルを再度参照することはありません。

magnus.conf に設定できるすべての変数と Init 指令の一覧は、第 7 章「magnus.conf の構文と使用法」を参照してください。


server.xml

このファイルでは、サーバが待機するアドレスとポートを設定し、それらの待機ソケットに仮想サーバクラスと仮想サーバを割り当てます。 マスターファイルの server.dtd は、そのフォーマットと内容を定義します。

サーバが server.dtd および server.xml をどのように使用するかについては、第 8 章「仮想サーバの構成ファイル」を参照してください。



  仮想サーバは、サーバインスタンスとは異なるものです。 各サーバインスタンスは、1 つ以上の仮想サーバからなる完全に独立したサーバです。

 




obj.conf

このファイルには、ブラウザなどのクライアントからの要求を処理する方法をサーバに指示する命令が含まれています。 サーバは、クライアントからの要求を処理するたびに、このファイルに定義されている構成情報を参照します。

仮想サーバクラス、または仮想サーバのグループごとに、obj.conf ファイルが 1 つあります。 このマニュアルでは、「obj.conf ファイル」は、すべての obj.conf ファイル、または説明の対象となる仮想サーバクラス用の obj.conf ファイルのことを意味します。

すべての obj.conf ファイルは、server_root/server_id/config ディレクトリにあります。 obj.conf ファイルには、通常 vsclass.obj.conf という名前が付けられます。この vsclass は、仮想サーバクラスの名前です。

obj.conf ファイルは、iPlanet Web Server の動作に必要不可欠です。 サーバマネージャインタフェースによりサーバに変更を行なうと、システムは自動的にobj.conf を更新します。

obj.conf ファイルには、要求 - 応答プロセスの各段階で何をすべきかを iPlanet Web Server に伝える一連の命令 (指令) が含まれています。 各指令は、サーバアプリケーション関数 (SAF) を呼び出します。 SAF は、Netscape Server Application Programming Interface (NSAPI) を使って作成されています。 iPlanet Web Server には事前定義済みの一式の SAF がありますが、NSAPI を使って、サーバが要求を処理する方法を変更する新しい命令を作成してユーザ独自の SAF を作成することもできます。

サーバが obj.conf をどのように使うかについては、第 2 章「obj.conf の構文と使用法」を参照してください。


mime.types

このファイルは、サーバが要求されたリソースの内容のタイプを判別できるように、ファイル拡張子を MIME タイプにマッピングします。 たとえば、.html 拡張子が付いたリソースに対する要求は、クライアントが HTML ファイルを要求していることを示し、.gif 拡張子が付いたリソースに対する要求はクライアントが GIF フォーマットのイメージファイルを要求していることを示します。

サーバが mime.types をどのように使うかについては、付録 B「MIME タイプ」を参照してください。



動的再構成



サーバを再起動しなくても、obj.confmime.typesserver.xml、および仮想サーバ固有のアクセス制御リスト (Access Control List, ACL) ファイルへの変更は有効になります。 「Apply 」をクリックし、次に「Apply Changes」画面の「Load Configuration Files」ボタンをクリックするだけで、変更が適用されます。 新しい構成情報のインストールの際にエラーが発生した場合は、前の構成情報が復元されます。

obj.conf を編集し、変更を適用すると、新しい構成情報が動的に構成可能なファイルからのすべての情報を含むメモリーに読み込まれます。

新たに確立された各接続は、最新の構成情報を参照します。 構成情報を参照する最後のセッションが終了すると、使用されなくなった古い構成情報は削除されます。



サーバによるクライアントからの要求の処理方法



iPlanet Web Server は、HTTP (HyperText Transfer Protocol) 要求を受け取って応答する Web サーバです。 Netscape Communicator などのブラウザは、HTTP、FTP、gopher などのプロトコルを使用して通信します。 iPlanet Web Server は、特に HTTP を使用します。

HTTP プロトコルについては、付録 E「HTTP (HyperText Transfer Protocol)」、または最新の HTTP の仕様を参照してください。


HTTP の基本

要約すると、HTTP/1.1 プロトコルは次のように働きます。

  • クライアント (通常はブラウザ) がサーバへの接続を開始し、要求を送信する

  • サーバが要求を処理し、応答を生成し、Connection: Close ヘッダーを見つけた場合は、接続を終了する

要求は、GETPOST などのメソッド、要求されたリソースを示す URI (Universal Resource Identifier)、および HTTP プロトコルのバージョンを示す、空白文字で区切られた 1 つの行から構成されます。

要求には、通常、いくつかのヘッダー、ヘッダーの終わりを示す空行が続き、また時には本体のデータが続きます。 ヘッダーは、要求またはクライアントのデータ本体についてのさまざまな情報を提供することができます。 ヘッダーは、通常、POST メソッドと PUT メソッドの場合にだけ送信されます。

以下に示す要求の例は、Netscape ブラウザがサーバ foo.com/index.html のリソースを返送するように要求するために送信します。 この例では、メソッドが GET (要求の目的はデータを取得することで、送信することではない) であるため、データ本体は送信されません。


GET /index.html HTTP/1.0
User-agent: Mozilla
Accept: text/html, text/plain, image/jpeg, image/gif, */*
Host: foo.com

サーバは、要求を受け取り、処理します。 サーバは、多数の要求を同時に処理することができますが、各要求は個別に取り扱います。 各要求は、要求処理プロセスを構成する一連のステップに分割されます。

サーバは、HTTP プロトコルのバージョン、HTTP 状態コード、および原因を示す文字列から構成される、空白文字で区切られた応答を生成します。 通常、この後にいくつかのヘッダーが続きます。 ヘッダーの終わりは、空行で示されます。 次に、応答のデータ本体が続きます。 典型的な HTTP の応答は、次のようになります。


HTTP/1.0 200 OK
Server: Netscape-Enterprise/6.0
Content-type: text/html
Content-length: 83

<HTML>
<HEAD><TITLE>Hello World</Title></HEAD>
<BODY>Hello World</BODY>
</HTML>

状態コードと原因を示す文字列は、サーバがどのように要求を処理したかをクライアントに伝えます。 通常、状態コードの 200 が返されます。このコードは、要求が正常に処理され、データ本体に要求されたものが含まれていることを示します。 その他の結果コードは、別のサーバやブラウザのキャッシュへのリダイレクト、または「404 Not Found」などの各種の HTTP エラーを示します。


要求処理プロセスのステップ

サーバは、起動されると初期化を実行してから、ブラウザなどのクライアントからの HTTP 要求を待ちます。 要求を受け取ると、まず仮想サーバを選択します。 仮想サーバの決定方法の詳細は、「要求処理のための仮想サーバの選択」を参照してください。

仮想サーバが選択されると、その仮想サーバクラス用の obj.conf ファイルが、以下のステップでどのように要求を処理すべきかを示します。

  1. AuthTrans (承認変換)

    要求で送られてきた、(名前やパスワードなどの) 承認情報を検証する

  2. NameTrans (名前変換)

    論理 URI をローカルファイルシステムのパスに変換する

  3. PathCheck (パスの確認)

    ローカルファイルシステムのパスが有効であるかどうかを確認してから、ファイルシステム上の要求されたリソースに対するアクセス権限が要求元にあるかどうかを確認する

  4. ObjectType (オブジェクトのタイプの判別)

    要求されたリソースの MIME (Multi-purpose Internet Mail Encoding) タイプ (たとえば、text/htmlimage/gif など) を判別する

  5. Service (応答の生成)

    応答を生成し、クライアントに返す

  6. AddLog (ログエントリの追加)

    ログファイルにエントリを追加する

  7. Error (サービス)

    このステップは、前のステップでエラーが発生した場合にだけ実行される。 エラーが発生した場合は、サーバはエラーメッセージを記録し、プロセスを中止する


要求の処理のための指令

obj.conf ファイルには、指令という一連の命令が含まれています。それらの指令は、要求処理プロセスの各段階で実行すべきことを iPlanet Web Server に指示します。 各指令は、1 つ以上の引数を指定して SAF を呼び出します。 各指令は、要求処理プロセスの特定の段階に適用されます。 要求処理プロセスの段階には、AuthTransNameTransPathCheckObjectTypeService、および AddLog があります。

たとえば、NameTrans 段階では次の指令が適用されます。 この指令は、root 引数に D:/Netscape/Server4/docs を設定して、document-root 関数を呼び出します。 (document-root 関数は、URL の http://server_name/ の部分をドキュメントルートに変換します。この例ではドキュメントルートは、D:/Netscape/Server4/docs になっています。)

NameTrans fn="document-root" root="D:/Netscape/Server4/docs"

obj.conf に含まれる指令によって呼び出される関数は、サーバアプリケーション関数 (Server Application Functions: SAF) と呼ばれます。



新しいサーバアプリケーション関数の作成



iPlanet Web Server には、obj.conf にさらに指令を作成するために使うことのできる、事前定義済みのさまざまな SAF があります。 NSAPI が提供する関数を使ってユーザ独自の SAF を作成することもできます。 SAF を作成したら、サーバが新しい関数を適切なときに呼び出すように、指令を obj.conf に追加します。

各 SAF にはそれぞれの引数があり、obj.conf に含まれる指令により各 SAF に渡されます。 各 SAF には、追加の引数も渡されます。追加の引数には、要求についての情報 (要求されたリソースが何であるかや、どのようなクライアントがそのリソースを要求したかなど) と、前に呼び出された指令によって呼び出された SAF によって作成または変更されたその他のサーバ変数が含まれます。 各 SAF は、サーバ変数を検査、変更、または作成できます。

各 SAF は、処理が成功したか、何も行なわれなかったか、あるいは失敗したかをサーバに通知する結果コードを返します。

obj.conf についての詳細は、第 2 章「obj.conf の構文と使用法」を参照してください。

事前定義済みの SAF についての詳細は、第 3 章「事前定義済みの SAF および要求処理プロセス」を参照してください。

ユーザ独自の SAF の作成方法については、第 4 章「カスタム SAF の作成」を参照してください。


前へ     目次     索引     DocHome     次へ     
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.

Last Updated September 21, 2001