libapreq を使ってみる。

apache の mod を作っているが、C 言語初心者には敷居が高く挫折気味。そこで、libapreq を試してみることにした。

libapreq2 は apr, apr-util をベースにした共有ライブラリで、input filter API。意外に難しいこのあたりの取り回しで楽が出来るのでは・・・と期待。一般的には Perl バインディングとして使われているのだと思うが、そのあたりはまったく無視して、C の API として使っていきたいと思う。

libapreq is a shared library with associated modules for manipulating client request data via the Apache API. It also includes language bindings for Perl (Apache::Request and Apache::Cookie). Functionality includes:

* parsing of application/x-www-form-urlencoded data
* parsing of multipart/form-data
* parsing of HTTP cookies

Documentation for the latest release of libapreq2 is located at http://httpd.apache.org/apreq/docs/libapreq2.

Apache HTTP Request Library - The Apache HTTP Server Project


ドキュメントはこちら。
libapreq2-2.13: libapreq2: Main Page


とりあえず、インストールしてみる。

# ./configure \
--with-apache2-apxs=/usr/local/apache2/bin/apxs
...
# make
# make test
...
Can't locate Apache/TestMM.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .).
BEGIN failed--compilation aborted.
...
# make install

perl 関係のテストでエラーが出ているが、そもそも perl 環境はまともに構築されてないので、今回はこのエラーは無視する。

インストールが完了すると、以下のように mod がインストールされている。

$ ls /usr/local/apache2/modules/*apreq*
/usr/local/apache2/modules/mod_apreq2.a
/usr/local/apache2/modules/mod_apreq2.so
/usr/local/apache2/modules/mod_apreq2.la

apreq2 のインストールプロセスでは httpd.conf へのモジュール追加をやってくれないので、手で以下のようにモジュールを追加する。

# vi /usr/local/apache2/conf/httpd.conf
LoadModule apreq_module    modules/mod_apreq2.so