Apache kann nicht neu geladen werden ... Gibt es ein Protokoll, in dem ich nach Details suchen kann?


12

Ich habe einen Webserver, zu dem ich gerade eine Site hinzufüge.

Nachdem a2ensiteich gelaufen bin, bin ich gelaufen service apache2 reloadund habe folgendes bekommen:

[FAIL] Neuladen der Webserverkonfiguration: apache2 fehlgeschlagen!

Gibt es eine Protokolldatei, in der ich weitere Details finden kann?

Antworten:


9

httpdMit dem -VSchalter können Sie sehen, wo konfiguriert wurde, um nach Konfigurationsdateien zu suchen :

$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:31:42
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
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_SYSVSEM_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="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

Sie können den Befehl auch verwenden, um lsofzu sehen, auf welche Dateien ein Unix-Prozess zugreift. Meine Version von httpdverwendet den Lager-Port 80, also ändern Sie den 80 in 8443 in Ihrem Fall!

$ netstat -tapn|grep ::80
tcp        0      0 :::80                       :::*                        LISTEN      5338/httpd     

Sie können jetzt ausführen lsof, um herauszufinden, wohin die Protokolldateien geschrieben werden:

$ lsof -p 5338|grep log
httpd   5338 root  mem    REG  253,0    10440   3141 /usr/lib64/httpd/modules/mod_logio.so
httpd   5338 root  mem    REG  253,0    27200   3139 /usr/lib64/httpd/modules/mod_log_config.so
httpd   5338 root    2w   REG  253,0     2014 395029 /var/log/httpd/error_log
httpd   5338 root    7w   REG  253,0     4140 394789 /var/log/httpd/access_log

Sie sollten in der Lage sein, den Speicherort access_logder Konfigurationsdateien sowie die Konfigurationsdateien zu ermitteln und diese zu durchsuchen, um die Anweisungen "Directory" und "Location" zu ermitteln. Diese geben an, welche lokalen Verzeichnisse verwendet werden sollen, wenn Apache mitteilt, welche Dateien bereitgestellt werden sollen.

Was jetzt?

Ich würde dann das durchsehen access_log, um sicherzustellen, dass es dort Einträge gibt, die Zugriffen gegen den Server entsprechen. Was ich damit meine, ist, wenn ich auf dem Server browse, http://www.somedom.com/somefiledass dieser Zugriff in der folgenden access_logDatei aufgezeichnet wird :

192.168.1.110 - - [17/Jul/2013:14:39:50 -0400] "GET /somefile HTTP/1.1" 200 4303 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5
37.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"

Wo sind die Akten?

Sie können das obige Wissen, das wir erworben haben, wie folgt anwenden:

Diese Teile von httpd -Vverraten uns Apaches Wurzel:

-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

Also haben wir die Hauptkonfigurationsdatei kennen , ist hier: /etc/httpd/conf/httpd.conf. Sehen Sie sich diese Datei für diese Zeilen an:

$ grep -E "DocumentRoot|Directory \"|^Include" /etc/httpd/conf/httpd.conf |grep -v "^#"
Include conf.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
<Directory "/var/www/icons">
<Directory "/var/www/cgi-bin">
    <Directory "/var/www/error">

Daher weiß ich jetzt, dass diese Verzeichnisse potenzielle Quellen für die Datei sind, die wir im Internet gesehen haben access_log. Das DocumentRootund Directoriesich würde für die Datei durchsehen, somefile. Wenn es sich nicht an einem dieser Orte befindet, würde ich mich als nächstes auf das Includeoben in der grepAusgabe erwähnte Verzeichnis konzentrieren /etc/httpd/conf.d/*.conf.

Bei diesen Dateien handelt es sich um zusätzliche Konfigurationen, die Apache verwendet, sodass Sie die Schritte mit dem Befehl wiederholen müssen grep, um auch diese Dateien zu durchsuchen.


14

Wenn Sie die Protokolldatei nicht finden können oder die Protokolldatei leer ist, können Sie den Apache-Konfigurationstest ausführen, der alle Probleme mit Konfigurationsdateien ausgibt:

apachectl configtest

2

Laufen service apache2 restart. Es wird eine Fehlermeldung angezeigt (normalerweise führt der Dienst einen Konfigurationstest durch, bevor Apache gestoppt und gestartet wird).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.