11

我在 Windows 上有 apache2.2。我正在尝试同时提供颠覆 (/svn) 和 redmine (/redmine)。我的 svn 在这个配置下运行良好:

<Location /svn>
  DAV svn
  SVNParentPath C:/svn_repository
  ...
</Location>

这很好用——我的 svn 用户可以点击http://mybox/svn就好了。

现在我想为 Rails 应用程序(RedMine)添加另一个目录:

我按照这个问题中的建议设置了一个混合服务器并让 apache 代理客户端通过它。如果我将其设为根目录,它工作正常——但我无法在子目录中创建它:

<Location /redmine>
  ProxyPass http://localhost:3000/
  ProxyPassReverse http://localhost:3000/
</Location>

有什么建议么?

4

4 回答 4

15

这是我必须改变的:

我删除了尾部斜杠:

<Location /redmine>
  ProxyPass http://localhost:3000
  ProxyPassReverse http://localhost:3000/
</Location>

在我的 Rails 应用程序中:

# added to end of file C:\redmine\config\environment.rb
ActionController::AbstractRequest.relative_url_root = "/redmine"

现在它正在工作!


我对这种方法并不完全满意——我遇到了一些重定向问题。这是迄今为止似乎运作良好的另一种尝试。

第二种方法似乎更好。


更新:

如评论中所述,对于在 Rails 2.3.2+ 上运行的最新应用程序,请改用:

config.action_controller.relative_url_root = '/redmine'

我把它放在新additional_environment.rb文件中。

于 2009-01-22T21:51:23.323 回答
1

如果您仍然希望使用反向代理来使用 Mongrel + Apache,这里是我在我们的系统(Win2k3、Apache 2.2、Redmine 的主干)上解决相同问题的方法。秘诀是安装您的杂种服务,使用--prefix /redmine它告诉它从http://localhost:port/redmine

在 Apache httpd.conf(或合适的包含文件)中:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<IfModule mod_proxy.c>
ProxyRequests Off
#No need to forward on static content - let apache do it faster
ProxyPass /redmine/images ! 
ProxyPass /redmine/stylesheets ! 
ProxyPass /redmine/javascript ! 
# Remove the following entry on public sites as this is insecure
ProxyPass /redmine/plugin_assets !
ProxyPass /redmine/help ! 
ProxyPass /redmine http://localhost:4000/redmine
ProxyPassReverse /redmine http://localhost:4000/redmine
ProxyPreserveHost On
#continue with other static files that should be served by apache
Alias /redmine/images C:/Repositories/redmine/public/images/
Alias /redmine/stylesheets C:/Repositories/redmine/public/stylesheets/
Alias /redmine/javascript C:/Repositories/redmine/public/javascript/
# Remove the following on public sites as this is insecure
Alias /redmine/plugin_assets C:/Repositories/redmine/public/plugin_assets/
Alias /redmine/help C:/Repositories/redmine/public/help/
</IfModule>

# Make sure apache can see public and all subfolders - not suitable for public sites
<Directory "C:/Repositories/redmine/public/">
    Allow from all
    Order allow,deny
</Directory>

Mongrel 是这样安装的:

mongrel_rails service::install --prefix /redmine -N redmine_prod -p 4000 -e production -c C:\Repositories\redmine

希望对某人有所帮助。最初,我尝试设置 Apache + fastcgi 等,但我失去了更多宝贵的头发——它不适合 Windows。

Ps 我发现这个 PDF 是一个非常有用的参考:http: //www.napcsweb.com/howto/rails/deployment/RailsWithApacheAndMongrel.pdf

/达米安

于 2009-02-09T16:39:44.523 回答
0

乘客 ( http://modrails.com ) 是 fastcgi 的更好替代品,因为它非常易于配置

于 2009-01-23T01:59:38.067 回答
0

我同意雷达。乘客真的很容易设置,让 Rails 应用程序共享内存,消除管理杂种集群的负担,几乎不需要配置。您只需要一个特殊的“config.ru”文件,其中包含一个RackUp 配置和一个指向 Apache 中设置的 RAILS_ROOT/public 的 DocumentRoot。

于 2009-02-09T17:37:48.113 回答