【发布时间】:2011-03-17 13:04:16
【问题描述】:
我很快得出结论,这是不可行的,尽管出于某种原因,人们 - 很可能没有实施他们给出的“建议”,似乎认为这是可能的。
场景非常简单。我正在本地开发机器上开发 symfony 网站,运行 Ubuntu 10.0.4 LTS。我希望能够在本地运行和测试多个站点。
假设我有以下网站:
- site1.localhost
- site2.localhost
- site3.localhost
按照文档here、here 和here(这些都不适合我),我做了以下事情:
A.我修改了我的 /etc/hosts 文件,第一个条目是:
127.0.0.1 site1.localhost site2.localhost hpdtp-ubuntu910 本地主机 php.localhost
B. 我修改了我的 /etc/apache2/ports.conf 文件(第一行)如下:
NameVirtualHost localhost:80 Listen 80
C. 我为每个网站(site1.localhost 和site2.localhost)创建了配置站点。每个配置都是 /etc/apache2/sites-available 中的一个单独文件
/etc/apache2/sites-available/site1 中的一个这样的配置文件(用于 site1.localhost)如下所示:
<VirtualHost localhost:80>
ServerName site1.localhost
DocumentRoot "/home/morpheous/work/webdev/frameworks/symfony/sites/site1/web"
DirectoryIndex index.php
<Directory "/home/morpheous/work/webdev/frameworks/symfony/sites/site1/web">
AllowOverride All
Allow from All
</Directory>
Alias /sf /lib/vendor/symfony/symfony-1.3.6/data/web/sf
<Directory "/lib/vendor/symfony/symfony-1.3.6/data/web/sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
D.我已经禁用了默认的 apache 站点(而是一直显示)
E. 因为我无法启用我启用的所有网站(如上面的文档链接) purport),我已经决定一次启用一个站点,这样 Apache 就不会对运行哪个站点感到困惑。当我需要运行另一个站点时,我会禁用当前站点并启用我想要的站点。这(显然?)远非理想 - 但即使是这种设置也无法正常工作 - 原因如下。
我)。当我重新启动 Apache 时,我收到以下警告:
- 重新加载 web 服务器配置 apache2 [2010 年 7 月 18 日星期日 10:32:23] [警告] NameVirtualHost localhost:80 没有 虚拟主机
ii)。当我导航到http://site1.localhost 我在 FF 中收到以下错误消息:
哎呀!此链接似乎已损坏
iii)。我的 apache 相关错误出现在 /var/log/apachche2/other_vosts.log
morpheous@hpdtp-ubuntu910:~$ tail /var/log/apache2/other_vhosts_access.log
site1.localhost:80 127.0.0.1 - - [18/Jul/2010:10:08:38 +0100] "GET / HTTP/1.1" 404 506 "-" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1"
site1.localhost:80 127.0.0.1 - - [18/Jul/2010:10:09:30 +0100] "GET / HTTP/1.1" 404 506 "-" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1"
site1.localhost:80 127.0.0.1 - - [18/Jul/2010:10:09:31 +0100] "GET /favicon.ico HTTP/1.1" 404 505 "-" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1"
site1.localhost:80 127.0.0.1 - - [18/Jul/2010:10:09:36 +0100] "GET /favicon.ico HTTP/1.1" 404 505 "-" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1"
我的问题是:
可以设置 Apache 来处理 localhost 上的多个虚拟主机吗?毕竟,到目前为止,我看到的所有示例都涉及使用面向公众的 IP 地址设置 Apache
如果 Apache 确实可以处理 localhost 上的多个站点,那么上述哪些步骤我做错了? AFAICT,我已按照文档进行操作。
【问题讨论】:
-
消息“NameVirtualHost localhost:80 has no VirtualHosts”可能是您的配置中具有相同的 NameVirtualHost 指令的结果。这也可能是之前拥有更通用的“NameVirtualHost localhost”(没有端口)的结果。请在您的配置中查找 /all/ NameVirtualHost 的出现。您的 localhost 是否解析到多个 IP,例如IPv4 地址和 IPv6 地址?尝试将“NameVirtualHost 127.0.0.1:80”与“
”结合使用(Apache 文档已经表明使用 IP 地址优于主机名)。 -
+1 详细解释问题