あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

Passenger のサブディレクトリで Rack ベースアプリケーションを動かす

まんまなんすけどね、意外とハマってしまったので。

サブディレクトリで動かすっていうのは、
http://www.orenosaba.com/ とかいうページがあったら、この特定下階層だけ Rack なり Rails なりベースのアプリケーションが動いてるイメージ。
今回は http://www.orenosaba.com/orenoapp/ が Rack ベースアプリの対象とする。

こうする
<VirtualHost *:80>
    #静的なウェブページ
    ServerName www.orenosaba.com
    DocumentRoot /var/www/www.orenosaba.com
    <Directory /var/www/www.orenosaba.com>
        Options -Indexes -MultiViews FollowSymLinks
    </Directory>

    #動的 ( Rack ベースアプリ ) なウェブページ
    Alias /orenoapp /var/www/www.orenosaba.com/rackapp/public
    <Location /orenoapp>
        PassengerBaseURI /orenoapp
        PassengerAppRoot /var/www/www.orenosaba.com/rackapp
    </Location>
    <Directory /var/www/www.orenosaba.com/rackapp/public>
        Options -Indexes -MultiViews FollowSymLinks
    </Directory>
</VirtualHost>

Location 書かずに、Directory の中に ( Rack | Rails | Passenger )BaseURI 書いて、Alias じゃなくて ln でシンボリックリンク作る、みたいに書いてる記事が結構あって、最初公式の記述どおりデプロイしたら動かなかったので、うーんこの?と思ってました。

ちなみに動かなかった時は F5 連打してると、まれに変な所に連れて行かれるという。

IP - - [21/Dec/2015:16:20:12 +0900] "GET / HTTP/1.1" 200 9209 0.0016
IP - - [21/Dec/2015:16:20:15 +0900] "GET /orenoapp/ HTTP/1.1" 404 18 0.0010

こんなん。

結局コード書いてる人が URL の処理確定したもの作ったら、公式のデプロイ記述通りで動いたので、動かない場合は Passenger 側ではなく、アプリケーション側の処理を確認させた方がいいかもしれませぬ。
ちなみに Rack ベースとかかっこいいこといってますが要は Sinatra アプリです。

参考:
https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/#deploying-an-app-to-a-sub-uri