[Up] [Next] [Previous]  [Home]

WWWサーバのコンパイル

NCSA WWWサーバのコンパイル

ソースからコンパイルして使用する人は、まず、適当な場所にソースを展開し てください。ここでは、後のインストールを考えて/usr/local/etcに 展開します。

% cd /usr/local/etc
% zcat httpd_1.5-export_source.tar.Z | tar xvf -
すると、httpd_1.5-export というディレクトリが作成されます。 この中には、次のディレクトリを含んでいます。

cgi-bin
CGI(コモンゲートウェイインタフェース)のスクリプトやバイナリが置 かれるディレクトリ。
cgi-src
CGI(コモンゲートウェイインタフェース)のソースコードが置かれるディ レクトリ。
conf
WWWサーバの初期値や操作制御を行うためのコンフィギュレーションが 置かれるディレクトリ。
icons
ディレクトリインデックス等に使われるアイコンが置かれるディレク トリ。
logs
アクセス、エラー、アクセスクライアント種別のログやWWWサーバが動 作しているプロセスID等が置かれるディレクトリ。この logsディレク トリは使用時に作成して下さい。
support
アクセス制御のための便利なツールが置かれるディレクトリ。
htdocs
HTML文書が入るディレクトリ。このhtdocsディレクトリは使用時に作 成して下さい。
予めコンパイル済のファイルの場合、バイナリファイルも含まれていますが、 コンパイルを行いたい場合には、Makefileが準備されているので、 make systemとタイプします。単純に make をタイプすると、 system名の一覧が表示されます。

例えば、sunos の場合、

% make sunos
とします。すると httpd デーモンと cgi-bin のユーティリティが作成されま す。次にsupport ディレクトリにあるプログラムもコンパイルしておきます。

最後に、httpd_1.5-export を httpd にシンボリックリンクしておきます。

# cd ..; ln -s httpd_1.5-export httpd
httpd には数々のオプションをコンパイル前にデフォルトととして定義できま す。そのファイルは、srcディレクトリにある config.h ファ イルです。

#define SETPROCTITLE
プロセスを表示させた時に、どのホストから利用されているかを表 示させるオプションです。IBM AIX 3やSunOS 等で使用できます。
#define MULTI_HOST
仮想インタフェースまたは複数のインタフェースを持たせる場合に 指定します。
#define MINIMAL_DNS
ホスト名の逆引きを行なわない場合に指定します。この指定はDNSの逆 引きが接続のパフォーマンスに影響を与える場合に使用します。但し、 セキュリティ上好ましくありません。
#define MAXIMUM_DNS
逆引き後、再度ホスト名を引いてよりセキュリティ効果を高めるオプ ションです。
#define XBITHACK
このオプションを有効にすると、サーバはHTMLファイルの実行ビット をチェックして、サーバサイドインクルードを実行します。
#define SECURE_LOGS
CGIスクリプトのログ(エラーログファイル以外)を残したくない場合に 指定します。
#define NIS_SUPPORT
NISサーバを使用する場合に指定します。
#define HTTPD_ROOT
サーバルートのディレクトリパス名を指定します。
#define DOCUMENT_LOCATION
ドキュメントルートのディレクトリパス名を指定します。
サーバルートはhttpdサーバプログ ラム、コンフィグファイル、ログ、CGIスクリプトを置くディレクトリです。 ドキュメントルートはWWWの文書を置くディレクトリです。

Apacheサーバのコンパイル

セキュリティ上の注意

CERT Advisory CA-96.06 によると、NCSA 及び Apache の CGI プログラムにセキュリティホールがある事が判明しました。

phf の中で使用されている関数 "escape_shell_cmd() (cgi-src/util.c)"を使用している事が原因です。phf を削除し、この関 数を使用したプログラムも削除して下さい。


[Up] [Next] [Previous]  [Home]