Nginx 安装第三方模块 不停机 平滑升级 方法2

1. 安装步骤略

可以参考https://blog.csdn.net/qq_29974229/article/details/126114380
1和2
至此nginx已经启动
备份nginx文件

cp /apps/nginx-1.20/sbin/nginx /apps/nginx-1.20/sbin/nginx.bak

此时Nginx master 进程号为43619
在这里插入图片描述

2. 加载第三方补丁并安装

patch -p1 < /opt/nginx_upstream_check_module-master/check_1.20.1+.patch
./configure --prefix=/apps/nginx-1.20 --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_stub_status_module --add-module=/opt/nginx_upstream_check_module-master
make -j 4
make install

此时Nginx master进程号任然是43619
在这里插入图片描述
进程ID可以在nginx.pid中确认
在这里插入图片描述
此时/apps/nginx-1.20/sbin/nginx 已经是带有第三方模块了
在这里插入图片描述

4. 修改Nginx配置文件

vi /apps/nginx/conf/conf.d/aa.conf
upstream aaa {
    
    
	server 192.168.31.17;
	server 192.168.31.27;
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        check_http_send "HEAD / HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
}
server {
    
    
	listen 192.168.31.67:80;
        server_name aa.qiuqin.com 192.168.31.67;
        location / {
    
    
            proxy_pass http://aaa;
        }
}

5. 生成新的master进程

kill -USR2 `cat /apps/nginx-1.20/logs/nginx.pid`

此时Nginx开启一个新的master进程,这个master进程会生成新的worker进程,这就是升级后的Nginx进程,此时老的进程不会自动退出,但是当接收到新的请求不作处理而是交给新的进程处理。
在这里插入图片描述

6. 关闭老的worker进程

kill 43620

在这里插入图片描述

7. 升级失败回滚

如果升级过程中有问题,退回原版本

7.1 重新拉起老的worker进程

kill -HUP 43619

在这里插入图片描述

7.2 退出新的master进程

cat /apps/nginx-1.20/logs/nginx.pid
kill 46315

当然也可以合并成一句

kill `cat /apps/nginx-1.20/logs/nginx.pid`

在这里插入图片描述

7.3 应用程序回退

cp /apps/nginx-1.20/sbin/nginx /apps/nginx-1.20/sbin/nginx.bak-20220802
cp /apps/nginx-1.20/sbin/nginx.bak /apps/nginx-1.20/sbin/nginx

猜你喜欢

转载自blog.csdn.net/qq_29974229/article/details/126114618