Red Hat Versión de actualización fluida del sistema nginx

Instale la última versión del paquete nginx-1.25.1.tar.gz

[root@suian src]# wget https://nginx.org/download/nginx-1.25.1.tar.gz

El último artículo publicado fue sobre la versión nginx-1.24.0 instalada mediante el método de compilación. Este capítulo registra la actualización sin problemas a la versión nginx-1.25.1.

Intente utilizar una actualización fluida en el entorno de producción. No es necesario cerrar el servicio sin ningún problema para lograr una actualización continua del servicio.

[root@suian src]# ls
nginx-1.24.0  nginx-1.25.1  nginx-1.25.1.tar.gz

[root@suian src]# cd nginx-1.25.1/

#目前版本还是1.24.0
[root@suian nginx-1.25.1]# /apps/nginx/sbin/nginx -v
nginx version: nginx/1.24.0

[root@suian nginx-1.25.1]# /apps/nginx/sbin/nginx -V
nginx version: nginx/1.24.0
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-18) (GCC) 
built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module

Comience a compilar la nueva versión---(Debido a que el código aquí es demasiado largo, lo abrevié en el script)

[root@suian nginx-1.25.1]# vim install.sh 


#!/bin/bash

./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module


[root@suian nginx-1.25.1]# bash install.sh

Compilación completada y instalación iniciada.

#只需要执行make,不需要执行make install
[root@suian nginx-1.25.1]# make
~
~

[root@suian nginx-1.25.1]# objs/nginx -v
nginx version: nginx/1.25.1

Ahora puedes ver que hay dos versiones nginx de los archivos de comando.

[root@suian nginx-1.25.1]# ll objs/nginx /apps/nginx/sbin/nginx 
-rwxr-xr-x 1 nginx nginx 7639864 7月  29 10:15 /apps/nginx/sbin/nginx
-rwxr-xr-x 1 root  root  7654480 7月  29 15:12 objs/nginx

Ahora haga una copia de seguridad de la versión anterior del comando nginx

[root@suian nginx-1.25.1]#cp /apps/nginx/sbin/nginx /opt/nginx.old 

#把新版本的nginx命令复制过去覆盖到旧版本程序文件,注意:需要加 -f 选项强制覆盖,否则会提示Text file busy

[root@suian nginx-1.25.1]#cp -f ./objs/nginx /apps/nginx/sbin/ 

Detecte la nueva versión y la sintaxis y tolerabilidad del archivo de configuración, ejecute Kill para finalizar el proceso.

 [root@suian nginx-1.25.1]#/apps/nginx/sbin/nginx -t 
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful


[root@suian nginx-1.25.1]# kill -USR2 `cat /apps/nginx/logs/nginx.pid`

Puede ver dos maestros: el nuevo maestro es un proceso hijo del antiguo maestro y genera un nuevo proceso de trabajo.

Nota: Si no puede ver la siguiente nueva versión del proceso en la versión Nginx-1.22.1, debe usar el modo de servicio para reiniciar el servicio nginx y luego enviar la señal USR2

[root@suian nginx-1.25.1]#ps auxf|grep nginx
root       12018  0.0  0.0  12112  1092 pts/0   S+   17:32   0:00 |           
\_ grep --color=auto nginx
root        8814  0.0  0.2  42460  3760 ?       Ss   16:58   0:00 nginx: master 
process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx       8957  0.0  0.2  77172  4724 ?       S    17:23   0:00 \_ nginx: 
worker process
nginx       8958  0.0  0.2  77172  4724 ?       S    17:23   0:00 \_ nginx: 
worker process
root       12014  0.0  0.3  42448  5512 ?       S    17:32   0:00 \_ nginx: 
master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      12015  0.0  0.2  77192  4904 ?       S    17:32   0:00     \_ 
nginx: worker process
nginx      12016  0.0  0.2  77192  4908 ?       S    17:32   0:00     \_ 
nginx: worker process

Utilice otra máquina para ver la versión anterior del programa.

root@ubuntu:~# curl http://10.0.0.102 -I
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Sat, 29 Jul 2023 07:31:36 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Sat, 29 Jul 2023 02:15:18 GMT
Connection: keep-alive
ETag: "64c47636-267"
Accept-Ranges: bytes

Primero cierre el antiguo proceso de trabajo de nginx, sin cerrar el antiguo proceso principal de nginx para facilitar la reversión.

Envíe la señal WINCH al antiguo proceso principal de Nginx, que cerrará sin problemas el antiguo proceso de trabajo (el proceso principal no saldrá). En este momento, todas las solicitudes nuevas serán procesadas por la nueva versión de Nginx.

[root@suian nginx-1.25.1]#kill -WINCH `cat /apps/nginx/logs/nginx.pid.oldbin`

Si la versión anterior del proceso de trabajo tiene una solicitud anterior del usuario, esperará hasta que se procese antes de cerrarse, es decir, se cerrará sin problemas.

Si hay nuevas solicitudes, serán atendidas por la nueva versión.

root@ubuntu:~# curl http://10.0.0.102 -I
HTTP/1.1 200 OK
Server: nginx/1.25.1
Date: Sat, 29 Jul 2023 07:33:17 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Sat, 29 Jul 2023 02:15:18 GMT
Connection: keep-alive
ETag: "64c47636-267"
Accept-Ranges: bytes


[root@suian nginx-1.25.1]# nginx -v
nginx version: nginx/1.25.1

[root@suian nginx-1.25.1]# nginx -V
nginx version: nginx/1.25.1
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-18) (GCC) 
built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
TLS SNI support enabled

Si descubre que hay un problema con la nueva versión y es necesario revertirla, puede enviar una señal HUP para reiniciar la versión anterior del trabajador.

[root@suian nginx-1.25.1]#kill -HUP `cat /apps/nginx/logs/nginx.pid.oldbin`
[root@suian nginx-1.25.1]#pstree -p |grep nginx
           |-nginx(8814)-+-nginx(12014)-+-nginx(12015)
           |             |              `-nginx(12016)
           |             |-nginx(12090)
           |             `-nginx(12091)

Finalmente, cierre la nueva versión de maestro y trabajador. Si la señal HUP anterior no se ejecuta, la señal SALIR en este paso también puede reiniciar la versión anterior del proceso de trabajo.

[root@suian nginx-1.25.1]#kill -QUIT `cat /apps/nginx/logs/nginx.pid`

#恢复旧版的文件
[root@suian nginx-1.25.1]#mv /opt/nginx.old   /apps/nginx/sbin/
mv: overwrite '/apps/nginx/sbin/nginx'? y

Bien, este capítulo ha terminado.

 Dirección de descarga del paquete de código fuente oficial

nginx: descargar

Si tienes alguna duda, puedes dejar un comentario o enviarme un mensaje privado y te ayudaré a resolver tus dudas.

Supongo que te gusta

Origin blog.csdn.net/Qx_cd/article/details/131995845
Recomendado
Clasificación