lighttpd 資料一覧

lighttpdインストール手順

2007/11/5更新

対応バージョン: 1.4.18

公式サイト

準備

あらかじめインストールしておくもの

libpcre

導入OS

Fedora Core 6

インストール

配布ファイル展開

% tar jxvf lighttpd-1.4.18.tar.bz2
% cd lighttpd-1.4.18

make,インストール

% ./configure <オプション>
% make
% su
# make install

デフォルトで以下のモジュール/機能が有効になる。

<モジュール>
mod_access
mod_accesslog
mod_alias
mod_auth
mod_cgi
mod_compress
mod_dirlisting
mod_evhost
mod_expire
mod_extforward
mod_fastcgi
mod_flv_streaming
mod_indexfiles
mod_proxy
mod_rrdtool
mod_scgi
mod_secdownload
mod_setenv
mod_simple_vhost
mod_staticfile
mod_status
mod_userdir
mod_usertrack
mod_webdav
<機能>
auth-crypt
compress-deflate
compress-gzip
large-files
network-ipv6

また、以下のモジュール/機能がデフォルトで無効になる。

<モジュール>
mod_cml
mod_magnet
mod_mysql_vhost
mod_redirect
mod_rewrite
mod_ssi
mod_trigger_b4_dl
<機能>
auth-ldap
network-openssl
regex-conditionals
stat-cache-fam
storage-gdbm
storage-memcache
webdav-locks
webdav-properties

インストール物 (man,infoは除く)

lighttpd本体
/usr/local/sbin/lighttpd-angel
/usr/local/sbin/lighttpd

/usr/local/bin/spawn-fcgi
モジュール
/usr/local/lib/mod_*

設定ファイル設置

# cp doc/lighttpd.conf /usr/local/etc

各種設定

/usr/local/etc/lighttpd.confにて基本的な設定を行う。以下、主な設定項目について説明する。

モジュール有効化

有効化したいモジュールのコメントを外す。また必要があれば追加する。使用可能なモジュールは/usr/local/lib/mod_*としてインストールされている。

server.modules = (
#                 "mod_rewrite",
#                 "mod_redirect",
                   :
                 )

以下のモジュールは有効化すべきである。

mod_access
mod_accesslog

また、以下のモジュールはデフォルトで有効になる。

mod_dirlisting
mod_indexfiles
mod_staticfile

尚、モジュールには記述順序があるので、以下の点に注意して記述する。

最初にmod_rewrite、mod_redirect、mod_accessといった前処理モジュールを記述する。
次にmod_authを記述する。これは以降のモジュールに影響する。
続いてmod_fastcgi、mod_cgi、mod_scgi、mod_proxyのような外部ハンドラを記述する。
最後にmod_accesslogのような後処理モジュールを記述する。

ドキュメントルート

通常のドキュメントルートを設定する。バーチャルホストの場合はserver.virtual-*で設定する。

server.document-root = "/srv/www/htdocs/"

エラーログ

エラーログの出力先を指定する。

server.errorlog = "/var/log/lighttpd/error.log"

インデックスファイル

リクエストが「/」で終わっている場合にインデックスファイルとして検索するファイルを指定する。

index-file.names = ( "index.php", "index.html",
                     "index.htm", "default.htm" )

MIMEタイプマッピング

リクエストされたファイルの拡張子とMIMEタイプのマッピングを行う。

最終行はデフォルトのMIMEタイプである。

mimetype.assign = (
  ".pdf" => "application/pdf",
  ".sig" => "application/pgp-signature",
  :
  ""     => "application/octet-stream",

アクセスログ

エラーログの出力先を指定する。

accesslog.filename = "/var/log/lighttpd/access.log"

アクセス拒否ファイル指定

アクセスを拒否するファイルを指定する。ファイル名は一部でよい。

url.access-deny = ( "~", ".inc" )

静的ファイルの対象外となるファイルの指定

PHPやPerl、Rubyなど動的に動作するファイルを指定する。

これらはmod_fastcgi/mod_cgi配下で動作する。

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

サーバの待ち受けポート

デフォルトは80。

#server.port = 81

サーバのバインドホスト(ネットワークインタフェース)

デフォルトは全てのインタフェース。

#server.bind = "127.0.0.1"

バーチャルホスト

以下の3つのパラメータの組み合わせで設定する。

デフォルトはバーチャルホスト未設定。

#simple-vhost.server-root   = "/srv/www/vhosts/"
#simple-vhost.default-host  = "www.example.org"
#simple-vhost.document-root = "/htdocs/"

ドキュメントルートにchroot()するかどうか

デフォルトはchroot()しない。この設定はデーモン実行ユーザがrootの場合のみ有効になる。

#server.chroot = "/"

デーモン実行ユーザ/グループ

デフォルトはデーモンを実行した時のユーザ/グループ。

#server.username  = "wwwrun"
#server.groupname = "wwwrun"

デーモン実行PID

#server.pid-file = "/var/run/lighttpd.pid"

ディレクトリリスト表示可否

デフォルトは拒否。サーバからはステータスコード404が返る。

#dir-listing.activate = "enable"

各モジュール毎設定

ここでは割愛する。

動作確認

lighttpd.confで指定したログファイルの格納ディレクトリをあらかじめ作成しておく。ファイルは作成不要。

デーモンを起動する。

# /usr/local/sbin/lighttpd -f /usr/local/etc/lighttpd.conf

待ち受けポートがLISTENになっているか確認する。

# netstat -nat|egrep '(Proto|80)'
Proto Recv-Q Send-Q Local Address   Foreign Address  State      
tcp        0      0 xx.xx.xx.xx:80  0.0.0.0:*        LISTEN      

WebブラウザでlocalhostにアクセスできればOKである。

initスクリプト設置

スクリプト作成

/etc/rc.d/init.d/lighttpdを作成する。

#!/bin/bash
#
# lighttpd
#
# chkconfig: 345 80 20
# description: lighttpd server

TARGET=lighttpd
DST_PREFIX=/usr/local
DST_BIN=${DST_PREFIX}/sbin/${TARGET}
DST_CONF=${DST_PREFIX}/etc/${TARGET}.conf
DST_PIDF=/var/run/${TARGET}.pid

[ -f ${DST_BIN} ] || exit 0
[ -f ${DST_CONF} ] || exit 0

start()
{
  echo -n "Starting ${TARGET}: "
  ${DST_BIN} -f ${DST_CONF}
  echo
}

stop()
{
  echo -n "Shutting down ${TARGET}: "
  kill `cat ${DST_PIDF}`
  echo
}

restart()
{
  stop
  start
}

case "$1" in
  start)
    start
    ;;

  stop)
    stop
    ;;

  restart)
    restart
    ;;

  *)
    echo "Usage: `basename $0` {start|stop|restart}" >&2
    exit 1
esac

exit 0

サービス登録

# chkconfig --add lighttpd
# chkconfig --list lighttpd
lighttpd  0:off  1:off  2:off  3:on  4:on  5:on  6:off