我正在尝试使用Apache和Phusion Passenger将基于Refinery的站点部署到域的子目录中。不知怎的,它几乎可以工作,但并不完全。有没有人有这方面的经验,可以指出我缺少的东西?
这是我到目前为止所尝试的内容:
首先,我刚刚从til site的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
目录,所以我改变了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
页面时。