it-swarm.com.de

Wie kann ich die vollständige httpd-Konfiguration anzeigen?

Ich versuche herauszufinden, was die vollständige Konfiguration eines httpd-Setups ist.

Alle Konfigurationsdateien sind auf verschiedene Dateien verteilt (/etc/httpd/conf.d, httpd.conf, verschiedene Mod-Konfigurationen)

Gibt es eine Möglichkeit, die endgültige httpd-Konfiguration aufzulisten?
Wie die gesamte laufende Setup-Konfiguration in einer einzigen Datei?

64
Gnafu

Wie von arco444 angemerkt, können Sie apachectl -S, um eine Übersicht der VirtualHosts anzuzeigen, die derzeit in den Konfigurationen ausgeführt werden, und apachectl -M zum Anzeigen aller derzeit geladenen Module - Mir ist kein Tool bekannt, mit dem die ausführliche Ausgabe aller geparsten Konfigurationen (und die Reihenfolge, in der sie geparst wurden) beim Start von httpd angezeigt werden kann allgemeine Struktur der httpd-Konfigurationsdateien :

Besonders wichtig für Ihre Frage: Die 'Haupt'-Apache-Konfigurationsdatei befindet sich in /etc/httpd/conf/httpd.conf (in der Region von Zeile 221 bei einer standardmäßigen httpd-Installation von den in CentOS 6 enthaltenen Repos, die Sie basierend auf Ihren Post-Tags verwenden) und die 'zusätzlichen' Konfigurationsdateien befinden sich in /etc/httpd/conf.d und müssen explizit in der Hauptkonfigurationsdatei enthalten sein. Wenn Sie zum Beispiel das httpd.conf Datei für den Begriff 'Include', finden Sie die Zeile Include conf.d/*.conf was beinhaltet alle Dateien der Endung .conf im Unterverzeichnis conf.d - in alphabetischer Reihenfolge, daher sollten Sie sich, wenn möglich, mit der Bedeutung des Parsens von Konfigurationsdateien vertraut machen.

Wenn Sie einen Shell-basierten Texteditor wie vim verwenden, empfehle ich Ihnen, die Zeilennummerierung und die Syntaxhervorhebung standardmäßig zu aktivieren, damit sich so lange Konfigurationsdateien leichter selbst analysieren und navigieren lassen - im Fall von vim erstellen Sie dazu eine Datei in Ihrem Home-Verzeichnis mit dem Namen .vimrc (oder an ein vorhandenes anhängen) und folgende Zeilen hinzufügen:

set nu
syntax on
38
BE77Y

Verwenden Sie dazu bitte mod_info: http://httpd.Apache.org/docs/2.2/mod/mod_info.html

der einzige Nachteil ist, dass es Ihnen nicht viel hilft, wenn Sie es zum Wiederherstellen einer gelöschten Konfiguration benötigen und das Modul noch nicht geladen haben

10
r_3

Wie in der Apache HTTP Server Documentation beschrieben

Wenn die Konfigurationsdefinition -DDUMP_CONFIG gesetzt ist, speichert mod_info die vorab analysierte Konfiguration während des Serverstarts auf stdout.

httpd -DDUMP_CONFIG -k start

DUMP_CONFIG erfordert mod_infoaktiviert: a2enmod info!

In Ubuntu machen Sie folgendes

Sudo Apache2ctl -DDUMP_CONFIG

Wenn Sie die Zeilennummern entfernen möchten, tun Sie dies

Sudo Apache2ctl -DDUMP_CONFIG | grep -vE "^[ ]*#[ ]*[0-9]+:$"

oder in eine Datei umleiten

Sudo Apache2ctl -DDUMP_CONFIG | grep -vE "^[ ]*#[ ]*[0-9]+:$" > /path/to/dump.conf

Bekannte Einschränkungen

mod_info liefert seine Informationen durch Lesen der analysierten Konfiguration, anstatt die ursprüngliche Konfigurationsdatei zu lesen. Aufgrund der Art und Weise, wie der analysierte Konfigurationsbaum erstellt wird, gibt es einige Einschränkungen:

  • Direktiven, die sofort ausgeführt werden, anstatt in der analysierten Konfiguration gespeichert zu werden, werden nicht aufgelistet. Dazu gehören ServerRoot, LoadModule und LoadFile.
  • Anweisungen, die die Konfigurationsdatei selbst steuern, z. B. Include, und die nicht aufgelistet sind, sind jedoch die enthaltenen Konfigurationsanweisungen.
  • Kommentare werden nicht aufgelistet. (Dies kann als Merkmal angesehen werden.)
  • Konfigurationsanweisungen aus .htaccess-Dateien werden nicht aufgelistet (da sie nicht Teil der permanenten Serverkonfiguration sind).
  • Container-Direktiven, wie sie normalerweise aufgelistet sind, aber mod_info kann die Zeilennummer für den Abschluss nicht herausfinden.
  • Anweisungen, die von Modulen von Drittanbietern wie mod_Perl generiert wurden, werden möglicherweise nicht aufgelistet.
9
wolfrevo