So aktualisieren Sie die Nginx-Version reibungslos und sicher

王林
Freigeben: 2021-02-03 10:52:11
nach vorne
3189 Leute haben es durchsucht

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`
Nach dem Login kopieren

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
Nach dem Login kopieren

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`
Nach dem Login kopieren

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`
Nach dem Login kopieren

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`
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!