Apache 2.2 localhost VirtualHosts 问题
Posted
技术标签:
【中文标题】Apache 2.2 localhost VirtualHosts 问题【英文标题】:Apache 2.2 localhost VirtualHosts problems 【发布时间】:2010-11-30 02:13:50 【问题描述】:我正在尝试使用虚拟主机设置我的开发机器,以便我可以使用简单的 url 访问我的开发项目,例如 http://project.dev/ 而不是整个 http://127.0.0.1/dev/path /to/root/of/project/ 类型的 url。
现在,我知道已经有很多关于此的教程和问题已经得到解答,但是在尝试了很多之后,我觉得我在这里绕圈子。
问题很简单:在设置了我的 hosts 文件和我的虚拟主机后,任何访问虚拟主机的尝试都会不可挽回地显示我的 服务器 DocumentRoot 的内容。
我的主机文件:
127.0.0.1 localhost
127.0.0.1 mydomain.dev
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
我的 httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
DocumentRoot /Users/pilot/Sites/
</Virtualhost>
<VirtualHost *:80>
ServerName mydomain.dev
DocumentRoot /Users/pilot/Sites/devel/vytamin/dev/
</VirtualHost>
我确定 httpd-vhosts.conf 文件已加载到我的 httpd.conf 中,如果我将虚拟主机文档根目录指向错误的文件夹,我会收到警告。
我尝试将localhost虚拟主机设置为以下,但没有成功。
<VirtualHost *:80>
ServerName localhost
DocumentRoot /Users/pilot/Sites/devel
</Virtualhost>
以下 URL 都显示了我的 httpd.conf 文件中定义的服务器的 DocumentRoot,并且似乎忽略了我的 VirtualHosts 中定义的 DocumentRoot。
http:// 127.0.0.1/
http:// localhost/
http:// mydomain.dev/
我在 Mac OSX 10.5 Leopard 上运行 Apache2.2,但不是 mac os 附带的。我在 /usr/local/apache2 和网络共享下编译了自己的 IS disabled
我看不出我的设置有什么问题,所以我希望社区会这样做! 感谢您的帮助!
【问题讨论】:
糟糕,抱歉,感谢 Yannick 指出这一点,我也会在那里提问。干杯! 当我知道我已经回答了这个问题时,我觉得这个问题的答案为零有点奇怪......我在 Serverfault 上回答了这个版本。 :) 我是这些网站的新手,并试图糊弄过去!会到达那里!但感谢您的建议。我在某处读到有人遇到类似的问题,并且在重新启动机器后无需干预即可解决。这让它点击了! 我遇到了一个问题,添加这一行解决了它:NameVirtualHost *:80 那到底是什么? 【参考方案1】:好的,我找到了问题!
上面的配置很好,只是我的apache没有正常重启。
apache_ctl graceful
或 apache_ctl restart
都没有终止我正在运行的所有 httpd 进程,因此无法正确重新加载我的配置文件中的更改。
一旦我杀死了剩余的进程并真的重新启动了 apache,它就可以工作了......
已解决,但发现这个我觉得很愚蠢!
现在我有一个守护进程需要解决!
【讨论】:
'apache_ctl status' 返回什么,可能是 apache 创建的 Pidfile 和 apache_ctl 查找的 Pidfile 不同。以上是关于Apache 2.2 localhost VirtualHosts 问题的主要内容,如果未能解决你的问题,请参考以下文章
Apache配置虚拟主机后,不能访问localhost的问题