Apacheのモジュールを作成するときのポイントなどをまとめる。

汎用情報

 Apacheモジュールを作成するのに必要なコマンドはひとつだけ。それは、apxs2 だ。
 これだけで、テンプレートの作成、インストールなどができる。

テンプレート作成

 0から始めるより、テンプレートがあった方がやりやすい。以下のようにして、テンプレートを作成する。

$ apxs2 -g -n test

 これで、カレントディレクトリに test ディレクトリが作成される。

$ ls -l test
-rw-r--r-- 1 user group  938 2008-12-12 14:14 Makefile
-rw-r--r-- 1 user group 2046 2008-12-12 14:14 mod_test.c
-rw-r--r-- 1 user group  148 2008-12-12 14:14 modules.mk

 このままでも特に問題はないが、コンパイルオプションだけ変更する。

コンパイル&インストール

 コンパイルは簡単。make コマンドを実行するだけ。エラーがなければ、次はインストールする。
 インストールの前に、関連ファイルを作成する。モジュールをロードするためのファイルと、モジュールの設定をするためのファイルだ。設定ファイルは、ここで作らなくてもよい。

 ここまで出来たら、Apacheにモジュールを組み込む。

# a2enmod test

 ここまでの手順は、一度やれば不要となる。ソースを変更した場合は、ここ以降を行えばよい。

 モジュールをインストールし、動作確認。

# make install
# make test

 "http://localhost/hoge"へアクセスした結果が表示される。
 "The sample page from mod_test.c"と表示されれば成功。

コーディング

 Apacheモジュールには、特殊な仕掛けがある。
 作成したモジュールはコールバック関数として呼ばれるので、そのための登録が必要となる。
 設定ファイルを読まないのであれば、テンプレートで作られたソースを元に作成していけばよい。

 Apacheモジュールを作るときに、いくつか注意する点がある。

アクセスカウンタ

 GIFイメージでアクセスカウンタを出力するモジュールを作成する。
 アクセスカウンタの場合、Apacheモジュール特有の仕掛けはほとんどない。起動時にのみ呼ばれる関数と、リクエストごとに呼ばれる関数があるので、固定のヘッダは起動時に作成しておくことにする。

 GIF画像で一番ややこしいのは、LZW圧縮*1の部分だ。日本語の説明がほとんどない。
 ここでは、カウンタに特化した処理(と、手抜き)のため、使用色数は16色以内で、バインディングタイプはリトルエンディアン専用とした。
 また、初期化に失敗した場合は、固定のエラー画像を表示するようにした。

filemod_counter.tgz

参考

http://dsas.blog.klab.org/archives/50574774.html
http://dsas.blog.klab.org/archives/50578649.html
http://dsas.blog.klab.org/archives/50596409.html
http://www.tohoho-web.com/wwwgif.htm
http://www.winapi-database.com/special/2001_12_2002_1/index.html
http://www.math.kobe-u.ac.jp/~yamaguti/lzw1.html


*1 2000年ごろに、UNISYSが特許使用料を取ると言い出したため、一時話題となった。日本では、2004年6月20日に特許の期限が切れたので、現在では自由に使用できる。

添付ファイル: filemod_counter.tgz 575件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-06-20 (水) 16:05:12 (2679d)