Yesterday I decided to give Phusion Passenger aka mod_rails a try and installed it. It was dead simple to set it up and to deploy rails applications with it. I'm now using it for several “small” applications, for which the whole overhead of setting up a cluster of mongrels and a proxy doesn't seem to be adequate. I'll give you a short summary on how to install mod_rails for apache2 on Debian Etch.
First, install the passenger gem using RubyGems (if you don't have Ruby and RubyGems running on your server, install them first - of course):
gem install passenger
Afterwards, run the passenger apache2 module installer using this command:
It'll check for the required software to install the module, compile it
and copy it to the correct folders. If some software is missing install
aptitude install g++ if
you're missing the GNU C++ Compiler).
Next, create two new files in the
/etc/apache2/mods-available directory. One called
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/mod_passenger.so
… and the other one called
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger–2.0.2 PassengerRuby /usr/bin/ruby1.8
Now you can enable the module using
a2enmod and restart
a2enmod mod_rails apache2ctl restart
That's it! Now simply deploy your rails application, just make sure
apache's document root is pointing to your applications
public folder. Passenger will automatically detect your
rails application and start up processes as needed. You can check it's
status and stats using the
passenger-memory-stats commands. For more details on
mod_rails, take a look at it's documentation.