Frage Wie kann ich feststellen, welche Konfigurationsdatei Apache verwendet?


Ich versuche, virtuelle Hosts auf Mac OS X einzurichten. Ich habe httpd.conf geändert und den Server neu gestartet, aber ich hatte kein Glück dabei, es zum Laufen zu bringen. Außerdem stelle ich fest, dass es keine Dateien im DocumentRoot bereitstellt, die in httpd.conf (Libraries / WebServer / Documents) erwähnt werden, sondern in einem anderen Verzeichnis (/ usr / local / apache2 / htdocs). Ich sehe diesen Ordner nirgendwo in der httpd.conf. Außerdem funktioniert PHP, aber die Zeile "LoadModule php5_module" ist auskommentiert. Das lässt mich denken, dass es eine andere .conf-Datei verwendet. Wie kann ich herausfinden, welche Konfiguration gerade geladen wird?

Update: Ich habe gerade gelöscht, dass httpd.conf und Apache verhält sich das gleiche nach dem Neustart, so dass es definitiv nicht verwendet wurde!


34
2018-06-26 15:37


Ursprung




Antworten:


Mit jeder * nix-Anwendung besteht die einfachste Methode darin, die Binärdatei selbst abzufragen. Im Fall von httpd würde ich mir vorstellen, dass der Prozess in etwa so aussehen würde:

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

Wie Sie sehen können - mein OS X sagt, dass die Binärdatei, wenn nicht anders angegeben, die Konfigurationsdatei verwendet: /private/etc/apache2/httpd.conf

Wenn das nicht hilft, vielleicht Christophs Vorschlag von finden ist der nächste Schritt.


43
2018-06-26 17:58



Dies funktioniert nicht, wenn Sie Apache über die Server.app verwenden. In diesem Fall benötigen Sie die Prozessliste in der Antwort von @msanford serverfault.com/a/155114/187798 was zeigt, dass die Server.app startet httpd mit einer anderen Konfigurationsdatei wie hier von meiner Installation (Mavericks) /usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON - Jason S
funktioniert auch nicht mit Apache über Macports installiert - Antwort von msandord funktioniert für mich! - pgee70


Es gibt eine weitere Serverfehlerfrage bezüglich diese. Wenn Sie einen Debian-basierten Server verwenden, den Sie verwenden können apache2ctl um festzustellen, welche Konfigurationsdatei verwendet wird:

apache2ctl -V

Mehr dazu:

Wie finde ich heraus, welcher httpd.conf Apache zur Laufzeit verwendet wird?


15
2018-05-28 03:24



Dies half, besser als andere Antworten, danke! - Mārtiņš Briedis


Versuchen

ps ax | grep httpd

und Sie sollten (könnte) wie ausgegeben werden

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

Außerdem, wie genau starten Sie den Server neu? Nur neugierig, falls du es irgendwie nicht bist tatsächlich Erneutes Lesen der Konfigurationsdatei.


10
2018-06-26 15:45



hm es hat nicht die -fFahne drin - Claudiu
+1 Da dies die einzige Antwort ist, die für alle Fälle funktioniert, das heißt, wenn Sie Apache selbst konfigurieren oder wenn Sie Apache über Server.app verwenden - Jason S


Da einige Konfigurationen Server-App, Gebräu oder was auch immer verwenden, und weil ein Liner FTW:

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

Dieser Befehl macht folgendes:

  • Finden Sie einen aktiven httpd-Prozess
  • Konfigurationsinformationen ausgeben
  • Grep die Konfigurationsdatei

Getestet auf Sierra & El Capitan


1
2017-12-06 12:27





Überprüfen Sie zunächst, welches Startscript für Apache verwendet wird. Für Mac OS sollte es / Library / LaunchDaemons sein. Das könnte ein Arbeitsverzeichnis oder ähnliche Informationen enthalten.

Sie können den laufenden Prozess auch selbst mit dtruss debuggen. Sie können mit dem laufenden Prozess eine Verbindung herstellen dtruss -p <pid>. Dann, wenn Sie es HUPEN, können Sie wahrscheinlich über die Ausgabe poren, um zu sehen, wo es seine Konfiguration abgreift. Alternativ starten Sie Apache einfach durch direkten Aufruf von dtruss dtruss start_apache_command.

Sie können immer nur eine systemweite Suche nach httpd.conf mit durchführen find / -name httpd.conf.


0
2018-06-26 16:03