Apache と Phusion Passenger を使用して、Refinery ベースのサイトをドメインのサブディレクトリにデプロイしようとしています。どういうわけか、ほとんど機能しますが、完全ではありません。誰かがこれについて何か経験があり、私が欠けているものを教えてくれますか?
これが私がこれまでに試したことです:
最初に、til サイトの DocumentRoot からアプリのパブリック ディレクトリへのシンボリック リンクを作成しました。
ln -s /webapps/myapp/public /www/myapp
そして、Apache の仮想ホスト セクションに以下を追加しました。
<VirtualHost *>
...
RackBaseURI /myapp
<Directory /www/myapp>
Options -MultiViews
<Directory>
</VirtualHost>
ブラウザでサーバーの /myapp サブディレクトリを指定すると、予想どおり、アプリが表示されます。ただし、バックエンドで生成されたさまざまなリンク ( の下に/myapp/refinery
あります) およびフロントエンドのメニュー エントリは、サイトのルートを指しています。つまり、[ページ] タブをクリックすると/refinery/pages
、正しいパスが に転送されます/myapp/refinery/pages
。
Refinery が Rails Engine として作成されていることを考えると、-directory にマウントする必要があると考えた/myapp
ので、config/routes.rb を次のように変更しました。
mount Refinery::Core::Engine, :at => Rails.env.production? ? '/myapp' : '/'
ただし、これにより、/myapp/myapp
代わりにサイトが移動します。リンクは を指すようになりまし/myapp/resource
たが、リソースが別のレベルに移動したため、まだ立ち往生しています。
Redmine と別のカスタム Rails 3.0 アプリの両方を同じサイトのサブディレクトリで実行していますが、問題はありません。どういうわけか製油所は混乱しているように見えますが、何が欠けているのかわかりません。
Rack docs を見ると、 config.ru を次のように変更してみました。
map '/myapp' do
require ::File.expand_path('../config/environment', __FILE__)
run MyApp::Application
end
しかし、それはシステムをさらに混乱させ、返されるのは次のとおりです。
Not Found: /refinery
ページを取得しようとすると/myapp/refinery
。