Panther and Lighttpd + PHP written by B.S.W

今まで、GrapeのiMac(Panther)でApache1.3で運用していたのですが、http周りを見直して、 Webdav&Subversionと拡張しようと思いました。
ただ、メモリが320MBしかないので、Apache2にあげるよりは、Lighttpdにしようということで、MacPortsを使ってインストールし ました。

まずは、MacPortをインストールですが、パッケージでのインストールなので、インストール手順は割愛します。インストールのあと、以下の設定をして おきます。Xcodeも必要なので、インストールしておいてください。

~/.bash_profile

if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi

~/.bashrc

export PATH=/opt/local/bin:/opt/local/sbin/:$PATH
export MANPATH=/opt/local/man:$MANPATH

そのづぎは、X11のVer1.0をインストールしてください。Pantherではそれ以上のバージョンはインストールされないと思います。そうしないと、 MacPortが、依存関係でXFree86をインストールしようとして失敗します。MacPortでは、XFree86をインストールしないのがお勧めだそうです。

$ sudo port install lighttpd

lighttpdの設定は"/opt/local/etc/lighttpd/lighttpd.conf"に設定します。

$ sudo port install php5 +fastcgi +mysql5 +postgresql +sqlite

php5が、/opt/local/bin/phpと/opt/local/bin/php-cgiとしてインストールされます。設定は、"/opt/local/etc/php.ini"に設定します。一応、バージョンの確認をしておきます。

$ php -v
PHP 5.2.6 (cli) (built: Sep 20 2008 03:17:16)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

$ php-cgi -v
PHP 5.2.6 (cgi-fcgi) (built: Sep 20 2008 03:16:28)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

lighttpd.conf の編集

defaultのファイルをコピーして、その内容を修正します。

sudo cp /opt/local/etc/lighttpd/lighttpd.conf.default /opt/local/etc/lighttpd/lighttpd.conf

/opt/local/etc/lighttpd/lighttpd.conf の次の行を編集

server.document-root = "/opt/local/var/www/"
server.errorlog = "/opt/local/var/logs/lighttpd/error_log"
server.pid-file = "/opt/local/var/run/lighttpd/lighttpd.pid"


accesslog.filename = "/opt/local/var/logs/lighttpd/access_log"

設定したファイルが問題なく動くように、パーミッションを変更します。

$ sodo chown www:www /opt/local/var/run/lighttpd/

以下は、OSXでは必須です。でないと、すぐに落ちます。

server.event-handler = "freebsd-kqueue" # 非常に大切

必要に応じて、ユーザーを変更します。rootにしないことをお勧めします。

server.username = "www"
server.groupname = "www"

必要に応じて、ポートを変えます。いま、Apacheがport 80で動いているので、Lighttpdのテスト起動として81にします。

server.port = 81

読み込む、moduleを決めます。PHPを使うので、"mod_fastcgi"を追加で有効にします。

server.modules = (
#                   "mod_rewrite",
#                   "mod_redirect",
#                   "mod_alias",
                    "mod_access",
#                   "mod_cml",
#                   "mod_trigger_b4_dl",
#                   "mod_auth",
                    "mod_status",
#                   "mod_setenv",
                    "mod_fastcgi",
#                   "mod_proxy",
#                   "mod_simple_vhost",
#                   "mod_evhost",
#                   "mod_userdir",
#                   "mod_cgi",
#                   "mod_compress",
#                   "mod_ssi",
#                   "mod_usertrack",
#                   "mod_expire",
#                   "mod_secdownload",
#                   "mod_rrdtool",
                    "mod_accesslog" )

次の行のコメントを外し,socketと,bin-pathを設定します。

fastcgi.server
    = ( ".php" =>
        ( "localhost" =>
            ("socket" => "/opt/local/var/run/lighttpd/php-fastcgi.socket",
             "bin-path" => "/opt/local/bin/php-fcgi"
            )
        )
       )

phi.iniの編集

提供されているファイルをコピーして使います。

$ sudo cp /opt/local/etc/php.ini-dist /opt/local/etc/php.ini

cgiにPATH_INFO/PATH_TRANSLATEDを受け渡すために、以下の設定をします。

cgi.fix_pathinfo = 1

lighttpd&PHPの動作確認

/opt/local/var/www/index.php に

<?php phpinfo(); ?>

とだけ書いて、保存して、lighttpdを起動してください。

$ sudo lighttpd -f /opt/local/etc/lighttpd/lighttpd.conf

以下のアドレスにブラウザーでアクセスして表示されれば機能しています。

http://localhost:81/index.php

デバック時に以下の設定を有効にすると便利です。
http://localhost:81/server-status
   or
http://localhost:81/server-config
で状態がわかります。

#### status module
#status.status-url = "/server-status"
#status.config-url = "/server-config"

lighttpdの起動スクリプトの作成

起動スクリプトを自分でつくります。apachectlをまねしてlighttpdctlというファイルに以下の内容を記述します。

#!/bin/sh
#
# lighttpd Startup script for the lighttpd server

if [ -z "$LIGHTTPD_CONF_PATH" ]; then
LIGHTTPD_CONF_PATH="/opt/local/etc/lighttpd/lighttpd.conf"
fi

prog="lighttpd"
lighttpd="/opt/local/sbin/lighttpd"
RETVAL=0

start() {
echo -n $"Starting $prog: "
$lighttpd -f $LIGHTTPD_CONF_PATH
RETVAL=$?
return $RETVAL
}

stop() {
echo -n $"Stopping $prog: "
killall $prog
RETVAL=$?
return $RETVAL
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
echo
start
*)
echo $"Usage: $0 {start|stop|restart}"
RETVAL=1
esac
echo

起動

$ sudo lighttpctl starrt
Starting lighttpd:

終了

$ sudo lighttpctl stop
Stopping lighttpd:

再起動

$ sudo lighttpctl restart
Stopping lighttpd:
Starting lighttpd:

参考にしたサイト

http://d.hatena.ne.jp/sesejun/20070404/p1
http://redmine.lighttpd.net/wiki/lighttpd/PoweredByLighttpd
http://www.kozupon.com/lighttpd/

Last Update:
$Date: Sun, 03 May 2009 10:58:09 +0900 $