leopard付属のapacheでモジュールを書いてみた!

仕事ではWebプログラムをPHPで書く毎日ですが
根っこはどうなっているのか????
という疑問が沸々とわいてきた今日この頃。。。


ということで、、
最近、投稿された素晴らしい記事をもとに
C言語を利用してapacheのモジュールを作ってみます!
さらに、せっかくなのでleopard付属のapacheを利用しようとしたところ
結構苦労しました。。。
自分への備忘録としてつらつら書いていきます!


ApacheModuleでWebアプリケーションをつくろう
http://codezine.jp/a/article/aid/2502.aspx

使い方

  • apxsを利用してひな形を作成

apxs -g -n test

  • 作成されたひな形のMakefileを修正

cd test
vim Makefile


7行目を修正
top_srcdir=/usr -> top_srcdir=/usr/share/httpd
8行目を修正
top_builddir=/usr -> top_builddir=/usr/share/httpd
19行目に追加
CFLAGS=-arch x86_64
APXSLDFLAGS=-arch x86_64

  • makeをし、モジュールをinstall

make
sudo make install

vim /etc/apache2/httpd.conf


最後に追加
LoadModule test_module libexec/apache2/mod_test.so

SetHandler test

システム環境設定->共有->Web共有のチェックをON(最初からついている人は一度Offにしてから)

  • 動作確認

ブラウザでhttp://localhost/testにアクセス


The sample page from mod_test.c
↑こんな文字が表示されれば成功!

leopardではまったこと

自分が無知なだけですが、leopardが他とちょっと違ったことして以下の2点がありました!

  • MakefileのPATHの修正
    ->apacheのインストール先が他と違うせいか修正が必要でした
  • Makefileにパラメータの追加
    ->コンパイル時にライブラリを混同してしまうようで明示的にパラメータを指定しました

参考にしたサイト

MakefileのPATH修正で参考にさせていただきました!
http://t100.iza.ne.jp/blog/entry/173843/
パラメータ指定の参考にさせていただきました!
http://de-co-de.blogspot.com/2008/04/if-you-install-modjk.html


とりあえずtestモジュールの作成までやってみました。
DBとの連携までやってみたいなぁ。。。と思っています