apxsによるhttpdモジュールのビルド方法

Apache HTTP Server (httpd) に付属するapxsコマンドが必要になったため,情報を整理する。

概要

httpdのモジュールはソースコードからビルドする際にビルド条件を満たしていれば,一緒にビルドしてくれる。ただし,ビルド条件を満たしていなければ,ビルドされない。

httpdのモジュールは.soファイルとなっており,httpd本体のビルド時以外にも,実は後からビルドしてインストールすることができる。

このhttpdのモジュールの追加インストールを実現するのがapxコマンドとなる。apxs
(APache eXtensSion tool) はApache HTTP Serverの拡張モジュールのビルド・インストールツールとなっている。

apxs – APache eXtenSion tool – Apache HTTP Server Version 2.4」に説明が書かれているのでこちらを参考に挙動を整理する。

前提条件

モジュールの追加インストールは動的共有オブジェクト (DSO: Dynamic Shared Object)
のビルドにより実現される。実現に当たって,mod_soLoadModuleを使用する。

そのためapxsの前提条件として,mod_soが有効になっている必要がある。以下のいずれかのコマンドでmod_soが表示されていることを確認しておく。

httpd -l | grep mod_so
apachectl -M | grep so_module

基本的には特別なことがない限り,デフォルトで有効になっている。

mod_soが有効であれば,apxsを使って組み込むことができる。

使用方法

httpdの標準モジュールを追加でインストールする場合が主な用途なため,これを念頭に使用方法を整理する。

以下のようにhttpdのmodules/<module_name>ディレクトリーに移動して,引数にいくつかのオプションそソースファイル (.c) を指定してコマンドを実行する。<module_name>には例えばsslmdなどが入る。

LOCAL=~/.local
cd $LOCAL/src/httpd/modules/<module_name>
apxs -aci -I incdir -L libdir -l lib1 -l lib2 *.c

上記で指定しているオプションの意味は以下の通りだ。

apxsの主なオプション
オプション 説明
DSOコンパイルオプション
-c コンパイル操作を指示する。最初に.cファイルを.oにビルドしてから.soファイルをビルドする。
-I incdir コンパイルコマンドにそのまま渡すヘッダーディレクトリーを指定する。
-L libdir コンパイルコマンドにそのまま渡すライブラリーディレクトリーを指定する。
-l libname コンパイルコマンドにそのまま渡すライブラリー名を指定する。
DOSインストール・設定オプション
-i インストール操作を指示する。1以上のDSOをサーバーのモジュールディレクトリーにインストールする。
-a httpd.conf設定ファイルにLoadModuleを追加する。

この他にもオプションがいろいろあるけれど,基本的にはこの形式でほぼ実行する。

インストールせずに,コンパイルだけする場合,-a-iを外して-cだけ指定すればいい。

オプション

apxsを使ってhttpdのモジュールをビルドする場合,-I-lのオプション指定が重要となる。

これらのオプションは同じディレクトリーの以下のファイルの内容や,ビルドのエラー内容から判断する。

  • modules.mk
  • <module_name>.mak
  • <module_name>.dsp

どのモジュールにどのライブラリーが必要化は,htpdのビルドマニュアル「configure – Configure the source tree – Apache HTTP Server Version 2.4」も参考になるかもしれない。

例えば,以下のライブラリーが対応するモジュールに必要であることが示唆されている。

  • OpenSSL: mod_ssl
  • zlib: mod_deflate
  • GNU DBM, New DBM, Berkeley DB: mod_authn_dbm, mod_rewrite
結論

apxsの使用方法について整理した。

基本的にはhttpdのビルド時にライブラリーを揃えておいて,本体と一緒にモジュールもインストールするのがいい。

やむを得ず,後からインストールする場合にapxsを覚えておくとよいだろう。

apxsによるhttpdモジュールのビルド方法” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です