lighttpd + fastcgi + php ++

今、やってるプロジェクトで PHP な BBS (ほぼ名前そのままですが) を立てようってことになって、 Apache + mod_php とかは あまりにフツーだなと思って、lighttpd + fastcgi で組むことにした。

ディストリビューションCentOS 5.1。

Lighttpd

lighttpd は ソースから入れようかとも思ったけど、自分が管理するサーバじゃなので RPM で。


とはいえ、 CentOS には lighttpd のパッケージないので、たまたまあった Fedora 7 のサーバ使って SRPM からビルドすることにした。

で、 一度ビルドして CentOS にインストールしようとしたら『lua がねーよ』と言われて、yum でも見つからなかったので lighttpdlua なしで再ビルド。

rpmbuild --bb --clean --without lua --without ldap /usr/src/redhat/SPECS/lighttpd.spec

ちょっと CFLAGS とかいじって 速いバイナリにしてみた。

php , mysql

yumインスコ。以上

xcache

PHP な BBS をセットアップしてみたら、意外とレスポンス遅かったので、ついカッとなって PHPアクセラレータ入れてみた。


PHPアクセラレータはいろいろあるけど、

  • lighttpd の中の人 がつくってるっぽい ⇒ じゃあ lighttpd との親和性高そう ⇒ FastCGI も当然平気でしょ

ということで xcache (http://xcache.lighttpd.net/) にしてみた。


xcache には RedHat / Fedora 用のバイナリ はないので、 SRPM からビルド。

XcacheRedist – XCache を見たら、
jasonさん(?) が RHEL/CentOS用の XCache 1.2.1 src.rpm を公開しているので、
バージョンが最新 (1.2.2) じゃないけど、 とりあえず Get。


SRPM展開して /usr/src/redhat/SOURCES 見てみたら、ソース版のtar.gz がポツンと置いてあるだけなので、1.2.2 のソースと入れ替えて、ビルドすることにした。
.spec ファイルを書き換えて フツーに rpmbuild。
とりあえず 様子見ってことで 特に configure オプションとか細かくチェックしなかったけど。


xcache の設定は、

あたりを見ていたら、/etc/php.ini でやるものだと思ったけど、

XCache Administration をセットアップしようとしたときに、/etc/php.ini に

  • xcache.admin.user
  • xcache.admin.pass

をいくら書いても有効にならないので、少し悩んでみたら /etc/php.d/ に xcache.ini があるのがわかって解決。


とりあえず、設定ファイルそのままでは xcache が有効にならないので、

  • xcache.size
  • xcache.var_size

を 64 にセット。

あと、いちお デュアルコアなマシンなので

  • xcache.count
  • xcache.var_count

を 2 にセット。


ついでに XCache Administration もセットアップ。

InstallAdministration – XCache見たら、
/usr/share/xcache/admin にありそうな感じだけど無い罠…。


find で探してみたら、/usr/share/doc/xcache-{phpのバージョン}-{xcacheのバージョン}/admin にあった。

そこのディレクトリを lighttpd.conf に alias 登録して 完了。


Apache Bench してみたら 3倍くらいにパフォーマンスが改善されたので、とりあえずOK.