Möglicherweise müssen Sie Apache® neu starten, wenn Sie möchten, dass Änderungen wirksam werden, oder wenn Sie die Ressourcennutzung von Apache wieder auf einen normalen Bereich bringen müssen. Manchmal kann Apache jedoch nicht neu gestartet werden. Dieser Artikel zeigt Ihnen, wie Sie Ihre Konfigurationseinstellungen überprüfen und Apache neu starten, wenn es fehlschlägt.
Hinweis :Bevor Sie die folgenden Anweisungen verwenden und Änderungen an Ihren Konfigurationsdateien vornehmen, empfehlen wir Ihnen, die vorhandenen Dateien zu sichern.
Überprüfen Sie die Syntax
Die Ursache des Fehlers kann einfach ein falsch geschriebenes Wort oder ein falscher Punkt (.) sein. Führen Sie den folgenden Befehl aus, um die Syntax zu überprüfen:
[user@server ~]$ httpd –S
Sie sollten die folgende Ausgabe sehen:
Syntax OK
Wenn Sie eine ähnliche Fehlermeldung wie in der folgenden Beispielausgabe erhalten, müssen Sie den Fehler beheben, bevor Sie versuchen, Apache neu zu starten:
Syntax error on line 51 of /etc/httpd/conf/httpd.conf:
Invalid command 'erverRoot', perhaps misspelled or defined by a module not included in the server configuration
Überprüfen Sie die Apache-Fehlerprotokolle
Wenn Sie diese Fehler beheben und Apache immer noch nicht neu startet, überprüfen Sie die Apache-Fehlerprotokolle. Die Verwendung von zwei Fenstern kann hilfreich sein. Verwenden Sie in einem Fenster den Befehl tail für das Fehlerprotokoll, indem Sie den folgenden Befehl ausführen:
tail –f /var/log/httpd/error_log
Versuchen Sie im anderen Fenster, Apache neu zu starten, indem Sie den folgenden Befehl ausführen:
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
Beobachten Sie das erste Fenster, während Sie Apache neu starten, um alle Fehler zu sehen, die in den Protokollen generiert werden.
Apache wird möglicherweise auch nicht neu gestartet, wenn ein anderer Dienst an den Port bindet, den Apache zu verwenden versucht, wie in der folgenden Ausgabe gezeigt:
Stopping httpd: [FAILED]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 2001:4801:7824:103:9ed:a5a8:3301:d53a for ServerName
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:443 has no VirtualHosts
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Diese Ausgabe zeigt, dass Apache nicht gestartet werden kann, da Port 80 bereits ein anderer Dienst zugewiesen ist.
Sie können entweder den Port ändern, dem Apache zugewiesen ist, oder prüfen, ob der andere Dienst, der diesem Port zugewiesen ist, auf Port 80 liegen soll. Führen Sie netstat
aus Befehl, um den anderen Dienst zu identifizieren, der diesen Port verwendet, wie im folgenden Beispiel gezeigt:
[user@server ~]$ sudo netstat –plnt
Die Ausgabe sollte ähnlich wie im folgenden Beispiel aussehen:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5272/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1581/master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5835/mysqld
tcp 0 0 :::80 :::* LISTEN 5272/sshd
tcp 0 0 ::1:25 :::* LISTEN 1581/master
In diesem Beispiel zeigt die Ausgabe, dass Secure Shell (SSH) auf Port 80 lauscht, was nicht der Fall sein sollte. Sie können diese Situation beheben, indem Sie die Konfigurationsdatei für SSH so ändern, dass sie auf einem anderen Port lauscht, und dann Apache neu starten.
Möglicherweise wird auch der folgende Fehler angezeigt:
httpd dead but subsys locked, but pid exists
Dieser Fehler bedeutet, dass Apache ausgeführt wurde, aber abgestürzt ist. Wenn Sie Apache starten, erstellt es eine Sperrdatei, um anzuzeigen, dass es ausgeführt wird. Die Sperrdatei verhindert, dass mehrere Instanzen ausgeführt werden. Wenn Sie Apache stoppen, wird diese Sperrdatei entfernt. Wenn es jedoch abstürzt, existiert die Sperrdatei immer noch, aber der Prozess nicht. Wenn Sie diesen Fehler sehen, müssen Sie die Sperrdatei entfernen, indem Sie die folgenden Befehle ausführen:
# For RHEL/CentOS based distributions
[user@server ~]$ sudo rm /var/lock/subsys/httpd
# For Ubuntu/Debian based distributions
[user@server ~]$ sudo rm /var/lock/subsys/apache2
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
Wenn Sie diese Befehle ausführen, wird die unbenutzte Sperrdatei entfernt, sodass Apache beim Neustart eine neue erstellen kann.
Verwenden Sie die Registerkarte „Feedback“, um Kommentare abzugeben oder Fragen zu stellen. Sie können auch ein Gespräch mit uns beginnen.