0

我想在 Mac 中启动 Apache。如果我通过签入启用网络共享system prefs -> web sharing,则 Apache 可以工作。但是如果我在终端输入命令:sudo apachectl startApache 不会启动。在这种情况下,当http://localhost在 Safari 中运行时,它总是说The requested URL / was not found on this server.在这两种情况下,我都使用了默认的httpd.conf.

因此,如何通过在终端中输入命令而不是通过 mac 本身的图形配置窗口来启动 Apache 并使其在 Mac 中工作?我更喜欢在终端中指挥。

谢谢你。

4

1 回答 1

1

想办法。重点来自/etc/apache2/httpd.conf的话:

The <IfDefine> blocks segregate server-specific directives and also directives that only apply when Web Sharing or server Web Service (as opposed to other services that need Apache) is on. The launchd plist sets appropriate Define parameters.

mac中Web共享的动作(系统偏好设置->网络共享)本质上是先启动plist设置合适的Define参数,然后调用apachectl. 如果我们阅读 httpd.conf,我们可以发现该文件由几个部分构成——<IfDefine xxxx>yyyyy</IfDefine>基于 plist 中的参数。

如果我们sudo apachectl start像在linux中那样在终端中调用命令,则无法设置来自plist的Define parameters。虽然 httpd 已启动,但没有正确配置,例如,在我的情况下,DocumentRoot根本没有设置,因为参数被包围

<IfDefine !MACOSXSERVER>
<IfDefine WEBSHARING_ON>
    DocumentRoot "/Library/WebServer/Documents"
</IfDefine>
</IfDefine>

这就是错误日志说的原因[error] [client 192.168.1.2] File does not exist: /usr/htdocs。至于 /usr/htdocs,它没有在任何配置文件中设置,而是在 Apache 中硬编码。这是寻找的“最后手段”的地方。

如果我们评论#<IfDefine !MACOSXSERVER>and#<IfDefine WEBSHARING_ON>和 两者,请在终端中#</IfDefine>调用。sudo apachectl start然后一切正常。

我花了一整天的时间才最终解决这个问题。我希望它对那些曾经是 Linux 并且特别喜欢像我一样在终端中使用命令行并且只是转向 Mac 的人有用。

于 2012-11-17T11:13:57.883 回答