apache のモジュールを作る

apache のモジュールを作るのに参考になりそうなページの覚書。
aptitude - プログラマのチラシの裏
Apacheモジュール開発記 その0 - 時間こそ最も解決するべき問題なり

上記にかかれた手順以外に私の環境で必要だったのが、

# cat /etc/hosts
..
192.168.1.10	vaio.localdomain	vaio
..

(mod名).conf, (mod名).load は、

/etc/apache2/mods-available/
/etc/apache2/mods-enabled/

の両方に必要。(片方はシンボリックリンクでいい)mods-availableに実体ファイルを置いて、mods-enabled にそのファイルのシンボリックリンクを置く。*1

apxs2 にてデプロイした mod の動作確認URLは、

http://localhost/(mod名)/

というように、末尾に "/" が必要。
・・・これが一番はまった。(とほほ)
※ mod_dir が入ってれば勝手に補完されるはず。(多分)


apache2.2 より追加された、mod_dbd を使用すれば思ってるものが出来そうだ。たぶん。
漢(オトコ)のコンピュータ道: mod_dbd入門編


追記(2009-1-28):
mod そのものについては、
MODULE.JP - Apache & Perl Module Information.
http://module.jp/dist/InternetWeek2005-T16.pdf
がとても参考になった。

追記(2009-2-7):
コメント頂いて(ありがとうございます)、ちょっとぐぐってみたら、

各モジュールの設定ファイルは、 /etc/apache2/mods-available/ 配下にありますが、その設定ファイルを有効にするには、/etc/apache2/mods-enabled/ 配下にシンボリックリンクを作成する必要があります。

http://oshiete.nikkeibp.co.jp/kotaeru.php3?q=2347499

という記載なんかをみつけた。どうもそういうものらしい。シンボリックリンクの作成については、ln 使って作ればいいが、一応、a2enmod、a2dismod というコマンドが用意されている。以下のような動作をする。

debian:/etc/apache2/mods-enabled# ls cgi*   
cgid.conf  cgid.load
debian:/etc/apache2/mods-enabled# a2dismod cgid
Module cgid disabled; run /etc/init.d/apache2 force-reload to fully disable.
debian:/etc/apache2/mods-enabled# ls cgi*
ls: cgi*: No such file or directory
debian:/etc/apache2/mods-enabled# a2enmod cgid
Module cgid installed; run /etc/init.d/apache2 force-reload to enable.
debian:/etc/apache2/mods-enabled# ls cgi*
cgid.conf  cgid.load

a2enmod のソースの一部だけ引用。多少のチェックはするものの、動作としては、.conf と .load を ln -sf するだけのものだ。

    52	for i in conf load; do 
    53	        if [ -e $SYSCONFDIR/mods-available/$MODNAME.$i -a ! -e $SYSCONFDIR/mods-enabled/$MODNAME.$i ]; then
    54	        cd $SYSCONFDIR/mods-enabled;
    55	        ln -sf ../mods-available/$MODNAME.$i $MODNAME.$i;
    56	        fi
    57	done
    58	
    59	echo "Module $MODNAME installed; run /etc/init.d/apache2 force-reload to enable."

*1:コメントを頂いて修正