Here is how to install a Rails application out of a subdirectory (rather than as a subdomain) with the Apache web server(Apache2). In this example I'm going to use my own blog which is a Wordpress installation and serve a Rails application from the subdirectory "reader". Note, I'm not going to keep my Rails application in the document root of my Wordpress Blog, which is a PHP application and therefore anyone could browse the ruby source code :(. I'll keep it elsewhere on the filesystem and tell Apache about the location in the VirtualHost file.
You can visit the application by going to http://seanbehan.com/reader. The application just parses a bunch of RSS feeds and displays them. It uses the Feedzirra library, which I've also written about http://seanbehan.com/ruby-on-rails/installing-feedzirra-rss-parser-on-ubuntu-8/.
I'm using Phussion Passenger and Ruby Enterprise Edition from the folks at Mod Rails. Installing both Phussion Passenger and Ruby Enterprise Edition is simple and a very well documented process. However, you'll need to download and compile them from source. If you install Ruby Enterprise Edition (REE) it comes w/ Passenger so you won't need to download it separately. I recommend going with REE. http://www.rubyenterpriseedition.com/download.html
wget http://rubyforge.org/frs/download.php/68719/ruby-enterprise-1.8.7-2010.01.tar.gz tar xzvf ruby-enterprise-X.X.X.tar.gz ./ruby-enterprise-X.X.X/installerWhen you run the installer you'll be prompted for an installation location. Just hit enter to install in the default location. Follow the instructions from there and remember to copy/paste any code that they give you.
Official Instructions on installation for Passenger on its own are available here http://www.modrails.com/install.html I've written about setting up an entire box w/ Passenger here http://seanbehan.com/ruby-on-rails/new-ubuntu-slice-apache-mysql-php-ruby-on-rails-git-and/ If you already have Passenger installed and want to use REE just download and install REE and it'll recompile Passenger with REE support if you follow the instructions.
*** If you install REE you'll need to either link or reinstall all your gems. I linked the REE gem with the one in /usr/bin so that I can run gem install
ln -s /opt/ruby-enterprise-X.X.X/bin/gem /usr/bin/gem
<VirtualHost *> # Normal virtual host info ServerName seanbehan.com ServerAlias *.seanbehan.com DocumentRoot /var/www/seanbehan.com/wordpressThe "Location" directive tells apache to forward requests starting with /reader to the directory /var/www/seanbehan.com/reader/public which is the location of our Rails app. However, we need to add the PassengerAppRoot assignment so that it knows where the actual application lives.
Rails info goes here
Alias /reader /var/www/seanbehan.com/reader/public <Location /reader> PassengerAppRoot /var/www/seanbehan.com/reader RailsEnv production </Location> </VirtualHost>
map.resources :feeds, :path_prefix => "reader"
This will work but you can add a line to your RAILS_ROOT/config/environments/production.rb file which will handle all your routes for you. This way you don't need to setup a relative path on your development environment work.
# in RAILS_ROOT/config/environments/production.rb config.action_controller.relative_url_root = '/reader'
Also I've read some people have trouble using the alias with passenger. This may be an older issue but works for me without a problem on Ubuntu (latest).
Here are some useful resources I found along the way... http://robots.thoughtbot.com/post/159806388/phusion-passenger-with-a-prefix http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri http://www.modrails.com/documentation/Users%20guide.html#RailsBaseURI http://stackoverflow.com/questions/848258/server-prefix-and-rails-routes