4

我想在 Mac OS 10.7 上创建 VirtualHosts,因此我编辑了 /etc/apache2/httpd.conf。我取消注释“包含/private/etc/apache2/extra/httpd-vhosts.conf”行以包含虚拟主机。在文件 /private/etc/apache2/extra/httpd-vhosts.conf 我写了以下内容:

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "/var/www"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/someFolder"
    ServerName myApplication.dev
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/someOhterFolder"
    ServerName myApplication2.dev
</VirtualHost>

我删除了两个示例虚拟主机。在我的 /etc/hosts 文件中,我添加了以下内容:

127.0.0.1 myApplication.dev
127.0.0.1 myApplication2.dev

我重新启动了我的 Apache 并在浏览器中键入了 myApplication.dev 和 myApplication2.dev,但我收到一个错误“找不到服务器”,它在浏览器中显示 www.myApplication.dev(myApplication2.dev 也是如此)。

我忘了配置什么吗?我在httpd.conf中激活了PHP,也安装了mysql,但我认为这与虚拟主机无关。谢谢你的帮助!

4

4 回答 4

7

apachectl 有一个选项 -S 来检查 vhost.conf 文件的语法。您可以在 vhosts.conf 文件中找到这些行。

> # You may use the command line option '-S' to verify your virtual host
> # configuration.

所以,当你跑

sh-3.2# apachectl -S

如果您得到Syntax OK结果,则表示您的 vhosts.conf 文件没有问题。

httpd: VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server zz.xxxx.com (/private/etc/apache2/extra/httpd-vhosts.conf:27)
         port 80 namevhost zz.xxxx.com (/private/etc/apache2/extra/httpd-vhosts.conf:27)
         port 80 namevhost yy.xxxx.com (/private/etc/apache2/extra/httpd-vhosts.conf:35)
Syntax OK

如果 conf 文件有任何问题,它会告诉您错误行,例如

sh-3.2# apachectl -S
Syntax error on line 33 of /private/etc/apache2/extra/httpd-vhosts.conf:
CustomLog takes two or three arguments, a file name, a custom log format string or format name, and an optional "env=" clause (see docs)

确保您的 vhosts.conf 文件具有真实的配置。

于 2013-12-30T10:37:39.900 回答
6

我在使用 OS X Lion 时遇到了完全相同的问题。我通过将“::1 myhost.dev”添加到 /etc/hosts 来修复它:

127.0.0.1 myhost.dev
::1 myhost.dev

顺便说一句,::1 还修复了一个错误,该错误使 Mac 提供的虚拟主机上的页面加载非常慢。

于 2013-02-02T00:29:26.450 回答
2

我遇到了同样的问题,并注意到ServerRoot "/usr"在 10.7 升级后设置错误。httpd.conf 文件仍在 /etc/apache2 下,但其中的此设置指向错误的位置。一旦我通过更改为 修复了该问题ServerRoot "/etc/apache2",我之前的所有虚拟主机配置都会正确获取。

我还必须通过取消注释第 477 行来重新启用虚拟主机,如此处所述http://brettterpstra.com/fixing-virtual-hosts-and-web-sharing-in-mountain-lion/直到我已经修复了上面的路径问题。

于 2012-10-19T16:48:34.337 回答
2

您使用的是 HTTP 代理吗?如果是这样,请为 myApplication.dev 和 myApplication2.dev 设置一个例外。

我的意思是“找到服务器 mot”的问题意味着您的浏览器找不到主机“myapplication.dev”的 IP 地址。这可能是因为您使用的是 http 代理,可能是您的托管公司配置的代理。在任何情况下,您甚至都无法访问服务器,因此您根本无法尝试虚拟主机配置。

要尝试虚拟主机配置,您可以在终端窗口中使用 telnet 并直接与服务器进行 HTTP 通信,如下所示:

yourmacbox:~ yourname$ telnet 127.0.0.1 80

您应该看到以下文本:

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

然后你输入

GET / HTTP/1.0
Host: myApplication.dev

现在,希望您能看到来自您的 Web 服务器的一些响应。这表明,一旦您可以连接到它,虚拟主机就可以正常工作。

于 2012-05-07T12:36:19.403 回答