Mac OS Mountain Lion - Apache运行,但本地主机未工作

9

我使用命令在Mac OS Mountain Lion上加载了Apache Web服务器:

sudo apachectl start

然而,当我尝试在Firefox中打开localhost时,我收到了以下消息:
“未找到:服务器上未找到所请求的URL /。Apache/2.2.21 (Unix) DAV/2在localhost端口80上运行的服务器。”
我编辑了httpd.conf和httpd.conf.default文件来更改。
#ServerName www.website.com

to

ServerName localhost

它仍然无法工作。有什么建议吗?

1
找到解决方案了吗? - Raj Pawan Gumdal
我正在使用HTML和CSS编写网站,并使用服务器端包含来实现一致的设计,避免不必要地重复代码。这是否与主题无关?如果不是,我需要让我的计算机处理服务器端包含,以便测试我的代码。在这个意义上,Apache是一个工具,使我能够在不上传到我的Web主机的情况下测试我的代码,因此在Mountain Lion下运行Apache对我来说是必不可少的。我认为会有其他网络程序员经历过相同的问题,并且可以为解决方案做出贡献。 - Geoff Pointer
我曾经遇到过类似的问题。重启命令没有给出任何错误或输出,让我不知所措。检查端口后,我发现apache没有运行。运行这个命令/usr/sbin/httpd -D FOREGROUND实际上帮助我看到了实际的错误信息,并成功启动了apache。 - Mahendra Liya
3个回答

6
为了验证某个进程是否在80端口上监听,您可以在终端窗口中使用lsof命令:
$ sudo lsof -iTCP:80 -sTCP:LISTEN
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
httpd      88 root    4u  IPv6 0xffffff8018804600      0t0  TCP *:http (LISTEN)
httpd      90 _www    4u  IPv6 0xffffff8018804600      0t0  TCP *:http (LISTEN)
httpd   14843 _www    4u  IPv6 0xffffff8018804600      0t0  TCP *:http (LISTEN)

这将验证您已成功启用apache。

(我已经安装了xcode,但我认为lsof是正常安装的一部分)

添加:

这证实了apache正在侦听80端口。下一步我会查看访问日志,看看当您像浏览器返回错误时请求'/'时apache记录了什么。这是我的显示内容。请注意,http GET请求显示为返回代码200(成功):

bash-3.2# grep 'GET / ' /private/var/log/apache2/access_log 
127.0.0.1 - - [12/Sep/2012:16:46:45 -0400] "GET / HTTP/1.1" 200 44
127.0.0.1 - - [12/Sep/2012:16:49:44 -0400] "GET / HTTP/1.1" 200 44

您还可以通过刷新浏览器窗口来确定浏览器请求的URL,然后确认Apache将该新请求记录到access_log中。


我尝试了一下,结果基本相同(设备ID略有不同,显然),除了PID是:19275、19277和19285。 - Spartanblogger
好的,这证实了Apache正在运行和监听,尽管回顾原始问题中Apache返回给浏览器的错误清楚地表明了这一点。 - Tim B
这是一个非常好的详细回答。继续保持! - L0j1k
你说“这证实了Apache正在侦听80端口”...是什么证实了这一点?不成功的输出会是什么样子? - Jeff
@jeff:命令sudo lsof -iTCP:80 -sTCP:LISTEN列出了所有正在侦听端口 80 的进程,而在我的示例中,您可以看到 httpd 的一个实例正在侦听。如果没有,则从该命令中将不会看到任何输出。您可以通过将“80”替换为任何未使用的端口号来查看它的外观。 (尝试使用类似 88888 的内容) - Tim B

5
你应该检查在你的“httpd.conf”文件中指定为“DocumentRoot”的文件夹的权限,并至少允许Apache用户(默认应该是“_www”)具有读取访问权限。
否则,您可以在“DocumentRoot”文件夹上执行“sudo chmod 755”命令。
顺便说一下,您应该只修改“httpd.conf”文件,因为“httpd.conf.default”是默认配置,如果您想要恢复Apache原始配置,只需用“httpd.conf.default”文件覆盖“httpd.conf”文件即可。
我猜您没有启用基于名称的虚拟主机,因为当您启用基于名称的虚拟主机时,主配置中的文档根目录将被忽略;相反,将使用匹配主机名的根目录,如果没有匹配,则默认为第一个虚拟主机。
最后,当您遇到问题时,首先要检查的始终是Apache错误日志文件。
可以通过查看Apache配置文件中的“ErrorLog”指令来找到错误日志的位置。

谢谢。我尝试了以下内容: - Spartanblogger
抱歉,上次我不小心按下了回车键。这是我正在输入的内容:谢谢。我做了以下几件事:(1)正确设置了DocumentRoot的权限,(2)恢复了httpd.conf.default的更改,(3)检查了错误日志并发现了这个问题:“[client ::1] File does not exist: /usr/htdocs”。 - Spartanblogger
@Spartanblogger,“文件不存在:/usr/htdocs”错误意味着您的Apache配置文件存在错误。您在“httpd.conf”中设置“/usr/htdocs”在哪里? - user1419445
有成功了吗?我卡在同一个点上。尝试了所有方法,但无法消除“Forbidden”错误。 - Raj Pawan Gumdal
@Raj 在错误日志中你得到了哪个错误? - user1419445
我的username.conf文件如下: <Directory "/Users/Raj/Projects/JoomlaWorkstation/"> Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>我已经将文档根目录更改为指向我的Joomla源代码。正如您所要求的那样,我查看了错误日志,并得到以下信息: [Sun Sep 30 23:22:46 2012] [error] [client ::1] client denied by server configuration: /Users/Raj/Sites/phpinfo.php我放置了用于测试目的的php文件。尽管我已经更改了文档目录,但它仍然试图指向我的“Sites”目录。 - Raj Pawan Gumdal

1

将所有的IfDefine !WEBSERVICE_ON标签注释掉,保留其中的内容——在Mountain Lion上没有WEBSERVICE


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接