rails + lighttpd + fastcgi の環境で、fastcgi の起動・停止・再起動を capistrano に任せる

rails + lighttpd + fastcgi の環境で、fastcgi の起動・停止・再起動を capistrano に任せる作業に、少しハマったので作業メモを残す。

deploy.rb の内容や、他の詳しい解説は他のウェブ上資料に譲る。

app_name/script/spin

./script/process/spawner fcgi -p 11000 -i 3 -r 5

実行権限を忘れずに。

app_name/config/lighttpd.conf

fastcgi.server      = ( ".fcgi" => (
    "localhost-11000" => ( "host" => "127.0.0.1", "port" => 11000 ),
    "localhost-11001" => ( "host" => "127.0.0.1", "port" => 11001 ),
    "localhost-11002" => ( "host" => "127.0.0.1", "port" => 11002 ),
    "localhost-11003" => ( "host" => "127.0.0.1", "port" => 11003 ),
    "localhost-11004" => ( "host" => "127.0.0.1", "port" => 11004 ),
) )

上記を追加する。


以上で、初期で準備される deploy.rb に特別な task を何も追加しなくとも、cap コマンドのオプション deploy:start deploy:stop deploy:restart が動く。

ただし、spawner や reaper は、fastcgi の面倒を見てくれるが lighttpd の面倒は見てくれない。
lighttpd の面倒を cap コマンドで見る場合は、spin に lighttpd -f ./config/lighttpd.conf 等の起動コマンドを追加し、deploy:stop の task として killall lighttpd 等を追加する必要がある。