apache + redmine 403 - 前提很好

Posted

技术标签:

【中文标题】apache + redmine 403 - 前提很好【英文标题】:apache + redmine 403 - premissions are good 【发布时间】:2016-01-18 06:37:36 【问题描述】:

我对此进行了很多搜索,但解决方案并没有太大帮助。我尝试在我的 FreeBSD 上将 redmine 升级到 2.6.5,但出现 403 错误。

apache 错误日志:

[autoindex:error] AH01276: 无法提供目录 /usr/local/www/redmine/public/:没有匹配的 DirectoryIndex(无) 找到,并且选项禁止的服务器生成的目录索引 指令

我的 httpd 配置文件:

<VirtualHost example.com:80>
   DocumentRoot "/usr/local/www/redmine/public"
    ServerName example.com

      FastCgiServer /usr/local/www/redmine/public/dispatch.fcgi -idle-timeout 120 -initial-env RAILS_ENV=production -initial-env PATH=/usr/local/bin -processes 2

<Directory "/usr/local/www/redmine/public">
   AddHandler fastcgi-script fcgi
   Order allow,deny
   Allow from all
   AllowOverride all
   Options  +FollowSymLinks +ExecCGI
   RewriteEngine On
   RewriteCond %REQUEST_FILENAME !-f
   RewriteRule ^(.*)$ dispatch.fcgi
</Directory>
    ErrorLog /logs/error.log
</Virtualhost>

我不得不说:如果我在 Option 中添加 +Indexes,我会在浏览器中看到文件,所以我猜 premissions 是好的。 任何人都可以给我任何提示吗? 在此先感谢 4 您的帮助

【问题讨论】:

【参考方案1】:

我在使用 Apache 2.4 和 Redmine 2.6.5 安装 ArchLinux 时遇到了同样的问题。我使用 Phusion Passenger Web 应用程序服务器而不是 fcgi,但在访问服务器时,我总是像您一样进入 403 Forbidden 页面。

使用+Indexes 选项,我还可以在浏览器上获得 Redmine 公共目录的内容。

当使用 webrick 或乘客直接托管 Redmine 时,一切都很好。这就是您可以验证您的Redmine没有以某种方式损坏的方法。从 Redmine 根目录运行:

bundle exec ruby scripts/rails server -e production 

由于我使用 RVM 来管理系统上的 ruby​​ 版本和 gemsets,我还可以告诉您,该行为与 ruby​​ 无关(我尝试了从 1.8.x 到 2.2.x 的每个版本,没有任何更改)。

最后,我用 nginx 1.8.0(稳定版)替换了 Apache,让 Redmine 重新开始工作。因此,与乘客一起滚动很容易。跑吧

gem install passenger

所以你得到了乘客包裹。然后使用乘客模块编译 nginx

passenger-install-nginx-module

您将获得一个自动对话框,下载 nginx 并使用适当的配置对其进行编译。默认安装到/opt/nginx

在 ArchLinux 上,您宁愿使用 ABS 来获取 PKGBUILD 并将以下内容添加到配置部分

--add-module=$(passenger-config --nginx-addon-dir) \

这样你还可以让 systemd 单元文件启动和停止nginx.service

最后但并非最不重要的是,这是我用来运行 Redmine 的 nginx 配置:

server                                                                     
  listen 80;                                                              
  server_name redmine.example;                                        
  root /usr/share/webapps/redmine-2.6.5/public;                           
  passenger_base_uri /;                                                   
  passenger_app_root /usr/share/webapps/redmine-2.6.5;                    
  passenger_document_root /usr/share/webapps/redmine-2.6.5/public;        
  passenger_enabled on;                                                   

  passenger_ruby /usr/local/rvm/gems/ruby-1.9.3-p551@redmine/wrappers/ruby;

使用另一个网络服务器可能是一个令人生畏的步骤,但我花了不到 2 小时的时间让 Redmine 启动并使用 nginx 运行,而我浪费了将近 2 天的时间来弄清楚为什么 Apache 不再为 webapp 提供服务.

【讨论】:

让我发疯,试图弄清楚为什么将 Fedora 21 升级到 22 会破坏 Redmine。在找到这个页面之前,我几乎准备好将整个应用程序移植到 php【参考方案2】:

在我的情况下,问题是由 apache 模块 ModAutoIndex 中的错误引起的。禁用该模块就可以了。

见https://serverfault.com/a/731859

禁用模块自动索引(这是错误行为的原因,将防止错误。

#LoadModule autoindex_module modules/mod_autoindex.so

在 Apache 2.5.0 发布之前,Phusion 将在乘客 5.0.22 版本中解决该问题。

【讨论】:

非常感谢 - 修复了它。失去自动索引并不是什么大的牺牲。短语“Fedora 测试页”可能会帮助其他人找到此解决方案。

以上是关于apache + redmine 403 - 前提很好的主要内容,如果未能解决你的问题,请参考以下文章

redmine + apache + mod_fcgid

apache与redmine整合-使用passenger

Ubuntu+apache安装redmin

bitnami-redmine Apache服务启动不起来

redmine 和 mod_vhost_dbd

CentOS 6.7 x64 Redmine与Subversion结合