はじめてのApacheモジュール開発

C言語をなが〜い間書いてなかったので、最近ちょっと再勉強しはじめました。
で、手始めにおもしろそうなのでなんか作ってみっか。と思ってはじめたのがこれ。

Apacheモジュール プログラミングガイド (Advanced Server‐side programmingシリーズ)

Apacheモジュール プログラミングガイド (Advanced Server‐side programmingシリーズ)

え?Apacheのモジュールって簡単に作れるの?って、びっくりして軽くはじめてみました。

内容は、Apacheのモジュールを開発する方法なのですが、対象のバージョンとしては、

 Apache1.3系に関して大部分
 Apache2.0系を対象に少し
 Apache2.2系に関しては記述されていない(そりゃ、ずっと前に発売されてるしね。) 


とりあえず、ちょこちょこっとやってみる。これが簡単にできてしまうんですね。
でも、あんまCの勉強にはならない気が・・・
 ・メモリに関しては、Apacheのリソースプールを利用すると勝手に解放してくれます
 ・ファイル管理も同様に勝手に解放してくれます
 ・文字列処理もURLエスケーピングや正規表現などなどの豊富なAPIあり
 ・汎用データ構造として、伸展可能なリストなどなどが用意されている
え。Javaっすか?って思うほど。Cの醍醐味であるメモリの部分がやらなくていいとはね。
まァ、このブログの「楽にプログラミング」って目的にはそってるけどさァ

ま、とはいえ、構文はC言語だし、ごりごりと構造体を使うことも可能だからよしとするか。

とりあえず、雛型モジュール作り方のまとめ

1.Apacheをビルドします(versionはなんでもよし)
./configure --enable-module=so ←ダイナミックリンクでモジュールを作成するため
make
make install

2.起動/動作確認
  apachectl -k start
ブラウザなり、コマンドラインなりでhttp://localhostを確認

3.apxsで雛型作成
./apxs -g -n testworld
Creating [DIR] testworld
Creating [FILE] testworld/Makefile  
Creating [FILE] testworld/modules.mk  
Creating [FILE] testworld/mod_testworld.c 
Creating [FILE] testworld/.deps      

4.ダイナミックリンク(スタティックリンクは別のやり方です。)
make
make install

5.httpd.confにモジュール読み込み設定

LoadModule testworld_module xxx/mod_testmodule.so


SetHandler helloworld

6.アクセス確認
http://localhost/hello
画面にメッセージ「」が表示されればOK