Apache wird nach dem Hinzufügen der VirtualHost-Konfigurationsdatei nicht neu gestartet. Warum nicht?

14

Auf einem CentOS 7Server erhalte ich die folgende Fehlermeldung, wenn ich sudo apachectl restartnach dem Hinzufügen einer Include-Datei am Ende von Folgendes tippe httpd.conf:

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

Wenn ich dann tippe sudo systemctl status httpd.service -l, ist das Ergebnis:

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 20:10:37 EST; 2min 15s ago
  Process: 2101 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 2099 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 2099 (code=exited, status=1/FAILURE)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 20:10:37 ip-address httpd[2099]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Dec 23 20:10:37 ip-address systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 20:10:37 ip-address systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 20:10:37 ip-address systemd[1]: Unit httpd.service entered failed state.

Ich kann apacheneu starten, wenn ich die include-Direktive auskommentiere , und ich kann den Fehler erneut erstellen, indem ich die include-Direktive auskommentiere . Wie kann ich apacheanfangen, den Inhalt der Include-Datei richtig zu verwenden?

Die Linie am unteren Ende , httpd.confdie ausgelöst wird der Fehler ist: IncludeOptional sites-enabled/*.conf. Die einzige .confDatei im sites-enabledOrdner ist mydomain.com.conf, die den folgenden Inhalt hat:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
    ErrorLog /var/www/mydomain.com/error.log
    CustomLog /var/www/mydomain.com/requests.log combined
</VirtualHost>

Das httpd.confist dasselbe wie das, was vorinstalliert ist, mit httpdAusnahme der obigen Einzeilen-Include-Direktive. Ich weiß es, weil ich es getan habe sudo yum remove httpd mod_sslund sudo yum install httpd mod_sslgenau bevor ich diesen Fehler ausgelöst habe. Das Ganze httpd.confkann auf einer Filesharing-Site gelesen werden, indem Sie auf diesen Link klicken .

Ich bin auf dieses Problem gestoßen, als ich die Schritte in diesem Tutorial explizit ausgeführt habe .

Wenn ich die Include-Datei http/mydomain.comauskommentiere /var/www/html, wird der in DocumentRootdefinierte statische Inhalt erfolgreich bereitgestellt httpd.conf. Das Problem scheint von der VirtualHostAnweisung in der oben gezeigten Include-Datei zu herrühren. Um die Diagnose zu erleichtern, habe ich in EDIT # 3 unten Links zu allen .confDateien eingefügt, die in den drei include-Anweisungen in enthalten sind httpd.conf.

EDIT # 1

Wenn ich versuche, m32s Rat zu ändern /etc/hostname, um zu definieren mydomain.com, wird apacheimmer noch nicht neu gestartet , und die systemctl status httpd.serviceErgebnisse im Folgenden:

[sudo_user_account@server-ip-address ~]$ sudo systemctl status httpd.service -l
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 14:25:35 EST; 20s ago
  Process: 31993 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 31991 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 31991 (code=exited, status=1/FAILURE)
   Status: "Total requests: 1; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 14:25:35 hostname systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 14:25:35 hostname systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 14:25:35 hostname systemd[1]: Unit httpd.service entered failed state.  

EDIT # 2

Ich habe auch den Rat von eyoung100 versucht, den Inhalt meiner /etc/hostsDatei wie in der folgenden Abbildung definiert zu ändern. Es wird jedoch immer noch derselbe Fehler angezeigt, der in EDIT # 1 oben definiert wurde.

EDIT # 3

Auf Wunsch von DerekC lief ich sudo apachectl configtestund bekam:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Außerdem habe ich gemäß dem Vorschlag von GarethTheRed die include-Direktiven in httpd.conf untersucht . Es gibt drei include-Direktiven in httpd.conf . Ich habe die drei unten zusammen mit allen Dateien aufgelistet, die sich in den Ordnern der einzelnen Direktiven befinden. Dies sind alle Standarddateien .conf, die mit installiert werden httpd. Ich habe noch keine davon geändert. Sie können jede der .confDateien auf einer Filesharing-Site anzeigen, indem Sie auf die folgenden Links klicken:

Include conf.modules.d/*.confverweist auf die folgenden Dateien im conf.modules.dVerzeichnis: 00-base.conf
00-dav.conf
00-lua.conf
00-mpm.conf
00-proxy.conf
00-ssl.conf
00-systemd.conf
01-cgi.conf

IncludeOptional conf.d/*.confverweist auf die folgenden Dateien im conf.dVerzeichnis: autoindex.conf
ssl.conf
userdir.conf
welcome.conf
Es gibt auch eine README-Datei, die ich hier auslasse.

Darüber hinaus wurden die IncludeOptional sites-enabled/*.confRichtlinie und ihr Inhalt im OP oben ausführlich beschrieben.

Entspricht eine dieser Include-Dateien einem Konflikt mit den VirtualHostEinstellungen in mydomain.com.conf?

EDIT # 4

Gemäß dem Vorschlag von garethTheRed bin ich in mydomain.com.confdas conf.dVerzeichnis gewechselt und habe dann angefangen, Zeilen mydomain.com.confnacheinander zu kommentieren, httpdbis der Neustart möglich war. Ich fing dann an, Zeilen nicht zu kommentieren, um zu sehen, wie viele Zeilen noch übrig sind und httpdnoch neu gestartet werden müssen . Ich konnte httpdneu starten, habe aber systemctl status httpd.service -lweiterhin die gleiche Warnung ausgegeben:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message

Die VirtualHostSyntax, mit httpdder gestartet werden kann (obwohl die obige Warnung weiterhin generiert wird), lautet wie folgt:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>  

Beachten Sie, dass ich die folgenden Zeilen weglassen musste, deren Vorhandensein die Warnung in eine vollständige Unfähigkeit zum Starten von http eskaliert:

# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined

Außerdem lief ich sudo journalctl -xelu httpdund das Terminal antwortete, indem ich Folgendes viele Male wiederholte:

-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:43 server-ip-address systemd[1]: Stopped The Apache HTTP Server.
-- Subject: Unit httpd.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:48 server-ip-address systemd[1]: Starting The Apache HTTP Server...
-- Subject: Unit httpd.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has begun starting up.
Dec 24 17:48:48 server-ip-address httpd[10364]: AH00558: httpd: Could not reliably d
Dec 24 17:48:48 server-ip-address systemd[1]: Started The Apache HTTP Server.
-- Subject: Unit httpd.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished starting up.
-- 
-- The start-up result is done.
lines 887-909/909 (END)

Hinweis: Die obigen Ergebnisse bleiben gleich, unabhängig davon, ob ich die Hostdatei von eyoung100 oder die Hostdatei von m32 verwende. Damit diese Frage beantwortet wird, sollte ich in der Lage sein, Protokolldateien zu erstellen und auch die Warnung des Servernamens zu vermeiden. Ansonsten befürchte ich, dass nachfolgende Schritte zur Konfiguration von httpd zu anhaltenden Fehlern führen könnten.

CodeMed
quelle
1
Welcher genaue "nebulöse" Fehler tritt auf, wenn Sie eine ServerNameDirektive hinzufügen ? Fügen Sie es Ihrer Frage hinzu.
Wurtel
1
Was ist die Ausgabe von apachectl configtest?
DerekC
Gibt es IncludeOptionalam Ende der Originaldatei eine httpd.conf? Ich glaube, es gibt eine Standardinstallation. Das Problem kann sein, dass Sie das Extra IncludeOptionalam Ende hinzufügen, wodurch apachedie enthaltene Konfigurationsdatei zweimal gelesen werden muss und folglich ein Fehler auftritt.
garethTheRed
Zunächst müssen Sie Ihr Verzeichnis mydomain.com.confauf /etc/httpd/conf.d(wo sich alle anderen befinden) verschieben und löschen /etc/httpd/sites-enabled(das ist eine Debian / Ubuntu-Sache) und das, was IncludeOptionalSie hinzugefügt haben httpd.conf. Sie können die AH00558Nachricht vorerst ignorieren, da sie nicht aufhört apache. Entfernen Sie als Nächstes eine Zeile aus Ihrer confDatei, bis Sie den Täter gefunden haben (oder beginnen Sie mit einer leeren Zeile und stellen Sie jeweils eine Zeile wieder her).
GarethTheRed
1
@garethTheRed und andere Nutzer von Google müssen IncludeOptional sites-enabled / *. conf nicht entfernen. Das war ein roter Hering. Das eigentliche Problem waren die Protokolldateien, auf die garethTheRed unten hingewiesen hat. Ich folgte dem gleichen Tutorial wie das OP und hatte das gleiche Problem. Das Entfernen der Protokolldateizeilen aus der Konfigurationsdatei des virtuellen Hosts hat dieses Problem behoben.
Louise Eggleton

Antworten:

19

Die Protokolle verursachen die Fehler, da apachenicht in das Stammverzeichnis Ihrer Website geschrieben werden kann. Selbst wenn Sie die Dateiberechtigungen korrigieren würden, würden Sie dennoch von SELinux blockiert. was nur erlaubt apache, Protokolle zu schreiben /var/log/httpd. Die einfachste Lösung wäre, Ihre Website so zu ändern, dass sie sich in diesem Verzeichnis anmeldet - möglicherweise mit einem Dateinamen, der den Namen der Website enthält, um ihn von anderen Protokollen zu unterscheiden.

ErrorLog /var/log/httpd/mydomain_com_error.log
CustomLog /var/log/httpd/mydomain_com_requests.log combined

Verwenden Sie einfach Folgendes, um den Hostnamen des Servers festzulegen und die AH00558-Warnung zu entfernen:

hostnamectl set-hostname --static <FQDN of your machine>

z.B

hostnamectl set-hostname --static mydomain.com
garethTheRed
quelle
Ich bin auf einen anderen Fehler gestoßen, als ich weiter daran arbeite. Bist du bereit, mir auch dabei zu helfen? Hier ist der Link: unix.stackexchange.com/questions/176052/…
CodeMed
2

Ich habe diese Fehlermeldung erhalten, als ich vergessen habe, den Hostnamen für den Computer festzulegen. Hast du das getan?
Führen Sie diesen Befehl aus:

echo 'example.com' >> /etc/hostname  

Bestätigen Sie mit hostname

Bearbeiten:
Mit dem aktualisierten OP sieht es so aus, als ob Ihre Hosts-Datei nicht richtig eingerichtet ist. So sieht meiner aus;

127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
166.66.666.66 m32.me m32
::1     ip6-localhost ip6-loopback

Versuchen Sie es auf so etwas Einfaches einzustellen. Ersetzen Sie natürlich alle Informationen durch Ihre eigenen.
166.66.666.66mit Ihrer eigenen IP
m32.me and m32mit Ihrer Domain und Domain ohne TLD

m32
quelle
Das hat das Problem nicht behoben, ich erhalte immer noch den AH00558Fehler, wenn ich Ihre Beispiel-Hosts-Datei mit meinem ipund verwende mydomain.com mydomain.
CodeMed