如何将基于Refinery的站点安装到子目录

时间:2012-12-26 01:14:29

标签: ruby-on-rails apache passenger refinerycms rails-engines

我正在尝试使用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页面时。

0 个答案:

没有答案