apache 拡張モジュールの作成

apache 拡張モジュールの作成方法をまとめておきます。
ubuntu 10.10 上で確認。

  • httpd インストール
./configure --prefix=/home/yam/work/apache2 --enable-so
make
make install
    • # --enable-so しないと、のちのち apache2/build/libtool が無いよって怒られるかも
      • 拡張モジュールのビルドには libtool が必要なのです
  • 拡張モジュールのテンプレートを作成
    • 拡張モジュールの名前を仮に hello とする。
/home/yam/work/apache2/bin/apxs -g -n hello
cd hello
make
make install
    • #-g がテンプレート出力を指示
    • #-n でモジュール名指定
  • httpd.conf 修正
    • 以下を設定ファイルに追加。
LoadModule hello_module modules/mod_hello.so
<Location "/hello">
   SetHandler hello
 </Location>
sudo /home/yam/work/apache2/bin/apachectl stop
sudo /home/yam/work/apache2/bin/apachectl start
  • ブラウザからアクセス。
    • http://[IP アドレス]/hello にアクセス。
    • 「The sample page from mod_hello.c」という文言が出力されれば OK。

以上。あとは mod_hello.c を修正してやりたいこと実現すべし。

  • 補足。apxs コマンドの help 見たら、以下のコマンドで、拡張モジュールのビルド、インストール、設定ファイルへの追記まで行えるらしい。
/home/yam/work/apache2/bin/apxs -c -i -a mod_hello.c 
    • #-c がビルド指示
    • #-i がインストール指示
    • #-a が設定ファイルへの追記指示
  • Location は手動で書く必要あるみたいだけど、LoadModule の部分はこれで自動化可能。