前置き
名前から推測できるように、Lighttpdは、Light WeightのHTTPサーバーです。通称は、Lighty。バージョンには1.4、1.5の2系統があり、Ver1.5は開発的な色合いが強いです。Ver2も計画されています。Xubuntu PPCのkarmic、2010年9月23日現在、apt-getでインストールできる。Lighttpdは、
$ apt-cache show lighttpd Package: lighttpd Priority: optional Section: universe/web Installed-Size: 1064 Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com> Original-Maintainer: Debian lighttpd maintainers <pkg-lighttpd-maintainers@lists.alioth.debian.org> Architecture: powerpc Version: 1.4.22-1ubuntu4
となります。
インストール
パッケージで提供はされていないため、Ver1.5をインストールするには、ソースからコンパイルする必要があります。といっても簡単でSubversionで、最新のものをチェックアウトして、コンパイルすればいいだけです。HTTPSを有効にしたいので、configureの際にopensslのパスを指定します。
$ svn checkout svn://svn.lighttpd.net/lighttpd/trunk/ lighttpd $ cd lighttpd $ ./autogen.sh $ ./configure --with-openssl=/usr/bin $ make $ sudo make install
開発用のツールが入っていない場合は、./autogen.shの際にエラーになりますので、以下パッケージをインストールしてください。
$ sudo apt-get install pkg-config $ sudo apt-get install libtool $ sudo apt-get install automake
また、Perlの正規表現の互換ライブラリーとgthreadが必要ですので、インストールされていない場合は以下のものをインストールしてください。
$ sudo apt-get install libpcre3-dev $ sudo apt-get install libglib2.0-dev
設定
sudo make installで、lighttpdは、/usr/local/sbin/lighttpdにインストールされます。lighttpdの起動の際に “-f” に続けて設定ファイルを指定すれば起動します。設定ファイルのサンプルは、doc/lighttpd.confにもありますが、Lighttpdのサイトを参考に作ったものを使います。
Lighttpdを実行するユーザーとグループは、Xubuntuに初めからある、www-dataを指定して、使用するポートはserver.portに80番を指定してます。実験的であれば、8080番でもよいでしょう。
server.document-root = "/var/www/" server.port = 80 server.username = "www-data" server.groupname = "www-data" mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png" ) static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc" ) index-file.names = ( "index.html" )
mimetype.assignは、一番つかいそうなものだけを設定しています。doc/lighttpd.confには、たくさんのMIME TYPEの設定がされているのでそれをコピーして使ってもいいと思います。
静的なファイルとしてアクセスさせたくないファイルの拡張子は、static-file.exclude-extensionsを指定します。
リクエストがディレクトリだった場合のデフォルトファイルとしては、index-file.namesにindex.htmlだけ指定しています。
このファイルを、lighttpd.confとして/etc/lighttpd/に保存してください。
起動テスト
もし、server.document-rootで指定した/var/wwwというディレクトリーがなければ以下のようにして作ってください。
$ sudo mkdir /var/www/ $ sudo chown www-data:www-data /var/www/
$ sudo /usr/local/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
この一行で、起動することは可能ですが、開くファイルが何もありませんので、以下の内容を、index.htmlとして、/var/www/に置いてください。ユーザーとグループは、ともにwww-dataにしておいておいてください。
<html> <head> <title>Lighttpd</title> </head> <body> <h1>Lighttpd is working.</h1> </body> </html>
$ ls -l /var/www 合計 4 -rw-r--r-- 1 www-data www-data 100 2010-09-29 07:35 index.html
ブラウザーでhttp://localhost/にアクセスすれば、先ほど作ったファイルが見えるはずです。今回は、ターミナルからでも確認できるように、テキストブラウザーのlynxを使います。lynxが入っていなければ、以下のようにインストールしてください。
$ sudo apt-get install lynx
URLを指定して、lynxを起動すれば、先ほど作った内容が表示されます。
$ lynx http://localhost/
常時設定しておくことはお勧めしませんが、状態確認用のURLが用意されています。先ほどの、lighttpd.confの最後に、+= ( “mod_status” )で、server.modulesにstatusのモジュールを追加し、URLを指定します。+=とすることで、server.modulesに一度に書かずに、つど、追加していくことができます。
#### status module server.modules += ( "mod_status" ) status.status-url = "/server-status" status.config-url = "/server-config"
$ lynx http://localhost/server-status
$ lynx http://localhost/server-config
ログ
Lighttpdは、アクセスログとエラーログの二つのログ機能を持っています。アクセスログは、複数の指定ができますが、エラーログはひとつです。アクセスログは、syslogにログを受け渡すことも可能です。
server.errorlog = "/var/log/lighttpd/error.log" #### accesslog module server.modules += ( "mod_accesslog" ) accesslog.filename = "/var/log/lighttpd/access.log"
アクセスログのフォーマットは、accesslog.formatで定義でき、Apacheでよく定義されているNCSA extended/combined ログ書式は、以下のようになります。
accesslog.format = "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
バーチャルホスト
Lighttpdは、バーチャルホストの機能があります。ひとつのサーバーで複数のサイトを運用するための機能です。バーチャルホストごとにに、ドキュメントのルートやアクセスログを設定できます。
$HTTP["host"] == "test.domain" { server.document-root = "/var/www/test/" accesslog.filename = "/var/log/lighttpd/test/access.log" }
この設定で、http://test.domain/でリクエストしてきたクライアントに対し/var/www/test/以下のものを返します。サイトごとに設定を別ファイルにしたいのであれば、includeでそのファイルを読み込むことも可能です。
include "yoursite.conf"