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