ここではサーバシステムの管理手順として,MHTMLサーバのコンパイルおよびインストール方法,起動および終了の方法,各種設定の変更方法,対応する文字集合および言語の追加の方法,アクセスログのフォーマットについて述べる.
なお,MHTMLサーバが動作することを確認しているOSを図に示す.
MHTMLサーバのソースアーカイブを展開すると図のようなディレクトリ構成になる.
mhtmld-1.2ディレクトリ上でmakeコマンドを実行すると,srcディレクトリ内に置かれているソースコードのコンパイルが行われる. コンパイルが終了すると,mhtmld-1.2ディレクトリ上にサーバの実行ファイル(mhtmld)が作成される. サーバの終了用のコマンド(kill-mhtmld)はソースアーカイブの展開時にmhtmld-1.2ディレクトリ上に作成される.
MHTMLサーバの起動は,次のようにmhtmld-1.2ディレクトリ上でサーバのコマンド名(mhtmld)を入力することにより行う.
これによりサーバが起動し,起動したディレクトリの下にある設定ファイル(conf/mhtmld.conf)を読み込み,ビューアからの要求の待ち状態に入る.
次のように起動時のオプションとして-fの後に設定ファイル名を指定することで,代わりに別の設定ファイルを読み込むことができる. 例えばconf/another.confを読み込む場合には次のように入力する.
MHTMLサーバの終了は,次のようにmhtmld-1.2ディレクトリ上で終了用のコマンド名(kill-
mhtmld)を入力することで行う.
これによりサーバが終了する.なお,この操作時に接続中のコネクションは強制的に切断される.
MHTMLサーバに関する各種設定は設定ファイルに記述されており,起動時に読み込まれる.
設定ファイルはデフォルトではconf/mhtmld.confを読み込む.
これは起動時のオプション-fにより変更が可能である.
設定ファイルには一行毎にフィールドと設定値の組を記述する.
``#
''で始まる行はコメントと見なされる.
設定可能なフィールドと初期設定値を表に示す.
まずFontフィールドの初期設定値を図に示す.
Fontフィールドは各文字集合につき1行を用い,フィールド名Fontに続けてフォントのファイル名,エスケープシーケンスの組を記述する.
対応する文字集合を追加する場合は,まずISO-2022-JP-2においてその文字集合に切り替えるエスケープシーケンスを調べる必要がある. 独自に外字として追加する場合には,ISO-2022で未定義のエスケープシーケンスの中から新たに定義する. フォントはX-Window SystemのBDFあるいはPCFフォーマットで用意し,FontDirフィールドで指定したディレクトリ(fonts)に格納する. 次に設定ファイルのFontフィールドにフォントのファイル名,およびその文字集合に切り替えるエスケープシーケンスを記述する.
最後に設定ファイルのLangフィールド中でその文字集合を使用する言語の行のエスケープシーケンスの項目に,その文字集合に切り替えるエスケープシーケンスを追加する. あるいは新たにその文字集合用のLangフィールドを追加する. この後MHTMLサーバを再起動することにより,文字集合の追加が有効になる.
Langフィールドの初期設定値を図に示す.
Langフィールドは各言語につき1行を用い,フィールド名Langに続けて言語名,変換関数の識別名,使用されるエスケープシーケンスの組を記述する.
文字集合を追加する際に,その文字集合を使用する文書の符号化方法がISO-2022-JP-2に基づいていない場合,それをISO-2022-JP-2に変換する関数を用意する必要がある.
このためにはまずMHTMLサーバのソースプログラム中の変換関数の定義部分に関数の識別名と関数名の組を追加し,入力と出力がchar(文字)型へのポインタとする関数を追加する.
次に設定ファイルに新たにLangフィールドを追加し,言語名,ソースプログラム中で指定した変換関数の識別名および使用されるエスケープシーケンスを記述する.
ソースコード中の変換関数の定義部分を図に示す.
この後MHTMLサーバを再起動することにより,言語の追加が有効になる.
ビューアからの要求はすべてアクセスログに記録される. アクセスログは一要求につき一行となっており,記録される内容のフォーマットは以下の通りである.
なお,要求元のホスト名が取得できない場合には代わりに要求元ホストのIPアドレスが記録される.
要求種別については表に既に示した通りである.
実際のアクセスログの例を図
に示す.
なお,要求元のホスト名の部分は伏せてある.
要求内容の部分には,要求種別がFILEのときには要求ファイル名,MHTMLのときには要求URLと要求言語の内部コードが記録される. 要求種別がINITIALのときには何も記録されない. ブラウザ種別はHTTP要求に含まれるUser-Agentヘッダの内容を記録する.