Apache 的版本安装在哪里?

Apache 的版本安装在哪里?

我们正在尝试让 https 在 Apache 上运行。它位于 /usr/local/apache2/bin

/usr/local/apache2/bin/apachectl start如果不使用https我可以运行。

但是,如果我在 httpd.conf 中取消注释这一行:

Include conf/extra/httpd-ssl.conf

然后就/usr/local/apache2/bin/apachectl start不行了。它一直给我一个错误

# /usr/local/apache2/bin/apachectl start
Syntax error on line 56 of /usr/local/apache2/conf/extra/httpd-ssl.conf:
Invalid command 'SSLPassPhraseDialog', perhaps misspelled or defined by a module not included in the server configuration

httpd-ssl.conf 中的行是

SSLPassPhraseDialog  builtin

我们还在 /usr/sbin/ 安装了 httpd。当我取消注释上面的行时,该位置的 tomcat 运行良好。两者都运行版本 2.2.15,仅相差 3 个月(我想这会有所不同)。

# /usr/local/apache2/bin/httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Jul 17 2017 13:25:42

# /usr/sbin/httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Mar 22 2017 06:52:55

有谁知道为什么这种情况发生在 /usr/local/apache2/bin 而不是 /usr/sbin/ 或者知道如何解决这个语法错误?我现在正在做的解决方法是使用 /usr/sbin 但我想知道其原因,以防将来遇到它。

答案1

Apache 的版本安装在哪里?

# which -a apache2
/usr/sbin/apache2
# which -a httpd
/usr/sbin/httpd

假设它在你的 $PATH 上

...如何解决这个语法错误?

正如帮助/手册中所述,您可以(并且应该)为每个版本使用不同的配置;

/usr/sbin/httpd -h 2>&1 | grep ServerConfigFile
  -f file            : specify an alternate ServerConfigFile

...SSL 密码短语对话框...

您可以“列出可用的配置指令”

/usr/sbin/httpd -L | grep -A 2 SSLPassPhraseDialog
SSLPassPhraseDialog (mod_ssl.c)
    SSL dialog mechanism for the pass phrase query ('builtin', '|/path/to/pipe_program', or 'exec:/path/to/cgi_program')
    Allowed in *.conf only outside <Directory>, <Files>, <Location>, or <If>

相关内容