CentOS 4.4にlighttpdとFastCGIを用いてPHP5.2.1を動作させる環境を作る。

lighttpd, FastCGIのインストール

CentOS公式のyumリポジトリにはlighttpdが無いため、Dag's repositoryにて公開されているものを利用する。 /etc/yum.repos/dag.repoというファイルを作り、下記のようにDag's repository用の定義を作成する。

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1

リポジトリの定義ファイルを作ったら、yum installでインストールする。

yum install lighttpd lighttpd-fastcgi

lighttpdの動作確認

インストールが正常に完了した場合、設定ファイルは/etc/lighttpd/lighttpd.confに作成されるが、基本的にはデフォルトのままで動作するのでデフォルトの設定で動作確認をする。

# service lighttpd status
lighttpd は停止しています

# service lighttpd start
lighttpd を起動中:                                         [  OK  ]

# service lighttpd status
lighttpd (pid 30197) を実行中...

サーバのURLを入力して下記のようなサンプルページが表示されれば動作確認OK。

次回システムを再起動したときに自動的にlighttpdを起動するように設定しておく。

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

設定を変更して起動するようにする。

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

PHPのコンパイル準備

FastCGIで使えるPHPのrpmが見つからなかったため、ここではPHPをソースからインストールする。 PHPのコンパイルに際してgcc, g++, flex, libxml2-develが必要になるため、あらかじめインストールしておく。

yum install gcc, gcc-c++, flex, libxml2-devel

PHPのコンパイル・インストール

PHPのソースを取得する。

wget http://jp2.php.net/get/php-5.2.1.tar.gz/from/this/mirror

解凍する。

gzip -cd php-5.2.1.tar.gz | tar xvf -
cd php-5.2.1

configureする。 オプションは必要に応じて変える。

./configure \
  --enable-fastcgi \
  --enable-discard-path \
  --enable-force-redirect \
  --enable-mbstring \
  --enable-mbregex \
  --enable-mbstr-enc-trans \
  --enable-iconv \
  --with-zlib=/usr --with-zlib-dir=/usr

configureが終わったら、make、make installでコンパイル・インストールする。 インストールが終わり、php -vでPHPのバージョン情報が出ればOK。

# php -v
PHP 5.2.1 (cgi-fcgi) (built: Mar  1 2007 00:37:44)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

設定ファイルの編集

/etc/lighttpd/lighttpd.confを編集して、mod_fastcgiを有効にする。 まずは、server.modulesのところにてmod_fastcgiがコメントアウトされているので、コメントを外して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" )

つづいてFastCGIの設定のところで、.phpファイルをPHPスクリプトとして扱うように設定する。

fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
                                   "socket" => "/tmp/php-fastcgi.socket",
                                   "bin-path" => "/usr/local/bin/php",
                                   "max-procs" => 2,
                                   "bin-environment" => (
                                     "PHP_FCGI_CHILDREN" => "1",
                                     "PHP_FCGI_MAX_REQUESTS" => "5"
                                   ),
                                 )
                               )
                            )

この設定により、.phpファイルはCGIとして/usr/local/bin/phpを用いて処理されるようになる。 max-procs, PHP_FCGI_CHILDREN, PHP_FCGI_MAX_REQUESTSなどの設定は、必要に応じて変更する。 設定が終わったらlighttpdを再起動する。

service lighttpd restart

PHPの動作確認

phpinfoを使ってPHPが動作するか確認する。 まずはデフォルトで用意されているindex.htmlを待避する。

cd /srv/www/lighttpd/
mv index.html index.html.old

次に、index.phpを作成し、下記の内容を書き込んで保存する。

<?php phpinfo(); ?>

サーバのURLを入力して、下記のようにPHPに関する情報の一覧が表示されれば動作確認OK。

phpinfo

参考資料