Lassen Sie uns zunächst einige von Nginx unterstützte Signale vorstellen. Nachfolgend sind mehrere Signale aufgeführt, die der Hauptprozess empfangen kann.
Hinweis: Der Arbeitsprozess kann auch einige Signale empfangen, sein Signalverarbeitungsmechanismus unterscheidet sich jedoch etwas vom Hauptprozess, und die vom Hauptprozess unterstützten Signale werden möglicherweise nicht vom Arbeitsprozess unterstützt.
Das Verhalten von Graceful Stop ist: (1) Der Prozess hört nicht mehr zu und akzeptiert keine neuen Anforderungen. (2) Der Prozess verarbeitet die verarbeitete Anforderung weiterhin, wird jedoch nach Abschluss der Verarbeitung zerstört.
1. Upgrade
Wenn Sie eine laufende Nginx-Instanz aktualisieren oder eine alte Version ersetzen möchten, weil Sie eine Version neu kompiliert haben, können Sie die folgende Reihe von Prozessen befolgen, um ein reibungsloses und sicheres Upgrade durchzuführen. Wenn Sie den Dienst direkt stoppen, hat dies natürlich keine großen Auswirkungen. Es ist bequemer und einfacher, die neue Version der Nginx-Instanz direkt zu stoppen und dann zu starten.
1. Ersetzen Sie den alten Nginx-Befehl durch die neue Version des Nginx-Befehlspfads.
Normalerweise ist es für kompiliertes und installiertes Nginx bequemer, Softlinks zu verwenden. Wenn der Installationspfad der alten Version beispielsweise /usr/local/nginx-1.12.0 lautet, erstellen Sie einen Softlink /usr/local/nginx dafür. Wenn es eine neue Version /usr/local/nginx-1.12 gibt .1, Sie müssen nur den Softlink ändern. Der Link /usr/local/nginx zeigt auf /usr/local/nginx-1.12.1. Auf diese Weise verweist /usr/local/nginx/sbin/nginx auf das neue Nginx-Programm, wenn sich der Softlink ändert.
2. Senden Sie das USR2-Signal an den Hauptprozess der alten Nginx-Instanz.
kill -USR2 `cat /var/run/nginx/nginx.pid`
Dieses Signal veranlasst den alten Hauptprozess von Nginx, ein Upgrade durchzuführen und das neue Nginx-Programm auszuführen. In Schritt 1 lautet der alte Nginx-Hauptprozess beispielsweise /usr/local/nginx/sbin/nginx, zeigt jedoch nach dem Senden des Signals auf /usr/local/nginx-1.12.0/sbin/nginx wird weiterhin ausgeführt. usr/local/nginx/sbin/nginx, aber da sich das Softlink-Ziel geändert hat, ist das zu diesem Zeitpunkt gestartete Nginx bereits das Programm /usr/local/nginx-1.12.1/sbin/nginx.
Nach dem Senden dieses Signals wird die alte PID-Datei in nginx.pid.oldbin umbenannt. Der alte Nginx-Hauptprozess-PID-Wert wird aufgezeichnet. pid. Was aufgezeichnet wird, ist der PID-Wert des neu gestarteten Nginx-Hauptprozesses.
[root@xuexi ~]# ls /var/run/nginx* /var/run/nginx.pid /var/run/nginx.pid.oldbin
3.graceful stoppt die alte Hauptprozessnummer. kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
Sendet ein QUIT-Signal an die alte Hauptprozessnummer, was dazu führt, dass der Hauptprozess ordnungsgemäß heruntergefahren wird. Dies führt dazu, dass der alte Hauptprozess und der alte Arbeitsprozess keine neuen Anforderungen mehr akzeptieren, sondern die Verarbeitung der verarbeiteten Anforderungen abschließen, dann zerstört werden und beendet werden.
4. Eine zuverlässigere Möglichkeit besteht darin, zunächst den Arbeitsprozess ordnungsgemäß zu stoppen. Nachdem die neue Version der Nginx-Instanz für kurze Zeit ordnungsgemäß funktioniert, wird der alte Hauptprozess ordnungsgemäß gestoppt.
kill -WINCH `cat /var/run/nginx/nginx.pid.oldbin` # a period of time goes, graceful stop old master nginx kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
Nachdem das WINCH-Signal an den alten Hauptprozess gesendet wurde, wird der alte Arbeitsprozess nach und nach beendet, der alte Hauptprozess bleibt jedoch ohne Beendigung bestehen.
Wenn Sie feststellen, dass die neue Version der Nginx-Instanz nicht zufrieden ist, können Sie das HUP-Signal direkt an die alte Hauptprozessnummer senden, sodass der alte Hauptprozess die Konfigurationsdatei erneut liest und die neue verzweigt Der Arbeitsprozess und dann der neue Hauptprozess. Wenn die Prozess-ID beendet wird (ein ordnungsgemäßer Stopp ist verfügbar), kann sie auf die alte Version der Nginx-Instanz wiederhergestellt werden.
2. Downgrade
Schritt 4 oben ist eigentlich der sicherste Weg zum Downgrade. Das heißt:
kill -HUP `cat /var/run/nginx/nginx.pid.oldbin` kill -QUIT `cat /var/run/nginx/nginx.pid`
Aber wenn die alte Hauptprozess-ID getötet wurde und derzeit nur die neue Version der Nginx-Instanz ausgeführt wird, müssen Sie sie nur über die Upgrade-Schritte herunterstufen. Nämlich:
kill -USR2 `cat /var/run/nginx/nginx.pid` kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
3. Ein-Klick-Upgrade-Skript
Das Folgende ist das Upgrade-Skript.
Verwandte Empfehlungen: Nginx-Tutorial
Das obige ist der detaillierte Inhalt vonSo aktualisieren Sie die Nginx-Version reibungslos und sicher. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!