debian etch に apache2.2.11 をソースからインストール
・前準備
他のオープンソースプロジェクトと同様、 ビルド環境構築に libtool と autoconf を使う、ということで、以下のように事前にインストールしておく。
# aptitude install libtool # aptitude install autoconf
また、gcc, make も当然必要。
apr, apr-util が既にインストールされている場合は、ver 1.2 である必要がある。
mod 作るときに必要になる apxs 等を使う場合は Perl5 も必要。
・apr のインストール
apr*1 は、OSなどの環境の違いを吸収するAPI。apr がまだインストールされていない場合は、apache の tarball に含まれている apr をインストールする。 *2
# cd srclib/apr # ./configure # make # make test # make install
prefix を指定しない場合、/usr/local/apr にインストールされる。
・apr-util のインストール
apr-util version 1.2.11 においては、MySQL DBD driver は tarball に含まれてはいるものの、ライセンスの関係でデフォルトでビルドされない。使用したい場合は、--with-mysql オプションを cofigure 時に指定しておく必要がある。
# cd ../apr-util # ./configure --with-apr=/usr/local/apr/ --prefix=/usr/local/apr-util --with-mysql # make # make test # make install
prefix を指定しない場合、/usr/local/apr にインストールされる。apr とは別ディレクトリに入れておきたかったので、ここでは、prefix を指定することにした。apr の場所もオプションで指定している。
ちなみに、make test すると、最後に、
Failed to load driver file apr_dbd_sqlite2.so Failed to load driver file apr_dbd_sqlite3.so
と表示されるが、これはエラーではなく、sqlite がインストールされていないだけ。
・apache の configure
cofigure コマンドを実行するだけだが、オプションに関しては、以下のようになっている。
--prefix=PREFIX
PREFIX を指定しなかった場合のデフォルトは /usr/local/apache2。
デフォルトで問題ないんで、prefix は指定しなくていいだろう。
--enable-MODULE
mod の中でもステータスが "Base" になっているものは指定しなくても最初から入る。Base 以外のものはこのオプションで有効になる。MODULE には mod_ を取り除いたモジュール名を指定する(アンダースコアはダッシュで置換)。*3
--with-apr=/usr/local/apr/
上記でインストールした apr の場所
--with-apr-util=/usr/local/apr-util/
上記でインストールした apr-util の場所
で、以下のように実行。mod は全部入り。
# cd ../../ # ./configure \ --with-apr=/usr/local/apr/ \ --with-apr-util=/usr/local/apr-util/ \ --with-mpm=worker \ --with-mysql=/usr\ --enable-modules=most \ --enable-mods-shared=most \ --enable-logio=static \ --enable-log-config=static \ --enable-dbd=shared \ --enable-so # make # make install
これも prefix 指定していないため、/usr/local/apache2 にインストールされる。
インストールはこれにて終了。
*1:http://ja.wikipedia.org/wiki/Apache_Portable_Runtime
*2:./buildconf の実行は apr のソースを svn から取得した時は必要だが、apache の tarball からインストールする場合は必要ない。
*3:enable-module について、その他の事項をApacheのマニュアルより引用:--enable-module=shared オプションを使って、モジュールを シェアードオブジェクト (DSO) -- 実行時にロードしたり アンロードしたりできる形式 -- としてコンパイルすることもできます。 同様に、--disable-module オプションで Base モジュールを無効化することもできます。 これらのオプションを使っているときに、もし指定したモジュールが存在しなくても configure は警告を上げることなく、単純にオプションを 無視することに気をつけてください。