A couple people have asked me how I’m hosting the Sinatra-based pastie service we wrote in yesterday’s revised tutorial. The previous version ran on a mongrel handler frontended by nginx, but for this version I decided to try something a little different.
One of the big announcements at Railsconf last month was that Passenger (aka mod_rails) would be releasing a v2.0 with support not only for Rails applications but also for Rack, meaning that any Rack-based Ruby web framework can also run on it. Yay for deployment options, right? So anyway, I figured we’d give that a shot.
For those of you who haven’t yet mucked with it, Passenger is dead simple to setup. Run
gem install passenger to pull down the gem, and execute the
passenger-install-apache2-module command to build and install the Apache 2.2 module (you’ll need the proper Apache libraries to be present of course). The command output will show you how to configure Apache to load the module.
Getting Passenger to run a Sinatra-based application also turned out to be remarkably easy. All you need to do is create a regular old Rackup script. The file will need to be named
config.ru and should contain all the logic necessary to initialize our app:
require 'rubygems' require 'sinatra'
Sinatra::Application.default_options.merge!( :run => false, :env => ENV['RACK_ENV'] )
require 'toopaste' run Sinatra.application
Place this file in the folder on your server where
toopaste.rb and the
views directory reside.
Next, create a
<VirtualHost *:80> ServerName paste.zerosum.org DocumentRoot /var/www/apps/toopaste/public ... </VirtualHost>
You might as well create a
tmp directory too. You can place a
restart.txt file in this directory to tell Passenger it needs to reload the app without restarting Apache (you can use this in your cap restart tasks, too).