コンパイルとインストール

この文書で扱う範囲は、Unix や Unix に類似したシステムでの Apache のコンパイルとインストールです。 Windows における コンパイルとインストールに関しては「Microsoft Windows で Apache を使う」をご覧下さい。 その他のプラットホームに関しては「プラットホーム」をご覧下さい。

Apache 2.0 の設定とインストールの環境は、Apache 1.3 とは 完全に異なるものになりました。簡単にインストールできるように、 Apache 1.3 では特製スクリプトを使っていました。 Apache 2.0 では他の Open Source プロジェクトと同様の環境に するために libtool と autoconf を使うようになっています。


概要 (せっかちな人向け)

ダウンロード $ lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz
展開 $ gzip -d httpd-2_0_NN.tar.gz
$ tar xvf httpd-2_0_NN.tar
設定 $ ./configure --prefix=PREFIX
コンパイル $ make
インストール $ make install
カスタマイズ $ vi PREFIX/conf/httpd.conf
テスト $ PREFIX/bin/apachectl start

NN は最新のマイナーバージョンナンバーに、 PREFIX はインストールするサーバでのファイルシステムのパスに、 置き換えてください。PREFIX を指定しなかった場合は、 デフォルトの /usr/local/apache2 になります。

Apache HTTPD のコンパイルとインストールに必要なものをはじめとして、 編集とインストールプロセスでのそれぞれの項は 次に詳しく記述されています。

必要なもの

Apache のビルドには次のものが必要です:

ダウンロード

Apache は Apache Software Foundation ダウンロードサイト近くの ミラーサイトからダウンロードできます。

alpha で終わるバージョン番号は、 動くか動かないかよく分からない、 早期のプリテストバージョンであることを示しています。 beta で終わるバージョンはそれよりは信頼性のある リリースですが、テストとバグフィックスを重ねる段階のものです。 Apache HTTP サーバの入手可能な中で最高の製品リリースを ダウンロードしたいのであれば、ファイル名に alphabeta も付かない最新のバージョンを選んでください。

ダウンロード後、特にミラーサイトを使った場合は、 ダウンロードしたものが Apache HTTP サーバの完全で改竄されていないバージョンであることを 検証することが重要です。これはダウンロードした tarball の PGP 署名を テストすることによって検証します。 これは二つの段階があります。 まず KEYS ファイルを Apache 配布サイト からダウンロードしてください。(KEYS ファイル自体が 改竄されていないことを確実にするために、以前の Apache 配布から取り出したファイルを使ったり、 公開鍵サーバから鍵を取り込むのもいいでしょう。) 自分の個人キーホルダーに鍵を取り込むには、 次のコマンド (pgp のバージョンに依存) を使います:

$ pgp < KEYS
または、
$ gpg --import KEYS

次のステップでは、tarball を PGP 署名でテストします。 PGP 署名は必ず メインの Apache ウェブサイトから取得してください。 署名ファイルの名前は、ソースファイルの tarball と同じ名前に .asc を付加したものになっています。 以下のコマンド (やっぱり pgp のバージョンに依存) のどれか一つで、 配布ファイルをチェックすることができます:

$ pgp httpd-2_0_NN.tar.gz.asc
または、
$ gpg --verify httpd-2_0_NN.tar.gz.asc
すると、こんなメッセージを受けるはずです。

Good signature from user "Martin Kraemer <martin@apache.org>".

自分のキーホルダーに格納されている信頼関係が原因で、 "鍵とその鍵の署名者が検証できなかった" という旨のメッセージを同時に受けるかもしれません。 しかし、KEYS ファイルの信憑性を受け入れるならば問題ではありません。

展開

Apache HTTPD の tarball からソースファイルを展開して取り出すとは、 単なる圧縮の解除と tar の展開です:

$ gzip -d httpd-2_0_NN.tar.gz
$ tar xvf httpd-2_0_NN.tar

配布用のソースコードがある現在いるディレクトリの下に、 新しいディレクトリが作られます。 サーバをコンパイルする段階に進む前に、そのディレクトリに cd で移動してください。

ソースツリーを設定する

次のステップは、あなたのプラットホームと 個人的な要求に合うように Apache ソースツリーを設定することです。 これは配布ディレクトリのルートディレクトリにある、 configure スクリプトで行ないます。 (Apache ソースツリーの CVS 版をダウンロードした開発者は、次のステップに進む前に autoconflibtool をインストールして buildconf を実行する必要があるでしょう。 公式リリースではこの作業は必要ありません。)

デフォルトオプションを使ってソースツリーを全て設定する のであれば、単純に ./configure とタイプしてください。 デフォルトオプションを変更できるように、configure には様々な変数やコマンドラインオプションが用意されています。 一般的に、環境変数が ./configure の前に設置されて、 他のオプションはその後に設置されます。 ここで最も重要なオプションは Apache をどこにインストールするかを決める location prefix です。 なぜなら、Apache が正しく動作するためには この場所用に設定されていないといけないからです。 しかし、お好みにより利用できるオプションはもっと沢山あります。

ちょっとどんなことができるかを見せましょう。 ここで典型的な例として、/sw/pkg/apache というインストールツリーで コンパイラとフラグを指定して、さらに二つの追加モジュール mod_rewrite と mod_speling を後で DSO メカニズムでロードするように コンパイルしてみます:

$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-rewrite=shared \
--enable-speling=shared

configure を実行したら、システムの機能を テストしたり、後でサーバをコンパイルするために必要な Makefile を生成したりするのに数分間かかるでしょう。

Apache の全ての設定フラグを見る最も簡単な方法は、 ./configure --help を実行する方法です。 引数や環境変数に関する簡単な記述が出力されます。

環境変数

autoconf でのビルドでは幾つかの環境変数を使ってビルド環境を 設定します。一般的に、これらの変数で Apache をビルドする際の 方法が変わったりしますが、できあがるサーバの機能には影響ありません。 これらの変数は configure を呼び出す直前の環境中に 置くことができますが、通常は上に示した例のように configure のコマンドラインでもっと簡単に指定できます。

CC=...
C コンパイラのコマンド名。
CPPFLAGS=...
その他の C プリプロセッサやコンパイラのオプション。
CFLAGS=...
C コンパイラのデバッグ・最適化オプション。
LDFLAGS=...
その他のリンカに渡されるオプション。
LIBS=...
リンカに渡すライブラリの位置情報 ("-L"と"-l"オプション) 。
INCLUDES=...
ヘッダファイルの探索ディレクトリ ("-Idir") 。
TARGET=... [デフォルト値:apache]
ビルドする実行ファイルの名前。
NOTEST_CPPFLAGS=...
NOTEST_CFLAGS=...
NOTEST_LDFLAGS=...
NOTEST_LIBS=...
これらの変数は"NOTEST でない版"のものと同じ機能を 持っています。しかし、これらの変数は autoconf がテストを行った後のビルドプロセスにおいてのみ、適用されます。 これを使うと、テスト中に問題を起すけれども 最終的には必要になるフラグを 含めることができるようになります。
SHLIB_PATH=...
コンパイラとリンカに渡す、共有ライブラリへのパスを指定する オプション。

autoconf 出力オプション

--help
使用可能な全オプションなど使い方をプリントします。 実際に設定はされません。
--quiet
"cheking..." といったメッセージがプリントされないように します。
--verbose
検査される全ファイル名を含め、設定プロセス中に 情報をたくさんプリントします。

パス名

Apache をインストールするパス名を設定するには、 現在二通りの方法があります。まず一つ目は、 ディレクトリを指定して、その下にデフォルトの配置で Apache のインストールを行う方法です。

--prefix=PREFIX [デフォルト値: /usr/local/apache2]
Apache のファイル群がインストールされるディレクトリを 指定します。

アーキテクチャに依存したファイルを、 異なるディレクトリに配置するようにもできます。

--exec-prefix=EPREFIX [デフォルト値:PREFIX]
アーキテクチャ依存のファイルを配置すべき ディレクトリを指定します。

二つ目の方法は、もっと柔軟にインストールパスの配置を 設定する方法で、config.layout ファイルを 使います。この方法を使うことによって、 Apache のインストール中に、それぞれのファイルのための配置を 個々に指定できるようになります。config.layout ファイルには設定例が幾つか含まれていますし、 お好みの設定を次の例に従って作り出すこともできます。 このファイル中では、異なる配置は <Layout FOO>...</Layout> セクションでグループ化され、 FOO といった名前で参照されます。

--enable-layout=LAYOUT
インストールパスを指定するため、 config.layout ファイル中での、 指定された名前のレイアウトを使用します。

現在は --enable-layout--prefix オプションをミックスすることはできません。 また configure コマンドライン中で、 詳しく個々のパス名を指定することもできません。 基本的なインストール作業を行いたいだけならば、単純に --prefix オプションをそのまま使うことができます。 インストールをカスタマイズしたいのであれば、 config.layout ファイルを編集して --enable-layout オプションを使う必要が あるでしょう。

モジュール

Apache はモジュール化されたサーバです。 ごくごく基本的な機能だけが、コアサーバに含まれています。 拡張機能は様々なモジュールの形で提供されます。 設定プロセス中では、どんなモジュールをサーバで使うように コンパイルするか選ばなければなりません。このマニュアルにあるモジュールの一覧を 参照できます。 "Base" ステータスの モジュールはデフォルトで含まれますし、 使いたくないのであれば、わざと無効にしなければ なりません。他のステータスのモジュールは、 使いたければ有効にしなければなりません。

Apache と一緒にコンパイルして使うようにするには、 二通りの方法があります。一つめはモジュールを スタティックコンパイルする方法です。この場合は、 Apache のバイナリに恒久的に組み込まれることになります。 これの代わりに、もしオペレーティングシステムが動的共有 ライブラリ (DSO) (訳注: Dynamic Shared Object) を 提供していて autoconf がそれを認識できる 場合は、モジュールをダイナミックコンパイルする方法があります。 DSO モジュールは Apache のバイナリとは別に 保存され、mod_so で提供される 実行時設定ディレクティブを使って 組み込んだり取り外したりできます。 動的モジュールを実際に一つもコンパイルすることなく サーバが DSO をロードできるようにするには、 --enable-so と明示的にすることができます。

--enable-MODULE[=shared]
MODULE モジュールをコンパイルして インクルードします。識別子 MODULE は モジュール文書に記載されているモジュール 識別子から "_module" を取り除いた文字列です。 DSO としてモジュールをコンパイルする場合は、 =shared オプションを付加してください。
--disable-MODULE
通常はコンパイルされてインクルードされる MODULE モジュールを除去します。
--enable-modules=MODULE-LIST
スペース区切りの MODULE-LIST に列挙されたモジュールをコンパイルして インクルードします。
--enable-mods-shared=MODULE-LIST
スペース区切りの MODULE-LIST を ダイナミックロード (DSO) できるモジュールとして コンパイルとインクルードをします。

--enable-modules--enable-mods-shared オプションに使う MODULE-LIST は、普通はスペース区切りの モジュール識別子のリストです。 例えば mod_dav と mod_info を有効にする場合は、 次のどちらかが使えます。

./configure --enable-dav --enable-info

または、同等の

./configure --enable-modules="dav info"

これに加えて、特別なキーワード allmost を使って、 一度に全てあるいはほとんどのモジュールを加えることができます。 その後で好きなモジュールを --disable-MODULE オプションを使って取り除くことができます。 例えば、mod_info を除く全てのモジュールを DSO モジュールとして 組み込む場合は、次のようにします。

./configure --enable-mods-shared=all --disable-info

標準的なモジュールに加えて、Apache 2.0 では Multi-Processing Modules (MPM) を選択してインクルードします。ただ一つだけの MPM をコンパイルのプロセスで含める必要があります。 個々のプラットホーム向けのデフォルトの MPM は MPM 文書に一覧がありますが、 configure コマンドで置き換えることができます。

--with-mpm=NAME
Choose the mpm NAME.

Suexec

Apache には suexec と呼ばれる 補助プログラムがあります。 このプログラムはユーザの CGI プログラムを隔離するために 使用することができます。しかしながら、suexec を適切に設定しなければ、 セキュリティ上致命的な問題をかかえる場合があります。 そのため、この機能を実装する前に suexec 文書をよく読んで一考しておきましょう。

ビルド

これで Apache の様々なパーツをビルドすることができます。 次のコマンドを単純に実行するだけです:

$ make

基本的な設定をするのに、Pentium III/Linux 2.2 のシステムでおおよそ 3 分程度かかりますが、 あらかじめご了承下さい。 また、時間はハードウェアや有効にしたモジュールの数に 大きく依存するでしょう。

インストール

さて、設定したインストール PREFIX (前述の --prefix オプションを参照) 以下にパッケージをインストールする段階になりました。 次のコマンドを実行してください:

$ make install

アップグレードする場合は、インストールでは設定ファイルや ドキュメントファイルの上書きは行いません。

カスタマイズ

次に PREFIX/conf/ 以下にある 設定ファイルを編集して、 Apache HTTP サーバをカスタマイズします。

$ vi PREFIX/conf/httpd.conf

設定ディレクティブの 完全なリファレンスが載っていますので、 docs/manual/http://httpd.apache.org/docs/ にある Apache マニュアルをざっと見てください。

テスト

次のコマンドを実行して Apache HTTP サーバを開始できます:

$ PREFIX/bin/apachectl start

URL http://localhost/ を通して最初のドキュメントに対する リクエストを発行する事ができるはずです。これで見える ウェブページは DocumentRoot 以下に置かれたもので、通常は PREFIX/htdocs/ でしょう。 サーバを再び停止するには、 次のコマンドを実行します:

$ PREFIX/bin/apachectl stop