— Tagged with: , , , — Written by

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:

passenger-install-apache2-module

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 it using aptitude (ie. 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 mod_rails.load:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/mod_passenger.so

… and the other one called mod_rails.conf:

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 apache.

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-status and passenger-memory-stats commands. For more details on mod_rails, take a look at it's documentation.