1

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

4

0 回答 0