Maison > Article > Opération et maintenance > Comment mettre à niveau la version de nginx en douceur et en toute sécurité
Présentons d'abord plusieurs signaux pris en charge par nginx. Vous trouverez ci-dessous plusieurs signaux que le processus principal peut recevoir.
Remarque : le processus de travail peut également recevoir certains signaux, mais son mécanisme de traitement du signal est quelque peu différent de celui du processus principal, et les signaux pris en charge par le processus principal peuvent ne pas être pris en charge par le processus de travail.
Le comportement de l'arrêt progressif est le suivant : (1) le processus n'écoute plus et n'accepte plus de nouvelles demandes (2) le processus continue de traiter la demande en cours de traitement, mais l'est ; détruit une fois le traitement terminé.
1. Mise à niveau
Si vous souhaitez mettre à niveau une instance nginx en cours d'exécution ou remplacer une ancienne version parce que vous avez recompilé une version, vous pouvez envisager de suivre la série de processus suivante pour stabiliser et mettre à niveau. sans risque. Bien entendu, arrêter directement le service n’aura pas beaucoup d’impact. Il est plus pratique et simple d’arrêter puis de démarrer la nouvelle version de l’instance nginx.
1. Remplacez l'ancienne commande nginx par la nouvelle version du chemin de commande nginx.
Habituellement, pour nginx compilé et installé, il est plus pratique d'utiliser des liens symboliques. Par exemple, si le chemin d'installation de l'ancienne version est /usr/local/nginx-1.12.0, créez un lien symbolique /usr/local/nginx pour celle-ci. S'il existe une nouvelle version /usr/local/nginx-1.12. .1, il vous suffit de modifier le lien logiciel. Le lien /usr/local/nginx pointe vers /usr/local/nginx-1.12.1. De cette façon, /usr/local/nginx/sbin/nginx pointera vers le nouveau programme nginx à mesure que le lien logiciel change.
2. Envoyez le signal USR2 au processus principal de l'ancienne instance nginx.
kill -USR2 `cat /var/run/nginx/nginx.pid`
Ce signal invite l'ancien processus principal de nginx à mettre à niveau et à exécuter le nouveau programme nginx. Par exemple, à l'étape 1, l'ancien processus principal de nginx est /usr/local/nginx/sbin/nginx, mais il pointe vers /usr/local/nginx-1.12.0/sbin/nginx Après avoir envoyé le signal, / le fera. doit toujours être exécuté usr/local/nginx/sbin/nginx, mais comme la cible du lien logiciel a changé, le nginx démarré à ce moment est déjà le programme /usr/local/nginx-1.12.1/sbin/nginx.
De plus, après l'envoi de ce signal, l'ancien fichier pid sera renommé nginx.pid.oldbin et l'ancien pid du processus principal nginx est. valeur enregistrée, le nouveau fichier pid est nginx.pid, qui enregistre la valeur pid du processus principal nginx nouvellement démarré.
[root@xuexi ~]# ls /var/run/nginx* /var/run/nginx.pid /var/run/nginx.pid.oldbin
3.arrêt gracieux de l'ancien numéro de processus principal. kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
Envoie un signal QUIT à l'ancien numéro de processus principal, ce qui entraînera l'arrêt du processus principal de manière gracieuse manière. Cela fera que l'ancien processus principal et l'ancien processus de travail n'accepteront plus de nouvelles demandes, mais termineront le traitement des demandes en cours de traitement, puis seront détruits et quitteront.
4. Un moyen plus fiable consiste d'abord à arrêter progressivement le processus de travail après l'exécution de la nouvelle version de l'instance nginx pendant une courte période, si elle fonctionne normalement, arrêtez progressivement l'ancien processus principal.
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`
Après avoir envoyé le signal WINCH à l'ancien processus principal, l'ancien processus de travail se terminera progressivement, mais l'ancien processus principal restera sans sortir.
Si vous constatez que la nouvelle version de l'instance nginx n'est pas satisfaite, vous pouvez directement envoyer un signal HUP à l'ancien numéro de processus principal, afin que l'ancien processus principal relira le fichier de configuration et fork Le nouveau processus de travail peut être restauré à l'ancienne version de l'instance nginx en supprimant le nouveau numéro de processus principal (un arrêt progressif peut être utilisé).
2. Rétrograder
L'étape 4 ci-dessus est en fait le moyen le plus sûr de rétrograder. C'est-à-dire :
kill -HUP `cat /var/run/nginx/nginx.pid.oldbin` kill -QUIT `cat /var/run/nginx/nginx.pid`
Mais si l'ancien ID de processus principal a été supprimé et que seule la nouvelle version de l'instance nginx est actuellement en cours d'exécution, il vous suffit alors de la rétrograder en suivant les mêmes étapes de mise à niveau. C'est-à-dire :
kill -USR2 `cat /var/run/nginx/nginx.pid` kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`
3. Script de mise à niveau en un clic
Ce qui suit est le script de mise à niveau.
Recommandations associées : Tutoriel Nginx
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!