我正在尝试使用 Apache 和 Phusion Passenger 将基于炼油厂的站点部署到域上的子目录中。不知何故,它几乎可以工作,但并不完全。有没有人有这方面的经验,可以指出我缺少什么?
这是我到目前为止所尝试的:
起初我只是从 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 引擎制作的,我想我应该需要将它挂载到/myapp
-directory,所以我像这样更改了 config/routes.rb:
mount Refinery::Core::Engine, :at => Rails.env.production? ? '/myapp' : '/'
但是,这现在将站点移至/myapp/myapp
。链接现在指向 是有意义的/myapp/resource
,但是由于资源已经向下移动了另一个级别,我仍然被卡住了。
我已经在同一站点的子目录下运行了 redmine 和另一个自定义 rails 3.0 应用程序,没有问题。不知何故,炼油厂似乎很困惑,我看不出我错过了什么。
查看 Rack 文档,我什至尝试像这样更改我的 config.ru:
map '/myapp' do
require ::File.expand_path('../config/environment', __FILE__)
run MyApp::Application
end
但这让系统更加困惑,我得到的只是:
Not Found: /refinery
当我尝试获取/myapp/refinery
页面时。