我必须阅读互联网上关于Redmine和Apache的每一篇文章,我仍然无法让它发挥作用!
我使用Thin完全在http://server:3000
上运行Redmine。我们在同一台服务器上有另一个Apache服务,它在不同的端口(8096)上托管我们的内部Web工具,所以我希望Redmine遵循相同的约定。
就httpd.conf中的Apache而言,我已添加:
ProxyPass /redmine http://127.0.0.1:3000/
ProxyPassReverse /redmine http://127.0.0.1:3000/
ProxyPreserveHost on
这似乎工作得很好。如果您输入http://server:8096/redmine
,它会显示Redmine的初始页面,但点击任何其他链接结果为 404 。
看起来它没有将/ redmine附加到网站的链接上,因为点击“管理员”链接也会让我http://server:8096/admin
而不是http://server:8096/redmine/admin
我还考虑将下面三个中的任何一个添加到 config / environment.rb ,但是似乎有相互矛盾的信息要使用,而且似乎没有一个:
ActionController::AbstractRequest.relative_url_root = "/redmine"
ActionController::Base.relative_url_root = "/redmine"
Redmine::Utils::relative_url_root = "/redmine"
一如既往,非常感谢任何帮助!
编辑::
我也在试用
ProxyPass /redmine http://server:3000
ProxyHTMLURLMap http://server:3000 /redmine
<Location /redmine>
ProxyPassReverse http://server:3000
SetOutputFilter proxy-html
ProxyHTMLURLMap / /redmine/
ProxyHTMLURLMap /redmine/ /redmine
</Location>
但似乎有相同的结果。有趣的是,如果我从本地服务器访问http://localhost:8096/redmine
,所有链接似乎都可以工作并指向正确的页面,除了CSS和JS不起作用。
如果远程我手动输入任何链接http://server:8096/redmine/admin
,那么我会获得带有CSS等的正确页面,这只是页面之间无法正常工作的链接!
答案 0 :(得分:2)
伙计,我从未见过像这样改变上下文的apache代理工作设置:
ProxyPass /redmine http://127.0.0.1:3000/
这应该有效:
ProxyPass /redmine http://127.0.0.1:3000/redmine
要做到这一点,您需要设置后端服务器(杂项或其他)以便在子uri上工作。
我建议你改用mod_passenger。这是设置redmine的最简单方法,它不涉及代理。以下是我的设置:
brunojcm@brunojcm-htpc:~$ cat /etc/apache2/sites-available/redmine
<Directory /var/www/redmine>
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>
/var/www/redmine
是指向您的公共redmine文件夹的链接。
brunojcm@brunojcm-htpc:~$ ll /var/www/redmine
lrwxrwxrwx 1 root root 27 Sep 4 2011 /var/www/redmine -> /opt/redmine/current/public/
您还需要安装mod_passenger。我不记得究竟该怎么做,但我相信您需要gem install passenger
并在运行passenger-install-apache2-module
后按照说明进行操作。
希望它有所帮助!