NCSA WWWサーバのコンパイル
ソースからコンパイルして使用する人は、まず適当な場所へソースを展開してください。ここでは後のインストールを考えて/usr/local/etcに展開します。
% cd /usr/local/etcすると、httpd_1.5-exportというディレクトリが作成され、この中には次のディレクトリを含んでいます。
% zcat httpd_1.5-export_source.tar.Z | tar xvf -
あらかじめコンパイル済のファイルの場合、バイナリファイルも含まれていますが、コンパイルを行いたい場合には、Makefileが準備されているので、make systemとタイプします。単純にmakeをタイプすると、system名の一覧が表示されます。たとえば、sunos の場合、
- cgi-bin
- CGI(コモンゲートウェイインタフェース)のスクリプトやバイナリが置かれるディレクトリ。
- cgi-src
- CGI(コモンゲートウェイインタフェース)のソースコードが置かれるディレクトリ。
- conf
- WWWサーバの初期値や操作制御を行うためのコンフィギュレーションが置かれるディレクトリ。
- icons
- ディレクトリインデックスなどに使われるアイコンが置かれるディレクトリ。
- logs
- アクセス、エラー、アクセスクライアント種別のログやWWWサーバが動作しているプロセスIDなどが置かれるディレクトリ。このlogsディレクトリは使用時に作成して下さい。
- support
- アクセス制御のための便利なツールが置かれるディレクトリ。
- htdocs
- HTML文書が入るディレクトリ。このhtdocsディレクトリは使用時に作成して下さい。
% make sunosという具合です。こうすればhttpd デーモンとcgi-binのユティリティが作成されるので、次にsupportディレクトリにあるプログラムをコンパイルします。そして、最後にhttpd_1.5-exportをhttpdへシンボリックリンクしておきます。
# cd ..; ln -s httpd_1.5-export httpdhttpd には数々のオプションをコンパイル前にデフォルトととして定義できます。そのファイルは、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の文書を置くディレクトリです。
セキュリティ上の注意
CERT Advisory CA-96.06によると、NCSAおよびApacheのCGIプログラムはセキュリティホールがあると判明しました。これはphfの中で使用されている関数"escape_shell_cmd()(cgi-src/util.c)"が原因なので、phfを削除し、この関数を使用したプログラムも削除して下さい。