• このエントリーをはてなブックマークに追加

はじめに

借りて4年くらいになるだろう「さくらのレンタルサーバ スタンダード」に本ぶろぐを置いているのですが,ここ半年ほどになって,「503」の出現頻度が顕著になったような気がします.

WordPressの管理系は,Ajax処理によってページ遷移がなく快適ですが,こんなときに503が出たりすると,ときどき困ります.まぁ困るというか,イラッ☆とくる程度ですが,それでも連発されるとさすがに(ry

そんなわけで,ひと月くらい前から,実験的にサーバを移しています.ついでに,Webサーバをlighttpdにして,FastCGIとして動かしてみてます.

以下,lighttpd+FastCGIでWordPressを動作させるための設定について,なんとなく覚えていることをメモしておきます.

あ,ここでのOSはCentOS5としています.

phpの準備

yumによるphpのバージョンがちょっと古めなので,php-5.2.11をソースコードからmakeしてインストールしました.

% get http://jp.php.net/get/php-5.2.11.tar.gz/from/this/mirror
% tar zxvf php-5.2.11.tar.gz
% cd php-5.2.11
% ./configure --enable-fastcgi \
--enable-discard-path \
--enable-force-cgi-redirect \
--enable-mbstring \
--enable-mbregex \
--with-zlib=/usr \
--with-zlib-dir=/usr \
--enable-exif \
--with-gd \
--with-mysql=/usr \
--enable-ftp
% make
% make test
% sudo make install
% php -v
PHP 5.2.11 (cli) (built: Nov 29 2009 00:45:07)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

lighttpdの準備

インストール

% sudo yum install lighttpd

yumによるlighttpdのバージョンは,現時点で1.4.22です.

設定

FastCGIの設定を行います.また,lighttpdでは.htaccessなファイルが使えないため,rewriteなルールも併せて記述しておく必要があります.

設定には次を参考にしました.(これ以外のリンクは失念してしまいました><)

各種値は適宜置き換えてください.

$HTTP["host"] =~ "(blog\.iwa-ya\.net)" {
  server.document-root = "/var/www/vhosts/iwa-ya/blog/www/"
  url.rewrite-once = (
    "^/(wp-.+).*/?"   => "$0",
    "^/(sitemap.xml)" => "$0",
    "^/(xmlrpc.php)"  => "$0",
    "^/(.+)/?$"       => "/index.php/$1",
  )
 
  #url.rewrite-if-not-file = (
  #  "." => "/index.php",
  #)
 
  fastcgi.server = (
    ".php" => (
      "localhost" => (
        "socket"    => "/var/run/lighttpd/blog_iwa-ya_net-php.socket",
        "bin-path"  => "/usr/local/bin/php-cgi",
        "min-procs" => 2,
        "max-procs" => 5,
        "bin-environment" => (
          "PHP_FCGI_CHILDREN"     => "1",
          "PHP_FCGI_MAX_REQUESTS" => "5",
        ),
      )
    )
  )
 
}

最初,php-cgiの存在をまったく知らなかったため,fastcgi.server / .php / bin-pathの値を/usr/local/bin/phpと設定していて,うまく動作してませんでした>< /usr/local/bin/php-cgiとすればOKです.

まぁつまりは,php|php-cgi -vして,(cgi-fcgi)な表記のあるものを指定すればよい,ということですかね.

% php-cgi -v
PHP 5.2.11 (cgi-fcgi) (built: Nov 29 2009 00:45:01)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
%

Newer 4.X versions and the 5.0.X and 5.1.X versions produce a binary which runs both regular and FastCGI versions
5.2.3 introduced two versions again – a php and php-cgi binary. The php-cgi binary is the one you want
PHP | FastCGI –

先に「php fastcgi」とかでググればよかったです><

たぶんおk

たぶんこれで動作するかと思います.もちろんデータベースとかの設定もしておく必要はありますが.

また,ブログの設定状況によっては,lighttpdに追加で設定を行う必要があるかもです.

例えば,パーマリンクをカスタマイズしている場合には,次のエントリにあるような設定が必要だったりします.

なお,データベースのバックアップには,WordPress Dababase Backupプラグインを使っています.メール機能が便利です.

TODO

WordPres本体やプラグインをブラウザからアップデートするためにFTPが使われるのですが,この辺がうまく動作していないようです.phpを--enable-ftpオプションをつけてmakeしなおしたけど,変化なさげです.

vsftpdの設定なのか単なるパーミッションの問題なのかはたまた...もう少し調べてみます.

おわりに

以上,WordPressをlighttpd+FastCGIで動作させるための設定を,覚えている範囲で挙げてみました.

すべて手探りな感じで行っているので,見当違いな箇所が多々ありそうですが...ツッコミいただければ幸いです><