解决方案
Apache 至少需要对 vhost 目录的所有父目录具有执行权限。
我正在尝试设置在 CentOS 4.3 上的 Apache 下运行的 Rails 应用程序。我正在使用 Phusion Passenger ( mod_rails
) 我确保应用程序部署目录归 Apache 组所有,并且权限设置为允许该组读取它。
在我的 Apache 配置中我有...
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/home/sneedmoure/deployed_rails_apps/myapp/current/public"
ServerName myapp.com
ServerAlias www.myapp.com
ErrorLog "logs/myapp.com-error_log"
CustomLog "logs/myapp.com-access_log" common
CustomLog "logs/myapp.com-deflate_log" deflate
<Directory "/home/sneedmoure/deployed_rails_apps/myapp/current/public">
Order allow,deny
Allow from all
#AllowOverride all # Not sure whether I need this
Options -MultiViews # Passenger docs say to include this
</Directory>
</VirtualHost>
当我尝试在浏览器中访问我的应用程序时出现 403 错误。
在错误日志中我得到了类似的条目......
[Wed Nov 25 03:01:19 2009] [error] [client 123.456.789.12] (13)Permission denied: access to / denied
我尝试了应用程序中的不同路径并得到了相同的结果。它在我的开发机器上运行良好。
知道我做错了什么吗?
答案1
我能想到的唯一原因是 Web 服务器用户无权访问该目录 (/home/sneedmoure/deployed_rails_apps/myapp/current/public)。
您可以通过登录 Web 服务器用户帐户并尝试列出目录来验证这一点。
答案2
该目录中是否有索引文件(例如 index.html、index.htm 等)?如果没有,则可能会出现抱怨,因为对该目录的任何请求都显示为尝试检索目录列表。您可以在该目录中创建一个空白文件(例如 test.txt)并成功将其加载到浏览器中吗?