I've just replaced old fashioned fast_cgi to the Mongrel ruby server. Bellow is
my attempt to startup script for mongrel servers - designed for my slackware box.
Hope it'll help anyone to start up his own mongrel server for Rails
#!/bin/sh
# include config
. /etc/rc.d/mongrel.servers
function start_servers {
echo -n "starting..."
COUNT=${#SERVER[@]}
for ((;COUNT;COUNT--)); do
echo -n "#"
$MONGREL start $PARAMS_START -c ${SERVER[$COUNT]} -p ${PORT[$COUNT]} >/dev/null 2>&1
done
echo "Done"
}
function stop_servers {
echo -n "stopping..."
COUNT=${#SERVER[@]}
for ((;COUNT;COUNT--)); do
echo -n "#"
$MONGREL stop -c ${SERVER[$COUNT]} >/dev/null 2>&1
done
echo "Done"
}
function status_servers {
echo "Mongrel status..."
echo ""
echo " PID PORT PATH "
echo "------------------------------------------------------------------------------"
COUNT=${#SERVER[@]}
for ((;COUNT;COUNT--)); do
if [ -f "${SERVER[$COUNT]}/log/mongrel.pid" ]; then
PID=`cat ${SERVER[$COUNT]}/log/mongrel.pid | awk '{print $1}'`
else
PID="N/A"
fi
printf "%6s %6s %s\n" "$PID" "${PORT[$COUNT]}" "${SERVER[$COUNT]}"
done
echo "Done"
}
case "$1" in
'start')
start_servers
;;
'stop')
stop_servers
;;
'status')
status_servers
;;
*)
start_servers
esac
/etc/rc.d/rc.mongrel
MONGREL="mongrel_rails"
PARAMS_START="-d -a 127.0.0.1"
SERVER[1]="/path_to_rails_app1/"
PORT[1]=8001
SERVER[2]="/path_to_rails_app2/"
PORT[2]=8002
/etc/rc.d/mongrel.servers
and Apache config...
# load proxy modules
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
...
ServerAdmin awesome@administrator
DocumentRoot path_to_public_dir_of_rails_app
ServerName some_server_name
ErrorLog log/radiant-error_log
CustomLog log/radiant-access_log combined
ProxyPass / http://127.0.0.1:8001/
ProxyPassReverse / http://127.0.0.1:8001/