我正在尝试在全新安装的 Ubuntu 11.04 上设置用于本地开发的 Apache 虚拟主机。以下是 /sites-available 中的虚拟主机配置:
<VirtualHost *:80>
ServerName morpho.local
ServerAlias www.morpho.local
ServerAdmin webmaster@localhost
DocumentRoot /home/james/projects/morpho
# Log file
CustomLog /var/log/apache2/morpho.local-access.log combined
</VirtualHost>
我在 /sites-enabled 中添加了符号链接并重新启动了 Apache。文档根目录包含一个虚拟的“Hello World”index.html,没有其他内容。www-data 用户是目录和 index.html 的所有者。
当我浏览 morpho.local 时,出现 403 Forbidden 错误,并且此行(两次)写入 Apache 错误日志:
(13)Permission denied: /home/james/projects/.htaccess pcfg_openfile:
unable to check htaccess file, ensure it is readable
我觉得这很奇怪,因为它正在寻找文档根目录上一个目录中的 .htaccess 文件。为了看看会发生什么,我在该目录中创建了一个 .htaccess,并为其赋予 777 个权限,并将所有者和组设置为 www-data。日志中出现了同样的错误。
我的猜测是我错过了一些需要与权限有关的事情,但事实上它在目录后面寻找 .htaccess,这令人困惑。
再次重申,这是一个全新的 Ubuntu/Apache 安装,除了这个虚拟主机之外我没有配置任何东西。
编辑:我通过在我的 dev 文件夹 /home/james/projects 上设置 x 权限使其工作。这允许 www-data Apache 用户查看目录内部。我将尝试 ghm1014 的答案中的设置,因为这似乎是更好的解决方案。虽然它似乎仍然需要 x 权限才能让 www-data 跟随符号链接,所以我不知道它是否能避免必须设置它。
无论如何,感谢您的回答。
答案1
您必须在配置中授予访问文档根目录的权限。在 VirtualHost 条目中输入类似以下内容。
<Directory />
Order allow,deny
Allow from all
</Directory>
答案2
主目录不适合放置 www-doc 文件。因为 /home/ 目录对其他用户没有 x 权限(导航)。添加此权限意味着任何用户都可以看到您的个人信息。我建议这样做:
在 apache 可以读取的任何地方创建一个目录:
mkdir /var/www/html/
然后创建到您的真实目录的符号链接:
ln -s /home/james/projects/morpho /var/www/html/
更改你的 DocumentRoot 并添加跟随符号链接选项
DocumentRoot /主页/詹姆斯/项目/morpho
选项 FollowSymLinks