Wie kann man den Webserver Apache neu starten unter Debian / Ubuntu Linux oder ähnlichen Unix-basierten Betriebssystemen? Apache ist nach wie vor einer der meistgenutzten Webserver weltweit – und früher oder später steht jeder Admin vor der Frage, wie man ihn sauber neu startet, stoppt oder nach einer Konfigurationsänderung wieder hochfährt.
Auf modernen Linux-Systemen übernimmt systemd die Verwaltung von Diensten. Der zentrale Befehl dafür ist systemctl. Ältere Anleitungen verweisen oft noch auf /etc/init.d/ oder den service-Befehl – beides funktioniert zwar noch (systemd leitet die Aufrufe intern um), ist aber nicht mehr der empfohlene Weg.
Bevor Apache neu gestartet wird, sollte die Konfiguration auf Syntaxfehler geprüft werden. Ein Tippfehler in einer .conf-Datei kann dazu führen, dass Apache nach dem Neustart gar nicht mehr hochkommt – und die Webseite offline ist.
sudo apachectl configtest
Nur wenn die Ausgabe Syntax OK bestätigt, sollte der Neustart erfolgen.
sudo systemctl restart apache2
Alle aktiven Verbindungen werden sofort beendet, der Prozess komplett gestoppt und neu gestartet. Für Konfigurationsänderungen an Modulen, Ports oder grundlegenden Servereinstellungen ist das der richtige Weg.
sudo systemctl reload apache2
Apache liest die Konfiguration neu ein, ohne den Dienst zu unterbrechen. Laufende Verbindungen werden zu Ende bedient. Das ist die bessere Wahl nach Änderungen an VirtualHosts, .htaccess-Regeln oder SSL-Zertifikaten – also in den meisten Alltagsfällen.
sudo apachectl graceful
Funktioniert ähnlich wie reload, nutzt aber Apaches eigenen Mechanismus: Laufende Kindprozesse bearbeiten ihre aktuellen Requests noch fertig, neue Kindprozesse starten bereits mit der neuen Konfiguration. Besonders nützlich auf Produktivservern mit hoher Last.
sudo systemctl stop apache2
Fährt den Webserver herunter. Alle Verbindungen werden beendet. Der Dienst bleibt gestoppt, bis er manuell oder durch einen Reboot wieder gestartet wird.
sudo systemctl start apache2
Startet einen gestoppten Apache-Dienst. Falls der Dienst bereits läuft, passiert nichts – im Gegensatz zu restart wird kein Neustart ausgelöst.
sudo systemctl status apache2
Zeigt an, ob Apache läuft, seit wann, und gibt die letzten Logzeilen aus. Hilfreich zur schnellen Diagnose, wenn etwas nicht funktioniert.
Auf den meisten Installationen startet Apache automatisch beim Booten. Falls das nicht der Fall ist – oder wenn man es gezielt verhindern will:
sudo systemctl enable apache2
sudo systemctl disable apache2
enable richtet den Autostart ein, disable entfernt ihn. Der aktuelle Zustand des Dienstes wird davon nicht berührt.
Auf Red-Hat-basierten Systemen heißt der Apache-Dienst nicht apache2, sondern httpd. Die systemctl-Befehle sind identisch, nur der Dienstname ändert sich:
sudo systemctl restart httpd
sudo systemctl reload httpd
sudo systemctl stop httpd
sudo systemctl start httpd
sudo systemctl status httpd
Das klassische CentOS (bis Version 7) hat im Juni 2024 sein End of Life erreicht. Nachfolger sind Rocky Linux und AlmaLinux als Community-Distributionen sowie CentOS Stream als Rolling-Release-Variante.
Wer regelmäßig auf verschiedenen Systemen arbeitet, kann apachectl als einheitliche Schnittstelle nutzen. Die Befehle funktionieren auf Debian, Ubuntu, RHEL-Derivaten und den meisten Unix-Systemen gleich:
sudo apachectl start
sudo apachectl stop
sudo apachectl restart
sudo apachectl graceful
sudo apachectl configtest
Apache startet nach dem Restart nicht? Meistens liegt es an einem Syntaxfehler in der Konfiguration. apachectl configtest zeigt den Fehler mit Dateiname und Zeilennummer an.
Port bereits belegt? Wenn eine andere Anwendung Port 80 oder 443 blockiert, schlägt der Start fehl. sudo ss -tlnp | grep ':80' zeigt, welcher Prozess den Port belegt.
Änderungen greifen nicht? Bei Änderungen an der php.ini oder an Apache-Modulen reicht ein reload nicht aus – hier braucht es einen vollständigen restart.
| Aufgabe | Debian / Ubuntu | RHEL / Rocky / Alma |
|---|---|---|
| Neustart | sudo systemctl restart apache2 | sudo systemctl restart httpd |
| Reload | sudo systemctl reload apache2 | sudo systemctl reload httpd |
| Stoppen | sudo systemctl stop apache2 | sudo systemctl stop httpd |
| Starten | sudo systemctl start apache2 | sudo systemctl start httpd |
| Status | sudo systemctl status apache2 | sudo systemctl status httpd |
| Konfig testen | sudo apachectl configtest | sudo apachectl configtest |
| Graceful | sudo apachectl graceful | sudo apachectl graceful |