¿Cómo puedo saber qué archivo de configuración está usando Apache?

36

Estoy tratando de configurar hosts virtuales en Mac OS X. He estado modificando httpd.conf y reiniciando el servidor, pero no he tenido la suerte de hacerlo funcionar. Además, noto que no está sirviendo archivos en DocumentRoot mencionado en httpd.conf (Libraries / WebServer / Documents), sino en un directorio diferente (/ usr / local / apache2 / htdocs). No veo esta carpeta mencionada en ninguna parte de httpd.conf. Además, PHP funciona, pero la línea "LoadModule php5_module" está comentada. Esto me hace pensar que está usando otro archivo .conf. ¿Cómo puedo averiguar qué configuración se está cargando realmente?

Actualización: acabo de eliminar que httpd.conf y apache se comportan igual después del reinicio, ¡así que definitivamente no lo estaba usando!

Claudiu
fuente

Respuestas:

45

Con cualquier aplicación * nix, el método más fácil es consultar el binario en sí. En el caso de httpd, me imagino que el proceso sería algo como esto:

$ 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"

Como puede ver, mi OS X dice que el binario, si no se indica lo contrario, usará el archivo de configuración: /private/etc/apache2/httpd.conf

Si eso no ayuda, quizás la sugerencia de Christopher de encontrar es el siguiente paso.

Zayne S Halsall
fuente
2
Esto no funcionará si está usando Apache a través de Server.app. En ese caso, necesitará la lista de procesos en la respuesta de @msanford serverfault.com/a/155114/187798 que muestra que Server.app inicia httpd con un archivo de configuración diferente como se muestra aquí desde mi instalación (Mavericks)/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON
Jason S
tampoco funciona cuando se usa apache instalado a través de macports: ¡la respuesta de msandord funciona para mí!
pgee70
10

Tratar

ps ax | grep httpd

y deberías (podría) obtener resultados como

1633   ??  Ss     0:00.21 /usr/sbin/httpd -f /etc/httpd.conf

Además, ¿cómo exactamente está reiniciando el servidor? Sólo por curiosidad, en caso de que por alguna razón no está en realidad volver a leer el archivo de configuración.

msanford
fuente
hm no tiene la -fbandera
Claudiu
1
+1 Como esta es la única respuesta que funciona para todos los casos, es si está configurando Apache usted mismo o si está usando Apache a través de Server.app
Jason S
2

Debido a que algunas configuraciones usan la aplicación del servidor, brew o lo que sea, y porque uno contiene FTW:

$(ps ax -o comm | grep -m 1 httpd) -V | grep SERVER_CONFIG_FILE

Este comando hace lo siguiente:

  • Encuentra un proceso httpd activo
  • Información de configuración de salida
  • Grep el archivo de configuración

Probado en Sierra y El Capitan

Creaforge
fuente
El $es importante (no es la línea de comandos en este caso). Si convierte la declaración en parens en un comando, al que le pasamos la -Vbandera. Dejarlo fuera da como resultado: "error de sintaxis cerca del token inesperado` -V '".
Tom Auger
0

Primero, verifique cuál es el script de inicio para Apache. Para macOS, debería ser / Library / LaunchDaemons. Eso podría incluir un directorio de trabajo o información similar.

También puede depurar el proceso en ejecución con dtruss. Puede conectarse al proceso en ejecución usando dtruss -p <pid>. Luego, si lo HUP, probablemente pueda examinar la salida para ver de dónde está tomando su configuración. Alternativamente, simplemente inicie Apache llamando a dtruss directamente con dtruss start_apache_command.

Siempre puede hacer una búsqueda en todo el sistema de httpd.conf con find / -name httpd.conf.

Christopher Karel
fuente