在 Ubuntu 12.04 上的 Apache2 中配置 VirtualHost 的问题

Posted

技术标签:

【中文标题】在 Ubuntu 12.04 上的 Apache2 中配置 VirtualHost 的问题【英文标题】:Problems configuring VirtualHost in Apache2 on Ubuntu 12.04 【发布时间】:2012-05-21 05:12:15 【问题描述】:

阅读各种教程 [1] 后,我仍然无法让我的 VirtualHost 设置按预期工作。当我尝试将 VirtualHost 与我的用户目录下的目录用作其DocumentRoot 时,我得到了403 Forbidden

到目前为止我做了什么

创建文件/etc/apache2/sites-available/workspace,内容如下:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName project-site
    DocumentRoot /home/user/Workspace/project/site
</VirtualHost>

编辑后的文件/etc/hosts 现在正在生成:

127.0.0.1   localhost
127.0.1.1   my-machine

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# VirtualHosts added by me
127.0.0.1   project-site

使用sudo a2ensite workspace启用虚拟主机

使用 sudo services apache2 restart 重新启动 Apache 尝试在我的网络浏览器中打开 http://project-sitehttp://project-site/test.htmltest.html 存在于 /home/user/Workspace/project/site/ 中)

会发生什么

重新启动 Apache 我在命令行上收到以下消息:

* Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Sun May 13 10:33:37 2012] [warn] NameVirtualHost *:80 has no VirtualHosts
[ OK ]

打开http://project-sitehttp://project-site/test.html 会提供“403 Forbidden”。

应该发生什么

当我浏览到 http://project-site 时,我希望提供 /home/user/Workspace/project/site 的内容。

到目前为止我学到了什么

通过阅读此站点上的类似问题,我了解到这可能是权限问题 [2]。 /home/user/Workspace/project/site 中的文件可能无法被 www-data 读取。但我怎么知道或纠正这一点?

此外,.htaccess 文件被提及 [3] 位于

/home/.htaccess
/home/user/.htacces
[...]
/home/user/path/to/project/.htaccess

并且可能不可读。我从未创造过它们,我不想要它们,我会需要它们吗?

另一个问题 [4] 的第二个答案让我使用 NameVirtualHost 负责 Apache 重启时的警告。是否有必要,如果,如何正确使用?

非常感谢任何帮助!告诉我,如果您需要知道任何其他信息来定位问题。


资源

    http://www.thegeekstuff.com/2011/07/apache-virtual-host/, http://httpd.apache.org/docs/2.2/vhosts/name-based.html, http://mintarticles.com/read/software-articles/multiple-virtual-hosts-in-xampplampp-in-ubuntu,977/, http://www.pgorecki.pl/content/virtual-host-na-localho%C5%9Bcie-apache-ubuntu, ... Apache VirtualHost 403 Forbidden Ubuntu, Apache, virtualhost and Access forbidden VirtualHost configuration

【问题讨论】:

希望对视频有帮助 youtu.be/QaZBly7_0zo wilson18.com/how-to/linux-net...-server-12-04 +1 你的问题解决了我的问题 :) 【参考方案1】:

我找到了以下解决方案,但并不让我满意,但解决了我的主要问题。实际上,它与 [1] 中建议的权限有关。网络服务器无法访问我的 /home/user 目录。为了授予尽可能少的权限,我使用了

chmod 701 /home/user

使其易于访问。此外,我递归地将组所有权授予www-data,用于虚拟主机的 webroot,如 [2] 中推荐的那样,但我不确定这是否有必要。

sudo chown -R user:www-data /home/user/Workspace/project/site
sudo chmod -R g+s /home/user/Workspace/project/site

我将在一个单独的问题中要求一个更优雅的解决方案。

关于提到的其他问题,除了其他资源外,我在[3]的帮助下发现了以下内容:

如果NameVirtualHost *:80 出现在 apache 的其他配置文件之一中,则虚拟主机描述中没有必要并且可能会导致错误。 要让 apache 知道其完全限定域名为 localhost,需要创建一个文件 /etc/apache2/conf.d/fqdn,内容为 ServerName localhost
    https://***.com/a/7576526/948404 https://***.com/a/9133067/948404 https://help.ubuntu.com/community/Apachemysqlphp

【讨论】:

以上是关于在 Ubuntu 12.04 上的 Apache2 中配置 VirtualHost 的问题的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 12.04 PHP 5.5 和 apache2 2.4

ubuntu12.04+apache2.4+django 配置反向代理

apache 2.2/Ubuntu 12.04 的 SSL 问题

Python / PyGame,Ubuntu 12.04 上的 MIDI

Ubuntu 12.04 上的 Git 克隆 XAMPP

带有 QtCreator 的 Ubuntu 12.04 上的 OpenCV 2.4