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 - 前提很好的主要内容,如果未能解决你的问题,请参考以下文章