nginx的平滑升级(三)

1 什么是nginx平滑升级?

  • nginx平滑升级是为了防止需要停止掉nginx服务导致服务不可用而提出的功能,即可以在不停止服务器的情况下,升级nginx的版本

2 实验目的

  • 在不关闭服务情况下
    (1)把nginx从nginx-1.18.0升级到nginx-1.19.1
    (2)如果将nginx升级之后,发现新版本的nginx有不完善的地方,实现版本的回退

3 实验前的准备

3.1 当前nginx的版本(旧)

nginx -v  ##查看nginx程序的版本
curl -I localhost  ##查看提供服务的nginx版本

在这里插入图片描述

3.2 新版本的nginx

(1)下载nginx新版本软件

  • 进入新版本nginx的目录:cd nginx-1.19.1/
    在这里插入图片描述

  • 编辑目录下的文件:vim auto/cc/gcc,注释debug这两行,去掉 debug 模式编译,编译以后程序只有几百 k
    在这里插入图片描述

  • 配置:./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-threads --with-file-aio --with-http_stub_status_module
    注意: 编译新版本nginx所用的参数必须和编译老版本nginx所用的参数一致

  • 编译:make

(2)备份原程序:

     cd /usr/local/lnmp/nginx/sbin
     cp nginx nginx.old

(3)拷贝新程序:\cp -f /root/nginx-1.19.1/objs/nginx /usr/local/lnmp/nginx/sbin

在这里插入图片描述

4 升级新程序

(1)获取当前nginx主进程pid

[root@server1 sbin]# ps ax |grep nginx  ##获取当前nginx主进程pid:
 6926 ?        Ss     0:00 nginx: master process nginx
 6927 ?        S      0:00 nginx: worker process
 6928 ?        S      0:00 nginx: worker process
 6943 pts/0    S+     0:00 grep --color=auto nginx

(2)升级新程序


[root@server1 sbin]# kill -USR2 6926
[root@server1 sbin]# ps ax |grep nginx
 6926 ?        Ss     0:00 nginx: master process nginx
 6927 ?        S      0:00 nginx: worker process
 6928 ?        S      0:00 nginx: worker process
 6944 ?        S      0:00 nginx: master process nginx
 6945 ?        S      0:00 nginx: worker process
 6946 ?        S      0:00 nginx: worker process
 6948 pts/0    S+     0:00 grep --color=auto nginx

(3)关闭原worker进程但保留主进程:为了回退

[root@server1 sbin]# kill -WINCH 6926
[root@server1 sbin]# ps ax |grep nginx
 6926 ?        Ss     0:00 nginx: master process nginx
 6944 ?        S      0:00 nginx: master process nginx
 6945 ?        S      0:00 nginx: worker process
 6946 ?        S      0:00 nginx: worker process
 6950 pts/0    S+     0:00 grep --color=auto nginx

(4)查看nginx是否升级成功

  • 当前提供nginx服务的版本:curl -I localhost
    在这里插入图片描述

5 版本回退

(1)将老版本的nginx程序还原: \cp -f nginx.old nginx

nginx -v  ##查看nginx程序的版本
curl -I localhost  ##查看提供服务的nginx版本

在这里插入图片描述
(2)唤醒原进程: kill -HUP pid(原)

[root@server1 sbin]# kill -HUP 6926
[root@server1 sbin]# ps ax |grep nginx
 6926 ?        Ss     0:00 nginx: master process nginx
 6944 ?        S      0:00 nginx: master process nginx
 6945 ?        S      0:00 nginx: worker process
 6946 ?        S      0:00 nginx: worker process
 6966 ?        S      0:00 nginx: worker process
 6967 ?        S      0:00 nginx: worker process
 6969 pts/0    S+     0:00 grep --color=auto nginx

(3)回收新版本的worker进程: kill -WINCH pid(新)

[root@server1 sbin]# kill -WINCH 6944
[root@server1 sbin]# ps ax |grep nginx
 6926 ?        Ss     0:00 nginx: master process nginx
 6944 ?        S      0:00 nginx: master process nginx
 6966 ?        S      0:00 nginx: worker process
 6967 ?        S      0:00 nginx: worker process
 6971 pts/0    S+     0:00 grep --color=auto nginx
[root@server1 sbin]# ps ax |grep nginx
 6926 ?        Ss     0:00 nginx: master process nginx
 6944 ?        S      0:00 nginx: master process nginx
 6966 ?        S      0:00 nginx: worker process
 6967 ?        S      0:00 nginx: worker process
 6973 pts/0    S+     0:00 grep --color=auto nginx

(4)关闭新版本主进程: kill -QUIT pid(新)

 [root@server1 sbin]# kill -QUIT 6944 
 6926 ?        Ss     0:00 nginx: master process nginx
 6966 ?        S      0:00 nginx: worker process
 6967 ?        S      0:00 nginx: worker process
 6973 pts/0    S+     0:00 grep --color=auto nginx

(5)检查版本是否回退成功

nginx -v  ##查看nginx程序的版本
curl -I localhost  ##查看提供服务的nginx版本

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值