![]() |
iPlanet Web Server, Enterprise Edition NSAPI プログラマーズガイド |
第 7 章 magnus.conf の構文と使用法
iPlanet Web Server は、起動時に server-id/config ディレクトリにある magnus.conf というファイルを調べて、サーバの動作と構成に影響する 1 組のグローバル変数設定を確立します。iPlanet Web Server は、magnus.conf で定義されているすべての指令を実行します。Init SAF を除けば、magnus.conf 内の指令は、次の例に示すように、変数と値を指定します。
ServerID https-boots.mcom.com
#ServerRoot d:/netscape/server4/https-boots.mcom.com
注 magnus.conf ファイルを編集するときは、変更内容を有効にするためにサーバを再起動する必要があります。
この章では、iPlanet Web Server 6.0 の magnus.conf で指定できるグローバル設定をリスト表示します。
Init SAF
指令のアルファベット順リストについては、付録 H「magnus.conf 内の指令のアルファベット順リスト」を参照してください。
注 ファイルキャッシュの機能の多くは、nsfc.conf という構成ファイルによって制御されます。nsfc.conf については、『Performance Tuning, Sizing, and Scaling Guide for iPlanet Web Server』を参照してください。
Init SAF
Init 指令は、サーバを初期化します。たとえば、追加のモジュールとプラグインの読み込みと初期化、およびログファイルの初期化を行ないます。Init 指令は obj.conf 指令と同様 SAF であり、ほかの magnus.conf 指令の単純な variable value 構文とは異なる SAF 構文を持っています。これらの指令は、ほかの magnus.conf 指令と同様にサーバ起動時に一回だけ実行されるため、magnus.conf に置かれています。
各 Init 指令には、省略可能な LateInit パラメータがあります。 UNIX プラットフォームでは、 LateInit が yes に設定されている場合、この関数は、親プロセスからフォークされた後に子プロセスによって実行されます。 LateInit が no に設定されているか、何も指定されていない場合、この関数はフォークの前に親プロセスによって実行されます。サーバがユーザ root によって起動されたのに、別のユーザとして稼動するときは、ユーザ root として実行すべきアクティビティ (root が所有するファイルへの書き込みなど) はすべて、フォークの前に実行しなければなりません。 thread-pool-init 以外の、スレッドを作成する関数は、フォークの後に実行する必要があります (つまり、関連する Init 指令には LateInit=yes の設定が必要です)。
どのプラットフォームでも、完全に構文解析された構成にアクセスする必要がある関数には、その Init 指令に LateInit=yes の設定が必要です。
障害発生時には、Init クラスの関数は REQ_ABORTED を返します。サーバでは、obj.conf にある Error 指令の命令に従ってエラーのログを記録して終了します。ほかの結果コードは、すべて成功とみなされます。
ここでは、次の Init クラス関数について詳しく説明します。
cindex-init は、拡張インデックス化のデフォルト特性を変更します。
define-perf-bucket は、パフォーマンスバケットを作成します。
dns-cache-init は、DNS キャッシングを構成します。
flex-init は、柔軟なログ作成システムを初期化します。
flex-rotate-init は、柔軟なログのローテーションを有効にします。
init-cgi は、CGI プログラムのデフォルトの設定を変更します。
init-clf は、共通ログのサブシステムを初期化します。
init-uhome は、ユーザのホームディレクトリ情報を読み込みます。
load-modules は、共用ライブラリをサーバに読み込みます。
nt-console-init は、NT コンソールを有効にします。NT コンソールは、標準の出力とエラーストリームを表示するコマンド行シェルです。
perf-init は、パフォーマンスバケットを介したシステムパフォーマンスの測定を有効にします。
pool-init は、プールされたメモリーの割り当てを構成します。
register-http-method は、新しい HTTP メソッドを登録することによって HTTP プロトコルの拡張を可能にします。
stats-init は、XML 形式のパフォーマンス統計のレポート作成を有効にします。
thread-pool-init は、追加のスレッドプールを構成します。
関数 cindex-init は、共通のインデックス化のための、デフォルトの設定を行ないます。共通インデックス化 (拡張インデックス化ともいう) は、サービス関数 index-common によって実行されます。インデックス化は、要求された URL がインデックスファイルまたはホームページを含まないディレクトリに変換されるとき、またはインデックスファイルやホームページが指定されていないときに発生します。
共通 (拡張) インデックス化では、インデックス化されたファイルまたはディレクトリごとの名前、最終更新日、サイズ、および説明がディレクトリリストに表示されます。
(省略可能) 有効化するオプションを指定する文字列です。現在のところ、使用できるオプションは 1 つだけです。
s は、説明フィールドに表示する HTML の <TITLE> タグの内容について、ディレクトリ内のインデックス化される各 HTML ファイルを走査するようサーバに伝えます。<TITLE> タグは、ファイルの最初の 255 文字内になければなりません。デフォルトでは、このオプションはオフになっています。
(省略可能) インデックス表示内の各列の幅を指定します。文字列は、名前、最終更新日、サイズ、および説明の文字の列の幅をそれぞれ指定する、数字をコンマで区切ったリストです。
widths パラメータのデフォルトの値は、22,18,8,33 です。
最後の 3 つの値 (それぞれ、最終更新日、サイズ、説明に対応する) をそれぞれ 0 に設定すれば、その列の表示をオフにすることができます。名前の列はオフにすることはできません。列の最小サイズ (0 以外の値の場合) は、そのタイトルの長さによって指定されます。たとえば、「Date」列の最小サイズは 5 です (「Date」の長さにスペースを 1 つ加えた長さ)。列に対してタイトルの長さより短い 0 以外の値を設定すると、その幅がタイトルの表示に必要な最小の値にデフォルトとして設定されます。
(省略可能) これは、最終更新日を現地時間とグリニッジ標準時のどちらで表示するかを示します。値は、GMT または local です。デフォルトは local です。
(省略可能) このパラメータは、最終更新日の表示書式を決定します。これは、UNIX 関数 strftime() の書式仕様を使用します。
(省略可能) インデックス化中にサーバが無視すべきファイル名のワイルドカードパターンを指定します。ピリオド (.) で始まるファイル名は、常に無視されます。デフォルトでは、ピリオド (.) で始まるファイル名だけを無視します。
(省略可能) ファイルのアイコン (.gif ファイル) の URL を生成するときに index-common 関数が使用する URI 接頭辞を指定します。デフォルトでは、/mc-icons/ です。icon-uri がデフォルトとは異なる場合は、サーバがこれらのアイコンを見つけられるように、NameTrans 指令にある pfx2dir 関数を変更する必要があります。
関連項目
index-common、find-index、home-page
define-perf-bucket 関数は、obj.conf にある SAF のパフォーマンスの測定に使用できるパフォーマンスバケットを作成します (「バケットパラメータ」 および service-dump 関数を参照)。この関数は、perf-init 関数が有効な場合に限り機能します。
パフォーマンスバケットの詳細は、『Performance Tuning, Sizing, and Scaling Guide for iPlanet Web Server』を参照してください。
Init fn="define-perf-bucket" name="cgi-bucket" description="CGI Stats"
関連項目
perf-init
dns-cache-init 関数は、DNS 検索が有効になっているときに DNS 検索がキャッシュされるよう指定します。DNS 検索がキャッシュされている場合は、サーバがクライアントのホスト名情報を取得するときに、その情報を DNS キャッシュに格納します。将来、サーバがクライアントに関する情報を必要とする場合は、DNS キャッシュのこの情報を利用できます。
DNS キャッシュのサイズと、キャッシュエントリが無効になるまでの時間を指定することができます。DNS キャッシュには、32 〜 32768 のエントリを含めることができ、デフォルト値は 1024 エントリです。キャッシュエントリの期限切れまでの時間の値 (秒単位で指定) は、1 秒から 1 年の範囲で指定でき、デフォルト値は 1200 秒 (20 分) です。
(省略可能) キャッシュに含めるエントリの数を指定します。指定できる値は 32 〜 32768 で、デフォルト値は 1024 です。
(省略可能) キャッシュエントリの期限が切れるまでの時間 (秒単位) を指定します。指定できる値は 1 〜 31536000 (1 年) で、デフォルトは 1200 秒 (20 分) です。
flex-init 関数は、柔軟なログ作成に使用する指定されたログファイルを開き、その記録の書式を確立します。ログ書式は、ログファイルの最初の行に記録されます。サーバがログファイルを使用している間は、ログ書式の変更はできません。
flex-log 関数は、要求処理プロセスの AddLog 段階中に、ログファイルにエントリを書き込みます。
サーバがシャットダウンまたは再起動するまで、ログファイルは開いたままになります。シャットダウンまたは再起動時に、すべてのログが閉じられ、再度開かれます。
注 flex-log を呼び出す AddLog 段階指令がサーバにある場合、柔軟なログファイルはサーバの初期化中に flex-init によって初期化されなければなりません。
複数のログファイル名を同じ flex-init 関数呼び出しで指定することができます。その後、flex-log 関数を持つ複数の AddLog 指令を使って、各ログファイルへのトランザクションを記録します。
flex-init 関数は、複数回呼び出すことができます。それぞれの新しいログファイル名と書式は、ログファイルのリストに追加されます。
現在アクティブなログファイルを、サーバをシャットダウンまたは再起動せずに移動、削除、または変更すると、クライアントのアクセスが記録されないことがあります。現在アクティブなログファイルを保存またはバックアップするには、ファイル名を変更してからサーバを再起動する必要があります。サーバは最初にログファイルを名前で検索し、見つからなければ、新しいログファイルを作成します (ユーザが使用できるように、名前を変更された元のログファイルは残っています)。
ログファイルのローテーションについては、flex-rotate-initを参照してください。
flex-init 関数には、次の 3 つのパラメータがあります。ログファイルに名前を付けるパラメータ、そのファイルの各レコードの書式を指定するパラメータ、およびログ作成のモードを指定するパラメータです。
パラメータの名前は、ログファイルの名前です。パラメータの値は、ログファイルへの絶対パス、またはサーバの logs ディレクトリに対して相対パスとなるファイル名のいずれかを指定します。次に例を示します。
access="/usr/netscape/server4/https-servername/logs/access"
このログファイル名は、後で flex-log 関数へのパラメータとして使用します。
書式については、後述の「ログ書式の詳細」を参照してください。
グローバルログバッファのサイズを指定します。デフォルトは 8192 です。後述の 3 番目の flex-init の例を参照してください。
使用するログ作成バッファの最大数を指定します。デフォルトは 1000 です。後述の 3 番目の flex-init の例を参照してください。
ログ書式の詳細
flex-init 関数は、パーセント記号 (%) で囲まれた部分を、サーバのパラメータブロックに格納されている名前 - 値ペアの名前部分として認識します。(この規則の唯一の例外は、現在のシステム日付を配信する %SYSDATE% コンポーネントです。) %SYSDATE% は、時刻の書式 %d/%b/%Y:%H:%M:%S にグリニッジ標準時からのオフセットを加えたものを使って書式設定されます。(パラメータブロックの詳細は 第 4 章「カスタム SAF の作成」を、pblock を操作する関数については 第 5 章「NSAPI 関数のリファレンス」を参照してください。)
追加のテキストはすべてリテラルテキストとして扱われるため、行に追加して読みやすくすることができます。書式設定パラメータの一般的なコンポーネントは、表 7-1に一覧表示されています。コンポーネントによってはスペースが含まれることもあるため、エスケープされた引用符 (\") で区切る必要があります。
ログファイルの書式パラメータが全く指定されていない場合は、共通のログ書式が使われます。
"%Ses->client.ip% - %Req->vars.auth-user% [%SYSDATE%]
\"%Req->reqpb.clf-request%\" %Req->srvhdrs.clf-status%
%Req->srvhdrs.content-length%"これで、Req->headers.cookie.name コンポーネントのログを作成することによって、cookie のログを作成することができます。
次の表では、エスケープされた二重引用符 (\") で囲まれたコンポーネントは、空白を含む値へ解決する可能性のあるコンポーネントです。
表 7-1 flex-init 書式の一般的なコンポーネント
クライアントホスト名 (flex-log オプションで iponly が指定されていない限り、または DNS 名が使用不可でない限り) または IP アドレス
例
次の最初の例では、柔軟なログ作成をファイル /usr/netscape/server4/https-servername/logs/access に行なうよう初期化します。
これはデフォルトの書式で、共通ログフォーマット (Common Log Format: CLF) に対応します。
多数のログアナライザが出力として予期しているため、ログの最初の 6 つの要素は、常に上記とまったく同じ書式にするようお勧めします。
2 番目の例では、柔軟なログ作成をファイル /user/netscape/server4/https-servername/logs/extended に行なうよう初期化します。
3 番目の例は、要求処理スレッドが、ログファイルに書き込む時に、呼び出しをログフラッシュスレッドへ委託するのではなく、呼び出しをブロックしてしまうのを防ぐように、ログ作成を調整する方法を示しています。
buffer-size および num-buffers パラメータのサイズをデフォルト値の倍にして、LogFlushInterval magnus.conf 指令の値を 4 秒に下げる (第 7 章「magnus.conf の構文と使用法」を参照) と、要求処理スレッドが解放され、ログデータを迅速に書き込むことができます。
関連項目
flex-rotate-init、flex-log
flex-rotate-init 関数は、サーバ上のすべてのログファイルのログのローテーションを構成します。これには、エラーログ、common-log、flex-log、および record-useragent AddLog SAF が含まれます。flex-init を呼び出す前に、magnus.conf の Init セクションにあるこの関数を呼び出します。flex-rotate-init 関数を使うと、ログファイルをローテーションさせる時間間隔を指定できます。サーバは、指定された時間間隔で、名前が移動の時間を示すファイルにログファイルを移動します。次に、obj.conf の AddLog 段階にあるログ関数が、新しいログファイル内にエントリのログ作成を開始します。ログファイルがローテーションしている間、サーバをシャットダウンしておく必要はありません。
注 サーバはすべてのローテーションされたログファイルを永久に保持するので、ディスクスペースの解放のために、必要に応じてそれらをクリーンアップする必要があります。
ローテーションを開始する時刻を示します。この値は、時刻を 24 時制で示す 4 桁の文字列です。たとえば、0900 は午前 9 時を示し、2100 は午後 9 時を示します。
(省略可能) common-log、flex-log、および record-useragent ログをローテーションさせるかどうかを決定します。値は、yes (デフォルト) と no です。
(省略可能) ログファイルのローテーションの後に続けて実行する、ユーザが提供したプログラムのファイル名を指定します。このプログラムには、ローテーションされたログファイルのローテーション後の名前が、そのパラメータとして渡されます。
例
次の例は、ログのローテーションを、深夜 0 時に開始して 1 時間ごとに実施されるようにします。
Init fn=flex-rotate-init rotate-start=2400 rotate-interval=60
関連項目
flex-init、common-log、flex-log、record-useragent
init-cgi 関数は、CGI 実行のための特定の初期化タスクを実行します。次の 2 つのオプションがあります。CGI スクリプトの実行のタイムアウトと、環境変数の確立です。
関連項目
send-cgi、send-wincgi、send-shellcgi
init-clf 関数は、共通のログ作成に使われる、指定されたログファイルを開きます。common-log 関数は、要求処理プロセスの AddLog 段階中に、ログファイルにエントリを書き込みます。サーバがシャットダウンされるまで (シャットダウン時にログファイルは閉じられます)、または再起動されるまで (再起動時にログファイルは閉じられ、再度開かれます)、ログファイルは開いたままになります。
注 common-log を呼び出す AddLog 段階指令がサーバにある場合、共通ログファイルは初期化中に init-clf によって初期化されなければなりません。
注 この関数の呼び出しは一回のみにしてください。再度呼び出すと、以前のすべての呼び出しからのログファイル名が新しい呼び出しによって置き換えられます。
サーバをシャットダウンまたは再起動せずにログファイルを移動、削除、または変更すると、クライアントのアクセスが記録されないことがあります。ログファイルを保存またはバックアップするには、ファイル名を変更 (UNIX の場合はさらに、-HUP シグナルも送信) してからサーバを再起動する必要があります。サーバは最初にログファイルを名前で検索し、見つからなければ、新しいログファイルを作成します (ユーザが使用できるように、名前を変更された元のログファイルは残っています)。
ログファイルのローテーションについては、flex-rotate-initを参照してください。
パラメータの名前は、ログファイルの名前です。パラメータの値は、ログファイルへの絶対パス、またはサーバの logs ディレクトリに対して相対パスとなるファイル名のいずれかを指定します。次に例を示します。
access="/usr/netscape/server4/https-servername/logs/access"
mylogfile = "log1"このログファイル名は、後で common-log 関数へのパラメータとして使用します。
Init fn=init-clf access=/usr/netscape/server4/https-boots/logs/access
Init fn=init-clf templog=/tmp/mytemplog templog2=/tmp/mytemplog2
関連項目
common-log、record-useragent、flex-rotate-init
UNIX のみ: init-uhome 関数は、システムのユーザホームディレクトリに関する情報を内部ハッシュテーブルに読み込みます。これによりメモリ使用量が多少増えますが、ホームディレクトリへのトラフィックが大量にあるサーバの場合は、パフォーマンスが向上します。
(省略可能) /etc/passwd 以外のファイルへのファイルシステムの絶対パスを指定します。指定しない場合は、デフォルトの UNIX パス (/etc/passwd) が使用されます。
関連項目
unix-home、find-links
load-modules 関数は、共用ライブラリまたは動的リンクライブラリをサーバコードに読み込みます。ライブラリ中の指定された関数は、それ以降の指令から実行することができます。この関数を使用して、新しいプラグインまたは SAF を読み込みます。
ユーザ独自のサーバアプリケーション関数を定義する場合は、load-modules 関数を使用し、読み込む共用ライブラリまたは dll を指定することによって、サーバにそのサーバアプリケーション関数を読み込ませます。
共用ライブラリまたは動的リンクライブラリへの絶対パス、またはサーバ構成ディレクトリに対して相対パスとなるファイル名の、いずれかを指定します。
ほかの Init 指令または obj.conf の Service 指令による使用が可能となる、共用ライブラリまたは動的リンクライブラリ内の関数名の、コンマで区切られたリストです。このリストにはスペースを含めることはできません。関数名では、下線 (_) 文字の代わりにダッシュ (-) 文字を使用することができます。
thread-pool-init で指定される、カスタムスレッドプールの名前。
Init fn=load-modules shlib="C:/mysrvfns/corpfns.dll" funcs="moveit"
Init fn=load-modules shlib="/mysrvfns/corpfns.so" funcs="myinit,myservice"
Init fn=myinit
nt-console-init 関数は、NT コンソールを有効にします。NT コンソールは、標準の出力とエラーストリームを表示するコマンド行シェルです。
perf-init 関数は、パフォーマンスバケットを介したシステムパフォーマンスの測定を有効にします。
パフォーマンスバケットの詳細は、『Performance Tuning, Sizing, and Scaling Guide for iPlanet Web Server』を参照してください。
パフォーマンスバケットを介したシステムパフォーマンス測定の使用を無効にするフラグ。値は true または false です。デフォルト値は true です。
関連項目
define-perf-bucket
pool-init 関数は、プールされたメモリー設定のデフォルト値を変更します。空きブロックリストのサイズが変更されるか、プールされたメモリーがすべて使用不可になります。
メモリー割り当てプールを使って、サーバを大幅に高速に稼動させることができます。NSAPI を使ってプログラミングしている場合、プールされたメモリーを使用不可にすると、MALLOC、REALLOC、CALLOC、STRDUP、および FREE が若干異なる動作をするので注意してください。プールが有効な場合、サーバは、各要求が完了したときにこれらのルーチンによって割り当てられたすべてのメモリーを自動的にクリーンアップします。ほとんどの場合、これによってパフォーマンスが向上し、メモリーリークを防ぐことができます。プールが無効になっている場合、すべてのメモリーはグローバルになり、クリーンアップは行なわれません。
持続的なメモリー割り当てにしたい場合は、各ルーチン (PERM_MALLOC、PERM_REALLOC、PERM_CALLOC、PERM_STRDUP、および PERM_FREE) の名前に接頭辞 PERM_ を追加します。
注 Init クラス関数から割り当てるメモリーはすべて、MALLOC を使用する場合でも、持続的なメモリーとして割り当てられます。サーバは、要求の処理中に割り当てられるメモリーだけをクリーンアップします。また、Init クラス関数は要求を処理する前に実行されるため、それらのメモリーはグローバルに割り当てられます。
(省略可能) プールされたメモリーの使用を無効にするフラグ。値は true または false です。デフォルト値は false です。
この関数は、新しい HTTP メソッドを登録することによって HTTP プロトコルの拡張を可能にします。(デフォルトの HTTP メソッドを登録する必要はありません。)
サーバは、接続を受け入れるときに、受信したメソッドがサーバにとって既知のものかどうかを確認します。サーバがそのメソッドを認識しない場合は、「501 Method Not Implemented」というエラーメッセージを返します。
例
次の例は、register-http-method と、メソッドの 1 つの Service 関数の使用法を示しています。
Init fn="register-http-method" methods="MY_METHOD1,MY_METHOD2"
この関数は、XML 形式のパフォーマンス統計のレポート作成を有効にします。実際のレポートは、obj.conf の stats-xml 関数によって生成されます。
サーバ内での統計更新の間の期間 (秒単位)。パフォーマンスを良くするには大きめの値を設定し、更新の頻度を上げるには低めの値を設定します。最小値は 1 で、デフォルトは 5 です。
統計の追跡対象になる仮想サーバの最大数。この数は、構成されている仮想サーバの数より大きく設定する必要があります。それより小さい数を設定すると、メモリ使用量が少なくなります。最小値は 1 で、デフォルトは 1000 です。
yes に設定すると、バケットを使った NSAPI パフォーマンスのプロファイルを有効にします。これは、perf-init Init SAF を使って有効にすることもできます。デフォルトは no で、この場合、サーバのパフォーマンスが多少向上します。
Init fn="stats-init" update-interval="5" virtual-servers="2000" profiling="yes"
関連項目
stats-xml
この関数は、ユーザスレッドの新しいプールを作成します。プールは、使う前に宣言する必要があります。新しいプールを使用するようプラグインに指示するには、Init クラス関数 load-modules でプラグインを読み込むときにpool パラメータを指定します。
カスタムスレッドプールを作成する理由の 1 つは、プラグインがスレッドを意識しない場合に、プール内のスレッドの最大数を 1 に設定できることです。
古いパラメータ NativeThread=yes は、常に NativePool という 1 つのデフォルトのネイティブプールを専用使用します。
UNIX 上のネイティブプールは、すべてのスレッドが OS レベルのスレッドであるため、通常は専用使用されません。UNIX 上のネイティブプールを使用すると、追加のコンテキストスイッチが必要になるため、パフォーマンスのオーバーヘッドがわずかに発生することがありますが、jvm.stickyAttach の効果のローカライズや、リソースの制御と管理、プラグインのシングルスレッド動作のエミュレートなどのその他の目的に使用することができます。
Windows NT では、常にデフォルトのネイティブプールが使われ、iPlanet Web Server は最初の要求処理のためにファイバ (ユーザがスケジュールしたスレッド) を使用します。Windows NT でカスタムの追加プールを使用しても、余分なオーバーヘッドは発生しません。
さらに、ネイティブスレッドプールのパラメータは、利便性のために magnus.conf ファイルに追加することができます。詳細は、第 7 章「magnus.conf の構文と使用法」の「ネイティブスレッドプール」を参照してください。
Init fn=thread-pool-init name="my-custom-pool" maxthreads=5 minthreads=1 queuesize=200
Init fn=load-modules shlib="C:/mydir/myplugin.dll" funcs="tracker" pool="my-custom-pool"
関連項目
load-modules
サーバ情報
ここでは、サーバに関する情報を指定する magnus.conf の指令をリストします。それらの指令は次のとおりです。
ExtraPath
指定されたディレクトリ名を PATH 環境変数に付加します。これは、Windows NT での Java の構成に使われます。デフォルト値はないので、必ず値を指定する必要があります。
サーバのエージェントが使用する SMTP メールサーバの名前を指定します。この値は、レポートがメールアドレスに送信される前に指定する必要があります。
サーバインスタンスが下にある最上位ディレクトリへの絶対パス名を指定します。この指令は、Administration Server が使用します。デフォルト値はないので、必ず値を指定する必要があります。
構文
ServerConfigurationFile path
デフォルト
ServerConfigurationFile server_root/server_id/config/server.xml
https-boots.mcom.com などのサーバ ID を指定します。
サーバルートを指定します。この指令はインストール中に設定され、コメントアウトされます。ほかの指令とは異なり、サーバはこの指令が # で始まることを予期します。この指令は変更しないでください。変更すると、サーバマネージャが正しく機能しないことがあります。
例
#ServerRoot d:/netscape/server4/https-boots.mcom.com
サーバが一時ファイル用に使用するローカルボリューム上のディレクトリを指定します。UNIX では、サーバを稼動するユーザが、このディレクトリを所有し、書き込み可能でなければなりません。User および TempDirSecurity 指令も参照してください。
TempDir ディレクトリがセキュリティ保護されているかをサーバが確認するかどうかを決定します。 UNIX では、TempDirSecurity に off を指定することによって、サーバが /tmp を一時ディレクトリとして使用できます。
TempDirSecurity に off を指定したり、UNIX で /tmp を一時ディレクトリとして使用することはお勧めできません。 /tmp を一時ディレクトリとして使用すると、潜在的なセキュリティ上のリスクがかなり増すことになります。
Windows NT: User 指令は、サーバを稼動するためのユーザアカウントを指定します。特定のユーザアカウント (LocalSystem 以外) を使用することで、サーバに対してシステムの機能を制限したり有効にしたりできます。たとえば、ファイルを別のマシンからマウントできるようなユーザアカウントを使用できます。
UNIX: User 指令は、サーバ用の UNIX ユーザアカウントを指定します。スーパーユーザまたはルートユーザがサーバを起動すると、サーバはユーザが指定する Port にバインドし、次にそのユーザ ID を、User 指令で指定されたユーザアカウントに切り換えます。サーバが root として起動されなかった場合、この指令は無視されます。ユーザが指定するユーザアカウントには、サーバのルートとサブディレクトリに対する読み取り権が必要です。このユーザアカウントには、logs ディレクトリへの書き込みアクセス権と、すべての CGI プログラムに対する実行権が必要です。このユーザアカウントは、構成ファイルへの書き込みアクセス権は持つべきではありません。これにより、万一だれかがサーバを攻撃しても、構成ファイルを変更してマシンに対する広範なアクセス権を取得することはできません。nobody ユーザを使用することはできますが、お勧めはできません。
name は、 ユーザアカウント用の 8 文字以下のログイン名です。
デフォルト
User 指令がない場合、サーバは起動に使われたユーザアカウントを使って稼動します。
言語に関する問題
この節では、言語上の問題に関連した magnus.conf の指令をリストします。次の指令があります。
AdminLanguage
国際バージョンのサーバの場合、この指令はサーバマネージャ用の言語を指定します。値は、en (英語)、fr (フランス語)、de (ドイツ語)、または ja (日本語) です。
国際バージョンのサーバの場合、この指令はクライアントメッセージ (「File Not Found」など) 用の言語を指定します。値は、en (英語)、fr (フランス語)、de (ドイツ語)、または ja (日本語) です。
国際バージョンのサーバの場合、この指令はサーバ用のデフォルトの文字セットを指定します。デフォルトの文字セットは、クライアントの応答と管理の両方に使われます。
国際バージョンのサーバの場合、この指令はサーバ用のデフォルトの言語を指定します。デフォルトの言語は、クライアントの応答と管理の両方に使われます。値は、en (英語)、fr (フランス語)、de (ドイツ語)、または ja (日本語) です。
DNS 検索
この節では、DNS 検索に影響する magnus.conf の指令をリストします。次の指令があります。
AsyncDNS
非同期 DNS を許可するかどうかを指定します。この指令を有効にするには、DNS 指令で on が設定されている必要があります。値は、on または off のいずれかです。DNS を有効に設定すると、非同期 DNS が可能となりサーバのパフォーマンスが向上します。
DNS 指令は、サーバにアクセスするクライアント上でサーバが DNS 検索を実行するかどうかを指定します。クライアントがサーバに接続するとき、サーバはクライアントの IP アドレスは知っていますがそのホスト名は知りません (たとえば、サーバはクライアントをホスト名 www.a.com ではなく 198.95.251.30 として認識します)。サーバは、アクセス制御、CGI、エラーレポート、アクセスログの作成などの操作のために、クライアントの IP アドレスをホスト名に解釈処理します。
サーバが 1 日に大量の要求に応答している場合は、ホスト名の解釈処理を中止したい (または中止する必要がある) ことがあります。そうすることにより、DNS または NIS サーバの負荷を削減できます。
デフォルト
DNS ホスト名解釈処理のデフォルトは on です。
スレッド、プロセス、および接続
iPlanet Web Server 6.0 では、待機ソケット上の受け入れ側スレッドが接続を受け付けて、それらの接続を接続キューに入れます。次に、セッションスレッドがキューから接続を取り出して、要求にサービスを提供します。セッションスレッドは、要求の終わりで必要であれば、より多くのセッションスレッドを送信します。新しいスレッドの追加におけるポリシーは、接続キューの状態に基づいています。
新しい接続が返されるたびに、キューで待機している接続 (接続の未処理分) の数が、すでに作成されているセッションスレッドの数と比較されます。待機している接続の数がそのスレッドの数より多い場合は、次に要求が完了した時点でスレッドをさらに追加するようにスケジュールされます。
ここでは、スレッド、プロセス、および接続の数とタイムアウトに影響する magnus.conf の指令をリストします。それらの指令は次のとおりです。時間の経過につれて増加しているように見える場合、およびその増加が ThreadIncrement 値より大きく、セッションスレッドから未処理分を引いた数が ThreadIncrement 値より小さい場合は、さらに ThreadIncrement 数のスレッドを追加するようにスケジュールされるよう、前回の未処理分が追跡されます。
新しいセッションスレッドを追加するプロセスは、RqThrottle 値によって厳密に制限されます。
未処理分が急に増えたときに (たとえばベンチマーク読み込みの開始時など) 作成されるスレッドが多くなりすぎないようにするため、スレッドがさらに必要かどうかの決定がなされます。これは、すでに存在するセッションスレッドの数に基づいて、16 回または 32 回の接続ごとに一回だけ行なわれます。
ConnQueueSize
ネイティブカーネルスレッドのプールを制御する指令については、「ネイティブスレッドプール」も参照してください。
Web サーバが保持できる未処理の (まだサービスを受けていない) 接続の数を指定します。この値は、プロセスごとのオープンファイル記述子の最大数に対するオペレーティングシステムの制限値より常に大きくすることをお勧めします。
クライアントから要求データを読み取るために各要求処理スレッドが使用するバッファのサイズ (バイト単位)。要求処理スレッドの最大数は、RqThrottle の設定によって制御されます。
デフォルト
デフォルト値は 8192 (8 K バイト) です。
クライアントからデータが届くのをサーバが待つ時間 (秒数) を指定します。タイムアウトが期限切れになる前にデータが届かない場合は、接続は閉じられます。この値をデフォルトの 30 秒より小さく設定すれば、早めにスレッドを解放することができます。ただし、低速で接続しているユーザが切り離されることがあります。
デフォルト
ハードウェア暗号化デバイスを使用しないサーバの場合は 30 秒、使用するサーバの場合は 300 秒。
この指令は、キープアライブサブシステムのスレッドの数を決定します。この数は、システム上のプロセッサ数の小さい倍数にすることをお勧めします。(たとえば、CPU が 2 つのシステムは、キープアライブスレッドの数を 2 または 4 にします)。この設定の値を選ぶときは、許可されているキープアライブ接続の最大数 (MaxKeepAliveConnections) も考慮に入れる必要があります。
この指令は、サーバが、クライアントとサーバ間で HTTP キープアライブ接続または持続接続を開いている最大時間を決定します。前のバージョンのサーバのキープアライブ機能では、サーバがクライアント要求を処理している間、クライアントとサーバの接続を開いたままにしておくことができます。デフォルトの接続は、サーバが接続を閉じるか、接続が KeepAliveTimeout で許可された時間を超えるまで接続が開いたままである、持続接続です。
タイムアウトのカウントダウンは、接続がキープアライブサブシステムに渡されるときに開始します。タイムアウトが期限切れになったときに接続に何も動作がない場合、接続は閉じられます。
デフォルト
デフォルト値は 30 秒です。最大値は 300 秒 (5 分) です。
iPlanet Web Server では、オペレーティングシステムがカーネルレベルのスレッドをサポートしているときは常に、カーネルレベルとユーザレベルの両方のスレッドをサポートできます。ローカルスレッドはプロセス内の NSPR によってスケジュールされ、カーネルスレッドはホストのオペレーティングシステムによってスケジュールされます。通常、標準のデバッガとコンパイラは、カーネルレベルのスレッドの使用が意図されています。KernelThreads を 1 (オン) に設定すると、サーバがユーザレベルのスレッドではなく必ずカーネルレベルのスレッドのみを使用するようにできます。KernelThreads を 0 (オフ) に設定すると、サーバが必ずユーザレベルのスレッドのみを使用するようにし、これによりパフォーマンスが向上することがあります。
待機ソケット上の、未処理の接続の最大数を指定します。未処理のキューがいっぱいになっている待機ソケットでタイムアウトになった接続は、失敗します。
デフォルト
デフォルト値はプラットフォームに依存します。4096 (AIX)、200 (NT)、128 (その他すべて) です。
サーバが同時に開いておくことができるキープアライブおよび持続接続の最大数を指定します。値の範囲は 0 〜 32768 です。
サーバが同時に実行しておくことができるプロセスの最大数を指定します。magnus.conf ファイルに MaxProcs を含めない場合、サーバはデフォルトの単一プロセスの実行を採用します。
マルチプロセスモードで実行している場合は、プロセッサごとに 1 つのプロセスをお勧めします。iPlanet Web Server 6.0 では、この設定で指定するアクティブプロセス数のほかに、最初から存在するプロセスが常にあります。
上記に関して、およびその他のサーバ構成およびパフォーマンスの調整に関する問題の補足説明が、『Performance Tuning, Sizing, and Scaling Guide for iPlanet Web Server』に記載されています。
この指令が 1 (オン) に設定されている場合、サーバは、接続を受け入れてから応答を要求に送るまでの間に、最小数のスレッドが待機ソケットで利用可能かどうかを確認します。長時間のデータベース接続など、処理に時間のかかる要求をサーバで処理するときは、この指令を使用します。
ソケットが使用する受信バッファのサイズ (バイト単位) を指定します。指定できる値は、オペレーティングシステムによって決定されます。
デフォルト
デフォルト値はオペレーティングシステムによって決定されます。通常のデフォルトは、4096 (4K バイト)、8192 (8K バイト) です。
サーバが同時に処理できる要求処理スレッドの最大数を指定します。それぞれの要求は、自身のスレッドで実行されます。
上記に関して、およびその他のサーバ構成およびパフォーマンスの調整に関する問題の補足説明が、『Performance Tuning, Sizing, and Scaling Guide for iPlanet Web Server』に記載されています。
サーバの起動時に作成される要求処理スレッドの数を指定します。サーバでの負荷が増加するに従って、作成される要求処理スレッドも増えます (RqThrottle スレッドの最大数まで)。
ソケットが使用する送信バッファのサイズ (バイト単位) を指定します。
デフォルト
デフォルト値はオペレーティングシステムによって決定されます。通常のデフォルトは、4096 (4K バイト)、8192 (8K バイト) です。
厳密な HTTP ヘッダー検査を制御します。厳密な HTTP ヘッダー検査がオンの場合、サーバは不適切に重複されたヘッダーが含まれている接続を拒否します。
サーバが、シャットダウンする前に、すべての既存の接続が終了するのを待つ時間を指定します。
サーバでの負荷の増加 (たとえば、未処理の接続 (要求処理キューにある) の数がアイドル状態の要求処理スレッドの数を超えたときなど) に対処するために作成される、追加の、または新しい要求処理スレッドの数。
サーバは起動時に、要求処理スレッドの RqThrottleMin 番号を作成します。負荷が増えるに従って、サーバは RqThrottle 個の要求処理スレッドが作成されるまで、ThreadIncrement 個の追加要求処理スレッドを作成します。
1 (オン) に設定されると、プラットフォーム固有のポーリングインタフェースを使用します。0 (オフ) に設定されると、KeepAlive サブシステムの NSPR ポーリングインタフェースを使用します。
ネイティブスレッドプール
この節では、ネイティブカーネルのスレッドプールのサイズを制御する指令をリストします。システム変数 NSCP_POOL_STACKSIZE、NSCP_POOL_THREADMAX、および NSCP_POOL_WORKQUEUEMAX の設定により、ネイティブスレッドプールを制御することもできます。これらの値が環境変数として設定されていて、magnus.conf でも設定されている場合は、環境変数の値が優先されます。UNIX 上のネイティブプールは、すべてのスレッドが OS レベルのスレッドであるため、通常は専用使用されません。UNIX 上のネイティブプールを使用すると、追加のコンテキストスイッチが必要になるため、パフォーマンスのオーバーヘッドがわずかに発生することがありますが、jvm.stickyAttach 効果のローカライズや、リソースの制御と管理、プラグインのシングルスレッド動作のエミュレートなどのその他の目的に使用することができます。
Windows NT では、常にデフォルトのネイティブプールが使われ、iPlanet Web Server は最初の要求処理のためにファイバ (ユーザがスケジュールしたスレッド) を使用します。Windows NT でカスタムの追加プールを使用しても、余分なオーバーヘッドは発生しません。
NativePoolStackSize
ネイティブ (カーネル) スレッドプール内の各スレッドのスタックサイズを決定します。
ネイティブ (カーネル) スレッドプール内のスレッドの最大数を決定します。
ネイティブ (カーネル) スレッドプール内のスレッドの最小数を決定します。
スレッドプール用にキューで待機できるスレッドの数を決定します。プール内のすべてのスレッドが使用中である場合、ネイティブプール内のスレッドを使用する必要のある次の要求処理スレッドは、そのキューで待機しなければなりません。キューがいっぱいの場合、キューに入ろうとする次の要求処理スレッドは拒否され、使用中(ビジー)であるという応答がクライアントに返されます。その後スレッドは、キューで待機して拘束されるのではなく、別の着信要求を処理するために解放されます。
CGI
この節では、CGI プログラムに対する要求に影響を与える magnus.conf の指令のリストを示します。次の指令があります。
CGIExpirationTimeout
この指令は、CGI プロセスが、強制終了される前に、実行することができる最大時間 (秒単位) を指定します。
CGIExpirationTimeout に設定する値が低くなりすぎないようにする必要があります。300 秒 (5 分) はほとんどの対話型 CGI に適した値ですが、それより長い時間かかる(誤った動作なく)ことが予想される CGI の場合は、CGI プログラムを正常に実行するのに予想される最大の時間を設定する必要があります。値 0 は、CGI の期限切れを無効にします。つまり、CGI プロセスの時間制限をなくします。
Windows NT プラットフォームでは、init-cgi タイムアウトは機能しないため、CGIExpirationTimeout を使用する必要があります。
この指令により、サーバは、この指令で設定された秒数の間アイドル状態が続いたすべての CGIStub プロセスを強制終了します。いったんプロセスの数が MinCGIStubs の数になると、サーバはそれ以上のプロセスを強制終了しません。
UNIX プラットフォームの場合、CGIWaitPid が on に設定されているときは、SIGCHLD シグナルに対する動作は、そのシグナルに対するシステムのデフォルト動作です。NSAPI プラグインが子プロセスをフォークまたは実行 (exec) する時は、子プロセスの終了時に、「終了した」プロセスから退去することを避けるために CGIWaitPid が有効になっている場合、その子プロセスの pid で waitpid を呼び出す必要があります。CGIWaitPid が有効になっているとき、SHTML エンジンはその exec cmd 子プロセス上で明示的に待機します。この指令は CGI には影響をおよぼさないことに注意してください。
サーバが生成できる CGIStub プロセスの最大数を制御します。これは、実行中の同時 CGIStub プロセスの最大数であり、未処理の要求の最大数ではありません。デフォルトの値は、ほとんどのシステムに対して適切であると思われます。設定値が高すぎると、実際にはスループットが減ることがあります。
デフォルトで開始されるプロセスの数を制御します。最初の CGIStub プロセスは、CGI プログラムがアクセスされるまで開始されません。magnus.conf ファイル内に init-cgi 指令がある場合、CGIStub プロセスの最小数は起動時に生成されることに注意してください。この値は、MaxCGIStubs 値より小さくなければなりません。
この値より長くかかる WinCGI プロセスは、このタイムアウト (秒) に達すると終了させられます。
エラーログ作成と統計収集
この節では、エラーログ作成とサーバ統計の収集に影響する magnus.conf の指令をリストします。それらの指令は次のとおりです。
ErrorLog 指令は、サーバがエラーのログを作成するディレクトリを指定します。エラーがファイルにレポートされる場合、ログを保持するファイルとディレクトリは、サーバを稼動するユーザアカウントが何であっても、常にそのユーザアカウントから書き込み可能でなければなりません。
logfile は、絶対パスまたはファイル名のいずれかにすることができます。
UNIX システムでは、キーワード SYSLOG にすることができます (すべて大文字にする必要があります)。
ErrorLog C:\Netscape\ns-home\Logs\Errors
ErrorLog /var/ns-server/logs/errors
ErrorLogDateFormat 指令は、サーバログが使用する日付の書式を指定します。
format は、C ライブラリ関数 strftime に対して有効な、任意の書式です。付録 D「時刻の書式」を参照してください。
この指令は、ログフラッシュスレッドのログフラッシュの間隔 (秒) を決定します。
この指令は、詳細ログを作成するかどうかを決定します。この値が on の場合、サーバは、デフォルトでは記録されないものを含め、すべてのサーバメッセージのログを作成します。
この指令は、仮想サーバ ID をエラーログに表示するかどうかを決定します。複数の仮想サーバが同じログファイルを共有するときは、LogVsId を有効にする必要があります。
PidLog は、ベースサーバプロセスのプロセス ID (pid) を記録するファイルを指定します。サーバサポートプログラムによっては、このログがサーバルートの logs/pid にあると仮定するものもあります。
サーバをシャットダウンするには、-TERM シグナルを使用して、pid ログファイルにリストされるベースサーバプロセスを強制終了します。構成ファイルを再度読み込んでログファイルを再度開くようサーバに指示するには、kill を -HUP シグナルとともに使用します。
サーバが使用しているユーザアカウントで PidLog ファイルが書き込み可能でない場合、サーバはそのプロセス ID のログをどこにも作成しません。サーバは、プロセス ID のログを作成できない場合、開始しません。
file は、プロセス ID が格納される絶対パス名およびファイル名です。
例
PidLog /var/ns-server/logs/pid
ACL
この節では、アクセス制御リスト (ACL) に関連する magnus.conf の指令をリストします。それらの指令は次のとおりです。
ACLCacheLifetime
ACLCacheLifetime は、キャッシュエントリが期限切れになるまでの秒数を決定します。キャッシュ内のエントリが参照されるたびに、その経過時間が ACLCacheLifetime に照らして計算され、確認されます。経過時間が ACLCacheLifetime 以上の場合、このエントリは使用されません。この値を 0 に設定すると、キャッシュはオフになります。
この値に大きい数を指定する場合は、LDAP エントリに変更を加えるときに iPlanet Web Server を再起動する必要があることがあります。たとえば、この値を 120 秒に設定すると、iPlanet Web Server は 2 分間 LDAP サーバとの同期を失う可能性があります。LDAP が頻繁に変わる可能性がなさそうな場合は、大きい数を使用します。
ACLUserCacheSize は、ユーザキャッシュ内のユーザ数を決定します。
ACLGroupCacheSize は、単一の UID/キャッシュエントリ用にキャッシュできるグループ ID の数を決定します。
セキュリティ
この節では、iPlanet Web Server のサーバアクセスとセキュリティの問題に影響する magnus.conf の指令をリストします。それらの指令は次のとおりです。
Security
Security 指令は、証明書をサーバインスタンスで利用できるようにすることによって、SSL をグローバルに有効または無効にします。SSL を使用する仮想サーバの場合、これは on でなければなりません。無効になっている場合、ユーザに対して管理者パスワードを求めるプロンプトが表示されます (証明書などにアクセスするため)。
注 セキュリティ保護された待機ソケットをサーバマネージャで作成するとき、セキュリティは自動的に magnus.conf でグローバルにオンになります。セキュリティ保護された待機ソケットを server.xml で手動で作成するときは、magnus.conf を編集してセキュリティをオンにする必要があります。
個々の仮想サーバに対する SSL の有効化についての詳細は、第 8 章「仮想サーバの構成ファイル」を参照してください。
キャッシュできる SSL セッションの数を指定します。上限はありません。
number が 0 の場合、デフォルト値 10000 が使われます。
クライアント証明書のハンドシェーク段階でバッファされるアプリケーションデータの最大量 (バイト) を指定します。
デフォルト
デフォルト値は、1048576 (1 M バイト) です。
クライアント証明書のハンドシェーク段階がタイムアウトするまでの秒数を指定します。
SSLSessionTimeout 指令は、SSL2 セッションのキャッシュ化を制御します。
seconds 値は、キャッシュされた SSL2 セッションが無効になるまでの秒数です。SSLSessionTimeout 指令が指定されている場合、この秒数の値は暗黙的に 5 〜 100 秒間に制限されます。
SSL3SessionTimeout 指令は、SSL3 セッションのキャッシュ化を制御します。
seconds 値は、キャッシュされた SSL3 セッションが無効になるまでの秒数です。デフォルト値は 86400 (24 時間) です。SSL3SessionTimeout 指令が指定されている場合、この秒数の値は暗黙的に 5 〜 86400 秒間に制限されます。
チャンクされたエンコーディング
この節では、チャンクされたエンコーディングを制御する指令をリストします。詳細は、「バッファ化されたストリーム」を参照してください。
UseOutputStreamSize
これらの指令に対しては、obj.conf 内に同等の Service SAF パラメータがあります。obj.conf パラメータは、これらの指令をオーバーライドします。詳細は、「Service 段階」を参照してください。
UseOutputStreamSize 指令は、net_read および netbuf_grab NSAPI 関数用のデフォルトの出力ストリームバッファサイズを決定します。
注 UseOutputStreamSize パラメータを obj.conf ファイルでゼロに設定して、出力ストリームバッファリングを無効にすることができます。magnus.conf ファイルの場合は、UseOutputStreamSize をゼロに設定しても効果はありません。
デフォルト
デフォルト値は 8192 (8 K バイト) です。
ChunkedRequestBufferSize 指令は、「チャンク解除」要求データのデフォルトのバッファサイズを決定します。
構文
ChunkedRequestBufferSize size
ChunkedRequestTimeout 指令は、「チャンク解除」要求データのデフォルトのタイムアウトを決定します。
構文
ChunkedRequestTimeout seconds
その他
この節では、magnus.conf のその他の指令をリストします。
ChildRestartCallback
注 ブール値が記載されている指令には、次のような同等の値があります。on/yes/true および off/no/false。
この指令は、サーバが再起動またはシャットダウンされるときに、daemon_atrestart 関数を使用して登録された NSAPI 関数のコールバックを強制します。値は、on、off、yes、no、true、または false です。
m.n という書式の、サーバが使用する現在の HTTP バージョン。ここで、m はメジャーバージョンの番号で、n はマイナーバージョンの番号です。
1 つの要求内のヘッダー行の最大数を指定します。値の範囲は 0 〜 32 です。
この指令は、さまざまなモードでファイルを開くために NSAPI 関数 System_fopenWA() および System_fopenRW() が使用する umask 値を指定します。この指令に有効な値は、UNIX の標準 umask 値です。
これらの関数の詳細は、第 5 章「NSAPI 関数のリファレンス」の system_fopenWA および system_fopenRW を参照してください。
前へ 目次 索引 DocHome 次へ
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.
Last Updated September 21, 2001