Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So führen Sie ein reibungsloses Upgrade von Nginx-Betrieb und -Wartung durch

So führen Sie ein reibungsloses Upgrade von Nginx-Betrieb und -Wartung durch

王林
王林nach vorne
2023-05-15 17:34:061364Durchsuche

Sie können die alte ausführbare Nginx-Datei durch die neue ersetzen, ohne den Dienst zu unterbrechen – neue Anfragen gehen nicht verloren (beim Upgrade auf eine neue Version oder beim Hinzufügen/Entfernen von Servermodulen). (Empfohlenes Lernen: Nginx-Betrieb und -Wartung)

Verwenden Sie zunächst das neue ausführbare Programm, um das alte zu ersetzen (am besten erstellen Sie ein Backup) und senden Sie dann das USR2-Signal (kill-USR2pid) an den Hauptprozess.

Der Hauptprozess benennt seine .pid-Datei in .oldbin um (zum Beispiel: /usr/local/nginx/logs/nginx.pid.oldbin), führt dann das neue ausführbare Programm aus und startet nacheinander den neuen Hauptprozess und die neue Arbeit Prozess:

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3313433126nobody0.01368kqreadnginx:workerprocess(nginx)

​3313533126nobody0.01380kqreadnginx:workerprocess(nginx)

​3313633126nobody0.01368kqreadnginx:workerprocess(nginx)

​3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

Zu diesem Zeitpunkt werden zwei Nginx-Instanzen gleichzeitig ausgeführt und eingehende Anfragen gemeinsam verarbeiten. Um die alte Instanz auslaufen zu lassen, müssen Sie das WINCH-Signal an den alten Masterprozess senden. Anschließend werden dessen Arbeitsprozesse ordnungsgemäß heruntergefahren:

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

3313533126nobody0.01380kqreadnginx:workerprocessisshuttingdown(nginx)

​3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

Nach einer Weile verarbeitet der alte Arbeitsprozess alle verbundenen Anfragen und wird dann beendet, sodass nur noch der neue Arbeitsprozess die eingehenden Anfragen bearbeiten muss:

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

Da der alte Server zu diesem Zeitpunkt den Socket, den er überwacht, noch nicht geschlossen hat, können Sie den alten Server dennoch wiederherstellen, indem Sie die folgenden Schritte ausführen:

Senden Sie ein HUP-Signal an den alten Masterprozess – dieser startet seinen Arbeitsprozess, ohne die Konfigurationsdatei neu zu laden

Senden Sie das QUIT-Signal an den neuen Hauptprozess und bitten Sie ihn, seinen Arbeitsprozess ruhig zu beenden

Senden Sie ein TERM-Signal an den neuen Hauptprozess, um dessen Beendigung zu erzwingen

Wenn der neue Arbeitsprozess aus irgendeinem Grund nicht beendet werden kann, senden Sie ihm ein KILL-Signal

Nachdem der neue Hauptprozess beendet wurde, entfernt der alte Hauptprozess das .oldbin-Präfix und stellt es in seiner .pid-Datei wieder her. Auf diese Weise wird alles auf den Stand vor dem Upgrade zurückgesetzt.

Wenn der Upgrade-Versuch erfolgreich ist und Sie auch den neuen Server behalten möchten, senden Sie ein QUIT-Signal an den alten Hauptprozess, um ihn zu beenden und nur den neuen Server laufen zu lassen:

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​362641root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

Das obige ist der detaillierte Inhalt vonSo führen Sie ein reibungsloses Upgrade von Nginx-Betrieb und -Wartung durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen