lighttpd開発1日目

lighttpd(httpサーバ)のモジュール開発を調べてみました。

参考サイト

環境

必要なソフトは↓なので入れる

  • automake 1.8.x or higher
  • autoconf 2.57 or higher
  • libtool 1.5.x or higher

注意点としてpkg-configを入れないと(ほとんどの環境で普通に入ってるけど)「autoreconf -fi」の実行でコケる(コレで3時間ほど悩みました)

モジュールのソースコードを作る(ここではスケルトンの例)

ソースファイルの追加

$ cd src/
$ cp mod_skeleton.c mod_counter.c
$ vi mod_counter.c
:%s/skeleton/counter/g

作成したモジュールがコンパイルされるように
src/Makefile.amの修正をする

lib_LTLIBRARIES += mod_counter.la
mod_counter_la_SOURCES = mod_counter.c
mod_counter_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_counter_la_LIBADD = $(common_libadd)

試験モジュールのビルド

autoreconf -fi
./configure --enable-maintainer-mode
make

試験モジュールを使うように設定ファイルを変更する

vi tests/lighttpd.conf
#モジュールの追加
server.modules = (
		 ……
		 "mod_counter"
)
#モジュール設定の追加
counter.array = (".html")

以下make installしないで実行する方法のまとめ

環境変数(SRCDIR)の設定

export SRCDIR=/root/lighttpd-1.4.23

設定ファイルを編集する

vi tests/lighttpd.conf
server.document-root         = env.SRCDIR + "/tmp/lighttpd/docroot/" ←docrootの場所
server.errorlog            = env.SRCDIR + "/tmp/lighttpd/logs/lighttpd.error.log" ←ログの場所
#server.bind                = "localhost" ←127.0.0.1以外からも受け付けるようにコメントアウト

関連ディレクトリを作る

mkdir -p tmp/lighttpd/docroot/
mkdir -p tmp/lighttpd/logs/

試験起動

./src/lighttpd -f ./tests/lighttpd.conf -m ./src/.libs/ -D