Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So aktualisieren Sie die Nginx-Version reibungslos und sicher

So aktualisieren Sie die Nginx-Version reibungslos und sicher

王林
王林nach vorne
2021-02-03 10:52:113145Durchsuche

So aktualisieren Sie die Nginx-Version reibungslos und sicher

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.

So aktualisieren Sie die Nginx-Version reibungslos und sicher

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.

So aktualisieren Sie die Nginx-Version reibungslos und sicher

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.

So aktualisieren Sie die Nginx-Version reibungslos und sicher

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.

So aktualisieren Sie die Nginx-Version reibungslos und sicher

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Nginx-SchnellstartNächster Artikel:Nginx-Schnellstart