OSX 服务器:apache2 正在运行,但“加载页面有问题”

Posted

技术标签:

【中文标题】OSX 服务器:apache2 正在运行,但“加载页面有问题”【英文标题】:OSX Server: apache2 running but “Problem loading page” 【发布时间】:2010-12-20 11:44:48 【问题描述】:

我已经安装了 OSX Server 10.6,安装了所有更新,启动了正在运行的 apache2:

sudo apachectl graceful

我在 /var/log/apache2/errorlog 中看到

[Fri Dec 17 10:11:49 2010] [notice] Apache/2.2.15 (Unix) configured -- resuming normal operations

还有

ps -ef | grep httpd

显示了几个过程:

    0 49388     1   0   0:00.05 ??         0:00.07 /usr/sbin/httpd -D FOREGROUND
   70 49389 49388   0   0:00.00 ??         0:00.00 /usr/sbin/httpd -D FOREGROUND
   70 49390 49388   0   0:00.00 ??         0:00.00 /usr/sbin/httpd -D FOREGROUND
   70 49391 49388   0   0:00.00 ??         0:00.00 /usr/sbin/httpd -D FOREGROUND
   70 49392 49388   0   0:00.00 ??         0:00.00 /usr/sbin/httpd -D FOREGROUND
...

在 httpd.conf 中我编辑了 DocumentRoot:

ServerName bioinfo.mni.fh-giessen.de:80 
DocumentRoot "/Volumes/ServerHD2/Web_Documents"   
ErrorLog "/var/log/apache2/error_log" 
<Directory "/Volumes/ServerHD2/Web_Documents">     
   Order Allow,Deny  
   Allow from All 
</Directory>

语法没问题:

apachectl configtest
Syntax OK

然而,我在http://bioinfo.mni.fh-giessen.de 收到超时:

Problem loading page

有什么线索吗?

【问题讨论】:

您应该获得每个失败请求的错误日志条目。你确定没有吗?服务器在该 IP 下是否真的可以访问? /var/log/apache2/error_log 或 /var/log/apache2/access_log 中没有失败的请求条目。我可以通过 ssh 登录。 【参考方案1】:

您确定您编辑了正确的文件吗? OS X Server 有一种不符合标准的方式。实际的配置条目不在 /etc/httpd/httpd.conf 中,而是在 /etc/apache2/sites 的子目录中。看看这个FAQ。

我建议使用 Server Admin 实用程序来设置服务器。这将比尝试手动正确配置要容易和快捷得多。一旦站点启动并运行,您可以随时添加或更改规则。

【讨论】:

另外,我也建议从那里启动 apache2,而不是通过运行 sudo apachectl。管理工具会记住您的设置,并会在每次重启后自动启动服务。【参考方案2】:

几天内无法直接访问本地 GUI,也无法通过远程桌面进行访问。我现在唯一的方法是 ssh,但我很乐意在几天后试用 Server Admin 实用程序。现在我仅限于命令行。是的,我同时编辑了 /etc/apache2/httpd.conf 和 /etc/apache2/sites/0000_any_80_.conf,但无济于事。是

sudo serveradmin fullstatus web

无论如何都是有益的:

web:readWriteSettingsVersion = 1
web:totalKBytes = 0
web:emailRulesRunning = no
web:boundToKerberos = yes
web:teamsRunning = yes
web:postfixRunning = no
web:servicePortsRestrictionInfo = _empty_array
web:health = _empty_dictionary
web:currentThroughput = 0
web:passwordResetRunning = no
web:ApacheMode = 2
web:statusMessage = ""
web:apacheVersion = "Unknown"
web:state = "RUNNING"
web:setStateVersion = 1
web:apacheState = "RUNNING"
web:proxyState = "STOPPED"
web:htCacheCleanRunning = no
web:calendarRunning = yes
web:servicePortsAreRestricted = "YES"
web:currentRequestsBy10 = 0
web:logPaths:logPathsArray = _empty_array
web:totalRequests = 0
web:startedTime = ""

?

【讨论】:

似乎无法通过防火墙,因为 web:totalRequests = 0。您确定端口 80 已打开并正确映射吗? 好点。我在 /etc/ipfilter/ipfw.conf 中添加了“12324 允许从任意到任意 80 英寸的 tcp”,但“sudo ipfw show”没有显示 /etc/ipfilter/ipfw.conf 中的任何规则。我如何考虑这些规则?感谢您的帮助。 好的,这似乎是一个已知的错误:除了 /etc/ipfilter/ipfw.conf 中描述的以外,此文件中的规则在重新启动后不会被考虑。但是,可以通过命令行中的“sudo ipfw add...”来实施其他规则。现在我至少可以访问了,尽管必须调整文件权限。再次感谢,非常感谢。 不客气,没问题 :) 一定要在运行时发布,这样其他人也可以受益!

以上是关于OSX 服务器:apache2 正在运行,但“加载页面有问题”的主要内容,如果未能解决你的问题,请参考以下文章

OSX + Apache2 + httpd.conf + hosts + .htaccess = 不工作

Xampp localhost 加载但 XAMPP 的 Apache 无法启动,而另一个网络服务器正在使用 OSX 10.8.4 上的端口 80

Apache2 - 添加子域时遇到问题

HTTP/2 服务器推送但它在 Apache2.4 上重新加载了推送的文件

怎样在apache2.2.17中加载PHP模块

Android Studio 无法在 Mac OSX (Mavericks) 上加载 JVM