FastCGI
Managing dispatch.fcgi listeners
========= runit ============
~/Services/rails/rails-{1,2,3,4,5} (there is a model) + ln -s
~/runit/Services/rails/rails-X
========= spinner/spawner.reaper ========
~/Sites/{appname}/script/process/*
======== spawn-fcgi (from lighttpd) =========
Original: Tip: TextDrive and Lighttpd
# create spinner.sh
APP=yourapp
ROOT=$HOME/Sites/$APP
TMP=$ROOT/tmp
ENV=production
RAILS_ENV=$ENV spawn-fcgi -f $ROOT/public/dispatch.fcgi \
-s $TMP/$APP-0.socket -P $TMP/$APP-0.pid
RAILS_ENV=$ENV spawn-fcgi -f $ROOT/public/dispatch.fcgi \
-s $TMP/$APP-1.socket -P $TMP/$APP-1.pid
# in lighttpd.conf
fastcgi.server = ( ".fcgi" =>
( "localhost" =>
( "socket" => "/home/{user}/Sites/{app}/tmp/APP-0.socket" ),
( "socket" => "/home/{user}/Sites/{app}/tmp/APP-1.socket" )))
Use the Rails reaper command to restart your application.
Restarting lighttpd is a very light, very inexpensive because your fastcgi processes are managed independently.
There is also Rakefile for fcgi listeeners restart