読者です 読者をやめる 読者になる 読者になる

mongrelやwebrickをサブディレクトリで実行

Rails Ruby

mod_proxyを使ってapache2をフロントエンド、バックエンドに
mongrelを使う場合、ディレクトリ階層が異なるとパスが
変わってうまくいきません。
mongrel側もディレクトリつきで起動する必要があります。
id:moroさんや舞波さんの助言で実現できたので報告します。

やりたいこと

mongrel

http://localhost:3000/hoge

を起点にして起動したい
アクションとIDまでつけると

http://localhost:3000/hoge/foo/bar/1

ってな感じです。

どうするの?

config/environment.rb の一番下に

ActionController::AbstractRequest.relative_url_root = "/hoge"

と、本番のディレクトリを書いておきます。
この状態でmongrelを立ち上げると、

http://localhost:3000/hoge

でアクセスできるようになります。ただ、これだと
imagesディレクトリやstylesheets、javascriptsディレクトリがありません。
ディレクトリを作成し、シンボリックリンクを張っておきます。

mkdir -p public/hoge
cd public/hoge
ln -s ../images
ln -s ../stylesheets
ln -s ../javascripts

これで本番環境でもディレクトリつきで
リバースプロキシ経由でrailsアプリを利用することができます。