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?
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.
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.
Antworten:
sollte mit dem Befehl möglich sein
hoffentlich hilft das
quelle
anderer Weg ist:
quelle
Machen
Überprüfen Sie diesen Link für weitere Informationen: http://www.electrictoolbox.com/article/apache/restart-apache/
quelle
apachectl 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.
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 -k
als Befehl empfiehlt und für systemd der Befehl durch ersetzt wirdhttpd -k
apachectl -k graceful
oderhttpd -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
oderhttpd -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
quelle
httpd -k graceful
nurhttpd -k restart
:httpd /?
=>-k restart : tell running Apache to do a graceful restart