我如何知道 Apache 正在使用哪个配置文件?

Cla*_*diu 44 mac-osx httpd.conf virtualhost apache-2.2

我正在尝试在 Mac OS X 上设置虚拟主机。我一直在修改 httpd.conf 并重新启动服务器,但没有让它正常工作。此外,我注意到它不在 httpd.conf (Libraries/WebServer/Documents) 中提到的 DocumentRoot 中提供文件,而是在不同的目录 (/usr/local/apache2/htdocs) 中提供文件。我在 httpd.conf 中的任何地方都没有看到这个文件夹。此外,PHP 可以工作,但“LoadModule php5_module”行被注释掉了。这让我觉得它在使用另一个 .conf 文件。如何确定实际加载了哪个配置?

更新:我刚刚删除了 httpd.conf 和 apache 在重启后的行为相同,所以它肯定没有使用它!

小智 54

对于任何 *nix 应用程序,最简单的方法是查询二进制文件本身。在 httpd 的情况下,我想这个过程会是这样的:

$ whereis httpd
/usr/sbin/httpd
$ /usr/sbin/httpd -V
Server version: Apache/2.2.11 (Unix)
Server built:   Jun 17 2009 14:55:13
Server's Module Magic Number: 20051115:21
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/private/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"
Run Code Online (Sandbox Code Playgroud)

正如你所看到的 - 我的 OS X 说二进制文件,如果没有另外指示,将使用配置文件:/private/etc/apache2/httpd.conf

如果这没有帮助,也许 Christopher 的find建议是下一步。

  • 如果您通过 Server.app 使用 Apache,这将不起作用在这种情况下,您将需要@msanford http://serverfault.com/a/155114/187798 的答案中的进程列表,其中显示服务器.app 使用不同的配置文件启动 httpd,如下所示从我的安装(小牛队)`/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON` (2认同)

chr*_*lee 23

关于此,还有另一个服务器故障问题。如果您使用的是基于 debian 的服务器,您可以使用它apache2ctl来确定正在使用哪个配置文件:

apache2ctl -V
Run Code Online (Sandbox Code Playgroud)

更多关于这个:

如何找出运行时使用的 httpd.conf apache


msa*_*ord 13

尝试

ps ax | grep httpd
Run Code Online (Sandbox Code Playgroud)

你应该(可能)得到类似的输出

1633   ??  Ss     0:00.21 /usr/sbin/httpd -f /etc/httpd.conf
Run Code Online (Sandbox Code Playgroud)

此外,您究竟是如何重新启动服务器的?只是好奇,以防万一你实际上没有重新阅读配置文件。