Auf einem CentOS 7
Server erhalte ich die folgende Fehlermeldung, wenn ich sudo apachectl restart
nach 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 apache
neu starten, wenn ich die include-Direktive auskommentiere , und ich kann den Fehler erneut erstellen, indem ich die include-Direktive auskommentiere . Wie kann ich apache
anfangen, den Inhalt der Include-Datei richtig zu verwenden?
Die Linie am unteren Ende , httpd.conf
die ausgelöst wird der Fehler ist: IncludeOptional sites-enabled/*.conf
. Die einzige .conf
Datei im sites-enabled
Ordner 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.conf
ist dasselbe wie das, was vorinstalliert ist, mit httpd
Ausnahme der obigen Einzeilen-Include-Direktive. Ich weiß es, weil ich es getan habe sudo yum remove httpd mod_ssl
und sudo yum install httpd mod_ssl
genau bevor ich diesen Fehler ausgelöst habe. Das Ganze httpd.conf
kann 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.com
auskommentiere /var/www/html
, wird der in DocumentRoot
definierte statische Inhalt erfolgreich bereitgestellt httpd.conf
. Das Problem scheint von der VirtualHost
Anweisung in der oben gezeigten Include-Datei zu herrühren. Um die Diagnose zu erleichtern, habe ich in EDIT # 3 unten Links zu allen .conf
Dateien 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 apache
immer noch nicht neu gestartet , und die systemctl status httpd.service
Ergebnisse 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/hosts
Datei 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 configtest
und 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 .conf
Dateien auf einer Filesharing-Site anzeigen, indem Sie auf die folgenden Links klicken:
Include conf.modules.d/*.conf
verweist auf die folgenden Dateien im conf.modules.d
Verzeichnis:
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/*.conf
verweist auf die folgenden Dateien im conf.d
Verzeichnis:
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/*.conf
Richtlinie und ihr Inhalt im OP oben ausführlich beschrieben.
Entspricht eine dieser Include-Dateien einem Konflikt mit den VirtualHost
Einstellungen in mydomain.com.conf
?
EDIT # 4
Gemäß dem Vorschlag von garethTheRed bin ich in mydomain.com.conf
das conf.d
Verzeichnis gewechselt und habe dann angefangen, Zeilen mydomain.com.conf
nacheinander zu kommentieren, httpd
bis der Neustart möglich war. Ich fing dann an, Zeilen nicht zu kommentieren, um zu sehen, wie viele Zeilen noch übrig sind und httpd
noch neu gestartet werden müssen . Ich konnte httpd
neu starten, habe aber systemctl status httpd.service -l
weiterhin 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 VirtualHost
Syntax, mit httpd
der 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 httpd
und 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.
apachectl configtest
?
IncludeOptional
am Ende der Originaldatei eine httpd.conf
? Ich glaube, es gibt eine Standardinstallation. Das Problem kann sein, dass Sie das Extra IncludeOptional
am Ende hinzufügen, wodurch apache
die enthaltene Konfigurationsdatei zweimal gelesen werden muss und folglich ein Fehler auftritt.
mydomain.com.conf
auf /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 IncludeOptional
Sie hinzugefügt haben httpd.conf
. Sie können die AH00558
Nachricht vorerst ignorieren, da sie nicht aufhört apache
. Entfernen Sie als Nächstes eine Zeile aus Ihrer conf
Datei, bis Sie den Täter gefunden haben (oder beginnen Sie mit einer leeren Zeile und stellen Sie jeweils eine Zeile wieder her).
ServerName
Direktive hinzufügen ? Fügen Sie es Ihrer Frage hinzu.