Multiple Rails applications with mod_rails on Ubuntu
April 30, 2008
It works as advertised!
The installer provides exhaustive built-in documentation, describes every step and suggests solution for every unmet requirement like “please install Apache headers with
apt-get install apache2-prefork-dev”. Other guys and we all can learn a lot
from mod_rails about how a perfect installer looks like.
At the end of the installation process it asks to put three configuration lines into apache configuration file although it does not tell how. According to online documentation the requirement is that these lines should be only executed once.
So my solution (in Debian way) is to
- create new passenger.load file in /etc/apache2/mods-available
- create a symbolic link to it
Then I followed the documentation. But I had to make an additional change
to enable the
It was also not clear from the documentation how to set up multiple applications to the same VirtualHost and that
RailsBaseURI is allowed multiple times. So I had to experiment. Here is the result (works on Ubuntu 7.10):
<VirtualHost *:80> ServerAdmin firstname.lastname@example.org ServerName myapps.example.com DocumentRoot /home/passenger RailsBaseURI /app1 RailsBaseURI /app2 <Directory /home/passenger> AllowOverride All </Directory> </VirtualHost>
Then for every additional application you need to
- copy your application to some folder, e.g. /home/myprojects/app2
- set owner for your project folder to www-data:www-data
- create a link from
publicfolder of your rails application to /home/passenger
- add one line to your site configuration
- restart apache
I did not find any way to avoid last two tasks. Hopefully the next version of passenger will offer some sort of wildcard-based mass-RailsBaseURI.
Current mod_proxy advantages:
- no obscure
- SSL is now possible for multiple Rails applications on the same server (VirtualHosts on the same IP address do not work with SSL)
- did not have time yet to configure with capistrano, simply checked in the file `tmp/restart.txt’. Every time I do ‘svn update’, the application is automatically restarted.