passenger+sinatraで同一ドメイン内に複数のsinatraアプリを動かす方法

AWSのトーキョーregionに作ったEC2のインスタンスAmazon Linux AMI)上に、passengerとsinatraをインストールし、passengerで同一ドメイン内のサブディレクトリとして複数のアプリを動かしたかったので調べました。(東京regionとか実は関係ない)

やりたかったこと

http://{何かのドメイン}.com/app01/
http://{何かのドメイン}.com/app02/
を別々のsinatraアプリとして動かしたい。

環境

ruby 1.9.2
passenger 3.0.7
sinatra 1.2.6

やりかた

httpd.confの設定
DocumentRoot "/var/www/html"
RackBaseURI /app01
RackBaseURI /app02

<Directory /var/www/html>
   Options FollowSymLinks
</Directory>
DocumentRootにsymlinkを作る
/var/www/html
  ├ app01 -> {$HOME_DIR}/htdocs/app01/public
  └ app02 -> {$HOME_DIR}/htdocs/app02/public
アプリケーション本体

自分のホームディレクトリにこんな感じでアプリケーションを作る

{$HOME_DIR}/htdocs/
  ├ app01
  │ ├ config.ru
  │ ├ app.rb
  │ ├ public/
  │ └ tmp/
  └ app02
    ├ config.ru
    ├ app.rb
    ├ public/
    └ tmp/

It works !

ちょっとはまったところ

config.ru

ruby 1.9.2だとカレントディレクトリへのパスが自動で通ってないらしいので

require 'app'
run Sinatra::Application

では動かない。

require './app'
run Sinatra::Application

で明示的に指定したら上手くいった。