我想在Mac上启动Apache。如果我通过签入system prefs -> web sharing
启用Web共享,则Apache可以正常工作。但是如果我在终端输入命令:sudo apachectl start
,Apache就无法启动。在这种情况下,当在Safari中运行http://localhost
时,它总是说The requested URL / was not found on this server.
在这两种情况下,我都使用默认的httpd.conf
。
因此,如何通过在终端中输入命令而不是通过mac本身的图形配置窗口来启动Apache并使其在Mac中运行?我更喜欢在终端指挥。
谢谢。
答案 0 :(得分: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(系统首选 - >网络共享)中网络共享的行为本质首先启动plist
以设置适当的Define
参数,然后调用{{1 }}。如果我们阅读httpd.conf,我们可以根据plist中的参数找到文件的几个部分 - apachectl
。
如果我们在终端中调用命令<IfDefine xxxx>yyyyy</IfDefine>
,就像我们在linux中通常所做的那样,则无法设置plist中的Define参数。虽然httpd已启动,但未正确配置,例如,在我的情况下,sudo apachectl start
根本未设置,因为参数被
DocumentRoot
这就是错误日志<IfDefine !MACOSXSERVER>
<IfDefine WEBSHARING_ON>
DocumentRoot "/Library/WebServer/Documents"
</IfDefine>
</IfDefine>
的原因。对于/ usr / htdocs,它没有在任何配置文件中设置,而是在Apache中进行了硬编码。这是寻找的“最后的手段”。
如果我们对[error] [client 192.168.1.2] File does not exist: /usr/htdocs
和#<IfDefine !MACOSXSERVER>
以及两个#<IfDefine WEBSHARING_ON>
发表评论,请在终端中致电#</IfDefine>
。一切都好。
我花了一整天的时间才最终理顺这一点。我希望这对那些曾经是Linux的人有用,特别喜欢像我这样的终端命令行,然后转移到Mac。