Come posso sapere quale file di configurazione sta utilizzando Apache?


36

Sto provando a configurare host virtuali su Mac OS X. Ho modificato httpd.conf e riavviato il server, ma non ho avuto fortuna nel farlo funzionare. Inoltre, noto che non serve file nel DocumentRoot menzionato in httpd.conf (Librerie / WebServer / Documenti), ma in una directory diversa (/ usr / local / apache2 / htdocs). Non vedo questa cartella menzionata da nessuna parte in httpd.conf. Inoltre, PHP funziona, ma la riga "LoadModule php5_module" è commentata. Questo mi fa pensare che stia usando un altro file .conf. Come posso capire quale configurazione viene effettivamente caricata?

Aggiornamento: ho appena eliminato che httpd.conf e apache si comportano allo stesso modo dopo il riavvio, quindi sicuramente non lo utilizzava!

Risposte:


45

Con qualsiasi applicazione * nix, il metodo più semplice è interrogare il binario stesso. Nel caso di httpd, immagino che il processo sarebbe qualcosa del genere:

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

Come puoi vedere - il mio OS X dice che il binario, se non indicato diversamente, utilizzerà il file di configurazione: /private/etc/apache2/httpd.conf

Se ciò non aiuta, forse il suggerimento di Christopher di trovare è il prossimo passo.


2
Questo non funzionerà se si utilizza Apache tramite Server.app In tal caso, sarà necessario l'elenco dei processi nella risposta da @msanford serverfault.com/a/155114/187798 che mostra che Server.app avvia httpd con un file di configurazione diverso, come mostrato qui dalla mia installazione (Mavericks)/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON
Jason S

inoltre non funziona quando si utilizza apache installato tramite macports - la risposta di msandord funziona per me!
pgee70,


10

Provare

ps ax | grep httpd

e dovresti (potresti) ottenere un output simile

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

Inoltre, come si riavvia esattamente il server? Solo per curiosità nel caso in cui in qualche modo non si è in realtà ri-leggere il file di configurazione.


hm non ha la -fbandiera dentro
Claudiu il

1
+1 Poiché questa è l'unica risposta che funziona per tutti i casi, vale a dire se stai configurando Apache tu stesso o se stai usando Apache tramite Server.app
Jason S

2

Poiché alcune configurazioni utilizzano l'app Server, la birra o qualsiasi altra cosa e perché una fodera FTW:

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

Questo comando effettua le seguenti operazioni:

  • Trova un processo httpd attivo
  • Informazioni sulla configurazione dell'output
  • Grep il file di configurazione

Testato su Sierra ed El Capitan


Il $è importante (non è la linea di prompt dei comandi in questo caso). Se converte l'istruzione in parentesi in un comando, al quale passiamo la -Vbandiera. Lasciandolo si ottiene: "errore di sintassi vicino al token imprevisto` -V '".
Tom Auger

0

Innanzitutto, controlla qual è lo script di avvio per Apache. Per macOS, dovrebbe essere / Library / LaunchDaemons. Ciò potrebbe includere una directory di lavoro o informazioni simili.

È inoltre possibile eseguire il debug del processo in esecuzione stesso con dtruss. È possibile connettersi al processo in esecuzione utilizzando dtruss -p <pid>. Quindi, se lo fai con HUP, puoi probabilmente esaminare l'output per vedere da dove sta prendendo la sua configurazione. In alternativa, basta avviare Apache chiamando dtruss direttamente con dtruss start_apache_command.

Puoi sempre fare una ricerca a livello di sistema per httpd.conf con find / -name httpd.conf.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.