我要做的任务非常简单,因为我不是这个领域的专家,所以我请求帮助。
现在我正在尝试在我的 Mac 上运行 apache,我有 Windows 工作脚本,并且我需要在 Mac 上做同样的事情。
由于 Mac 开箱即用,我意识到我不需要下载它,就像在 Windows 机器上一样。
我在 Windows 机器上运行的脚本如下所示:
C:\dev\apache\Apache2\bin\httpd -f C:\dev\jboss-4.2.2.GA\server\myapp\httpd\conf\httpd.conf -D ssl
pause
基本上,要在我的 Mac 上启动 Apache,我只需执行以下操作:
sudo apachectl start
因此我假设 Windows 脚本基本上是使用来自 jboss 位置的 httpd.conf 启动 apache。
我想知道如何在我的 Mac 上执行相同操作,我已经有相同的 jboss-4.2.2.GA 文件夹。
我的第一个假设是,我可以手动编辑位于此处的默认 mac httpd.conf:/etc/apache2/httpd.conf,使用此文件:C:\dev\jboss-4.2.2.GA\server\myapp\httpd\conf\httpd.conf,但我有点困惑,因为我不知道如何处理这个 -D ssl。
如果有人能向我解释在 Mac 上处理这个问题的最佳方法是什么,我将不胜感激。
答案1
来自 Apache文档页面为了httpd
:
-D 参数
设置配置范围它可以与配置文件中的部分一起使用,
<IfDefine>
在服务器启动和重新启动时有条件地跳过或处理命令。还可以用于设置某些不太常见的启动参数,包括-DNO_DETACH
(防止父级分叉)和-DFOREGROUND
(防止父级调用setsid()
等)。
来自 Apache文档页面为了<IfDefine>
:
部分用于标记条件指令。部分中的指令仅在以下情况下才会处理:
<IfDefine test>...</IfDefine>
<IfDefine>
测试是真的。如果测试为假,开始和结束标记之间的所有内容都会被忽略。这测试在
<IfDefine>
section 指令中,可以采用以下两种形式之一:
- 參數名
- !参数名称
在前一种情况下,仅当名为的参数參數名已定义。第二种格式反转测试,并且只在以下情况下处理指令:參數名是不是已定义。
这參數名参数是在服务器启动时
httpd
通过命令行或指令给出的定义。-Dparameter
Define
简而言之,这意味着对于您的 Windows 启动脚本,该参数-D ssl
定义了一个名为安全套接字,它启用 httpd.conf 中由<IfDefine ssl>
部分括起来的任何选项。
但是,对于您使用的 macOS 启动命令apachectl start
,它不支持传递其他参数,例如-D
。因此安全套接字范围不能运行该命令时进行设置。
这意味着在您的 Mac 上,httpd.conf 中任何被部分括起来的选项<IfDefine ssl>
都不会启用。如果您已复制 Windows httpd.conf 文件,那么可以安全地假设启用 SSL 的选项将因此被禁用。
解决方案是浏览 Windows httpd.conf 并搜索字符串<IfDefine ssl>
。您需要注释掉该字符串及其对应的字符串</IfDefine>
。它可能会出现多次。这将确保该部分中包含的选项始终处于启用状态,因为我假设您希望每次启动 Apache 时都启用 SSL。
您还可能会找到带有 的部分<IfDefine !ssl>
。在 Windows 上,这些部分将是已禁用当启动命令带有参数时-D ssl
。但是,在 Mac-D ssl
上不是被传递,这意味着这些部分将被打开,即使我们不希望它们被打开。注释掉整个部分,因为我们不希望它被运行。
您应该从如下所示的 httpd.conf 开始:
...
<IfDefine ssl>
OptionOne yes
OptionTwo no
<Subsection>
OptionThree yes
</Subsection>
</IfDefine>
<IfDefine !ssl>
OptionOne no
OptionTwo yes
</IfDefine>
...
最后得到如下结果:
...
#<IfDefine ssl>
OptionOne yes
OptionTwo no
<Subsection>
OptionThree yes
</Subsection>
#</IfDefine>
#<IfDefine !ssl>
# OptionOne no
# OptionTwo yes
#</IfDefine>
...
然后您可以将 Windows httpd.conf 复制到 Mac 的 httpd.conf。请务必保留原件的副本!现在运行的sudo apachectl start
功能与 Windows 命令相同。