So laden Sie die Apache-Konfiguration für eine Site neu, ohne Apache neu zu starten

141

Ich habe die Variable AllowOverride für eine meiner Websites im Site-fähigen Verzeichnis bearbeitet . Wie lade ich die neue Konfiguration neu, ohne Apache neu zu starten? Ist es möglich?

hpn
quelle
6
apache2 reload superuser.com/questions/192686/...
Christian Smorra
1
Anscheinend sind alle Antworten falsch.
Tigran

Antworten:

182

sollte mit dem Befehl möglich sein

sudo /etc/init.d/apache2 reload

hoffentlich hilft das

olly_uk
quelle
11
Ich bin mir ziemlich sicher, dass dies nicht korrekt ist. Im init.d-Skript eines Ubuntu-Servers bezieht sich reload auf den ordnungsgemäßen Neustart. Dies bedeutet, dass das Neuladen tatsächlich ein Neustart ist, aber ordnungsgemäß. Meiner Meinung nach kann Apache nicht neu geladen werden, ohne den Dienst zu unterbrechen.
SteffenNielsen
4
Arumans Antwort ist die richtige. Die meisten Apache-Init-Skripte senden SIGHUP, was 'apachectl restart' entspricht, was das OP ausdrücklich vermeiden wollte. Andere Apache-Init-Skripte senden SIGUSR1, was 'apachectl graceful' entspricht. Dies ist ebenfalls ein Neustart, wird jedoch eleganter ausgeführt und ist die Antwort von Aruman.
Bryan Larsen
@SteffenNielsen Ich denke, Sie haben Recht ... Einige können einen Load Balancer verwenden, den Neustart deaktivieren, neu starten, sich mit der DB-Versionierung befassen und dann dasselbe für den anderen Apache-Server / Container tun. K8s beseitigt einige dieser Probleme.
Ray Foss
1
Okay, hier ist was passiert, der Hauptprozess von apache2 ändert sich nicht, aber die Kinder oder Arbeiter (ich kenne die richtige Terminologie nicht) starten alle neu, diese PIDs ändern sich tatsächlich.
Elijah Lynn
1
Und ich denke, anmutig bedeutet in diesem Fall nur, dass diese Kinderarbeiter ihre Anfragen nicht mehr erfüllen, bevor sie getötet und wieder aufgetaucht werden.
Elijah Lynn
114

anderer Weg ist:

sudo service apache2 reload
felixmpa
quelle
28

Machen

apachectl -k graceful

Überprüfen Sie diesen Link für weitere Informationen: http://www.electrictoolbox.com/article/apache/restart-apache/

Aruman
quelle
18
Dadurch wird der Apache httpd-Daemon neu gestartet, den die speziell gestellte Frage vermeiden soll.
CS01
6
@ cs01 Wo lesen Sie, dass der httpd-Daemon neu gestartet wird? Alles, was ich auf dem Link in der Antwort gelesen habe, sagt Dinge wieapachectl graceful: Gracefully restarts the Apache daemon by sending it a SIGUSR1. If the daemon is not running, it is started. This differs from a normal restart in that currently open connections are not aborted.
Tyler Collier
5
Der erste Satz der Dokumentation, die Sie veröffentlicht haben, sagt genau das, nicht wahr?
CS01
3
@ cs01 Sie müssen verstehen, warum sie sich über einen Neustart Sorgen machen. Das ist nicht spezifiziert, aber ich vermute, sie wollen nicht, dass Verbindungen abgebrochen werden, sondern einen Neustart an sich. Ein ordnungsgemäßer Neustart reicht in den meisten Fällen aus. Wenn es langlebige Verbindungen gibt, ist dies möglicherweise ein Problem. Sie benötigen auch eine gute Definition des Neustarts, da der ordnungsgemäße Neustart lediglich den übergeordneten Prozess neu initialisiert, dh die PID ändert sich nicht, wobei bei einem normalen Neustart der gesamte Prozessbaum abgerissen und ein neuer erstellt wird. Daher ist die Antwort von Tyler Collier absolut legitim.
krad
7

Aktualisiert für Apache 2.4, für Nicht-Systemd (z. B. CentOS 6.x, Amazon Linux AMI) und für Systemd (z. B. CentOS 7.x):

Es gibt zwei Möglichkeiten, wie der Apache-Prozess die Konfiguration neu laden kann, je nachdem, was Sie mit den aktuellen Threads tun möchten. Entweder empfehlen Sie, im Leerlauf zu beenden oder sie direkt zu beenden.

Beachten Sie, dass Apache die Verwendung apachectl -kals Befehl empfiehlt und für systemd der Befehl durch ersetzt wirdhttpd -k

apachectl -k graceful oder httpd -k graceful

Apache rät seinen Threads, im Leerlauf zu beenden, und Apache lädt dann die Konfiguration neu (es wird nicht selbst beendet). Dies bedeutet, dass Statistiken nicht zurückgesetzt werden.

apachectl -k restart oder httpd -k restart

Dies ähnelt dem Stoppen, da der Prozess seine Threads beendet, aber dann die Konfigurationsdatei neu lädt, anstatt sich selbst zu beenden.

Quelle: https://httpd.apache.org/docs/2.4/stopping.html

jeffmcneill
quelle
Apache 2.4.39 (Win) unterstützt nicht httpd -k gracefulnur httpd -k restart: httpd /?=>-k restart : tell running Apache to do a graceful restart
Andreas Dietrich