Como posso saber qual arquivo de configuração o Apache está usando?

36

Estou tentando configurar hosts virtuais no Mac OS X. Modifiquei o httpd.conf e reiniciei o servidor, mas não tive sorte em fazê-lo funcionar. Além disso, percebo que ele não está servindo arquivos no DocumentRoot mencionado em httpd.conf (Libraries / WebServer / Documents), mas em um diretório diferente (/ usr / local / apache2 / htdocs). Não vejo essa pasta mencionada em nenhum lugar no httpd.conf. Além disso, o PHP funciona, mas a linha "LoadModule php5_module" está comentada. Isso me faz pensar que está usando outro arquivo .conf. Como posso descobrir qual configuração está realmente sendo carregada?

Atualização: Acabei de excluir que o httpd.conf e o apache se comportam da mesma maneira após a reinicialização, por isso definitivamente não estavam sendo usados!

Claudiu
fonte

Respostas:

45

Com qualquer aplicativo * nix, o método mais fácil é consultar o próprio binário. No caso do httpd, eu imaginaria que o processo seria algo assim:

$ 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 você pode ver - o meu OS X diz que o binário, se não for indicado de outra forma, usará o arquivo de configuração: /private/etc/apache2/httpd.conf

Se isso não ajudar, talvez a sugestão de Christopher de encontrar seja o próximo passo.

Zayne S Halsall
fonte
2
Isso não funcionará se você estiver usando o Apache através do Server.app. Nesse caso, você precisará da lista de processos na resposta de @msanford serverfault.com/a/155114/187798, que mostra que o Server.app inicia o httpd com um arquivo de configuração diferente, como mostrado aqui da minha instalação (Mavericks)/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON
Jason S
também não funciona com o uso do apache instalado via macports - responder por msandord funciona para mim!
pgee70
10

Experimentar

ps ax | grep httpd

e você deve (pode) obter saída como

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

Além disso, como exatamente você está reiniciando o servidor? Apenas curioso, caso você de alguma forma não esteja realmente relendo o arquivo de configuração.

msanford
fonte
hm não tem a -fbandeira #
Claudiu 26/06
1
+1 Como esta é a única resposta que funciona para todos os casos, isto é, se você estiver configurando Apache sozinho ou se você estiver usando Apache via Server.app
Jason S
2

Como algumas configurações usam o aplicativo Server, brew ou o que for, e porque os liners FTW:

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

Este comando faz o seguinte:

  • Encontre um processo httpd ativo
  • Informações de configuração de saída
  • Grep o arquivo de configuração

Testado em Sierra & El Capitan

Creaforge
fonte
O $é importante (não é o prompt da linha de comando neste caso). Se converte a declaração em parens em um comando, para o qual passamos a -Vbandeira. Deixar de fora resulta em: "erro de sintaxe próximo ao token inesperado` -V '".
Tom Auger
0

Primeiro, verifique qual é o script de inicialização do Apache. Para o macOS, deve ser / Library / LaunchDaemons. Isso pode incluir um diretório de trabalho ou informações semelhantes.

Você também pode depurar o próprio processo em execução com o dtruss. Você pode se conectar ao processo em execução usando dtruss -p <pid>. Então, se você o HUP, provavelmente poderá examinar a saída para ver de onde ela está tirando sua configuração. Como alternativa, basta iniciar o Apache chamando o dtruss diretamente com dtruss start_apache_command.

Você sempre pode fazer uma pesquisa em todo o sistema pelo httpd.conf find / -name httpd.conf.

Christopher Karel
fonte