Der beste Weg, um Apache zu beheben, der nicht startet?

8

Wir haben kürzlich einen Sicherungsserver erhalten, auf den alle unsere Daten gespiegelt werden können, falls der Primärserver ausfällt.

Ich habe alle Site-Daten über rsync aktualisiert und alle Apache-Konfigurationen und -Datenbanken aktualisiert. Beide Computer befinden sich unter Ubuntu 9 (9.04 auf dem primären Computer, 9.10 auf dem Backup).

An diesem Punkt scheint also größtenteils alles synchronisiert zu sein (ich muss noch die Benutzersynchronisierung herausfinden), und ich versuche, Apache zu starten. Ich bekomme

* Starting web server apache2                                       [fail]

Nichts anderes deutet darauf hin, wo das Problem liegen könnte.

Ich weiß, dass ich nicht genug Informationen habe, um eine Lösung von euch zu erwarten, also möchte ich nur wissen, wohin ich von hier aus gehen kann, um dieses Problem weiter zu untersuchen. Würde es dafür Fehlerprotokolle geben?

Vielen Dank!

Lowgain
quelle
Bisher habe ich Protokolle mit der Aufschrift "Keine solche Datei oder kein solches Verzeichnis: mod_fcgid" gefunden - dies ist ein guter Anfang
Lowgain

Antworten:

11

In bestimmten Fällen wird ein Protokolleintrag nicht auf die Festplatte geschrieben. Dies kann beispielsweise auftreten, wenn keine Protokolle vorhanden sind oder Apache aufgrund von Berechtigungsproblemen usw. einfach nicht in die Protokolldateien schreiben kann Der beste Weg, um einen Fehler zu diagnostizieren, ist die Verwendung von "strace":

[root@server ~]# strace -Ff apachectl start

Während die Ausgabe recht umfangreich sein wird, wenn Apache aus irgendeinem Grunde nicht anspringt, werden Sie eine write () am hinteren Ende mit dem Inhalt von dem, was würde in den Protokollen mit dem Grunde eingegeben wird es andernfalls (wenn es nicht die Protokollierung ist Warum im Fehlerprotokoll, wundern Sie sich nicht, wenn die Fehlermeldung "Protokoll kann nicht geöffnet werden" mit dem Pfad zum Protokoll enthält;).

Wenn Sie sich Ihren Kommentar zu mod_fcgid ansehen, würde ich vorschlagen, die Apache-Konfiguration zu überprüfen und Verweise auf mod_fcgid zu untersuchen. Es scheint, als würde versucht, eine wörtliche "mod_fcgid" -Datei zu öffnen, anstatt das Modul zu laden.

slm
quelle
13

httpd -t testet die Syntax Ihrer Konfigurationsdateien und spuckt alle Fehler an das Terminal aus.

Ignacio Vazquez-Abrams
quelle
2
Das war super hilfreich. +1
Tom Busby
Wenn das nicht funktioniert, versuchen Sie es apachectl -t.
Berry120
3

Alle Fehler sollten in die Fehlerprotokolle gedruckt werden (häufig unter / var / log / http / error_logs. Suchen Sie in Ihrer httpd.conf nach ErrorLog, um herauszufinden, wo.

Ich empfehle zwei Fenster. Führen Sie in einem Fenster ein 'tail -f error_log' aus und verwenden Sie ein anderes Fenster, um den Befehl 'apachectl restart' auszuführen. Nachdem Sie den Fehler gefunden haben, aktualisieren Sie Ihre Antwort hier mit der Fehlermeldung.

Stefan Lasiewski
quelle
Der erste Schritt zur Fehlerbehebung sollte immer in den Protokollen gelesen werden. Apache protokolliert fast jedes einzelne Ereignis, das es durchläuft. Daher sollten Sie voll von Daten sein, die Sie lesen können.
Phuzion
2

Ich hatte ein ähnliches Problem mit dem Debuggen von Apache-Servern unter Mac OS. Daher entschied ich mich, meine Erfahrungen zu teilen und anderen Zeit zu sparen. Ich fand Folgendes sehr hilfreich:

  1. Protokolle suchen:

apachectl -S | grep log

  1. In der Ausgabe finden Sie einige Protokolldateien, mit denen Sie nach dem Fehlerbeispiel suchen können:

tail -n 15 /var/log/apache2/ssl_engine.log

Falls es mehr als eine Protokolldatei gibt, verfolgen Sie diese weiter, bis Sie den Fehler finden, der dazu führt, dass Apache nicht gestartet wird

Talsibony
quelle
0

Wenn Ihr Apache nicht ausgeführt wird, überprüfen Sie Ihren Skype-Port. Meistens verwenden sowohl Skype als auch Apache Port 80. Dies bedeutet, dass Skype möglicherweise der Grund ist, warum Apache nicht gestartet werden kann. Stoppen Sie Skype, wenn es installiert ist.

Biffon Momanyi
quelle