nginx的平滑升级与版本回退

1. 平滑升级

用新的虚拟机server3进行测试。

(1)下载两个不同的nginx版本,一旧一新。对旧版本的nginx进行编译。

[root@server3 ~]# ls
nginx-1.14.2.tar.gz  nginx-1.17.8.tar.gz
[root@server3 ~]# tar zxf nginx-1.14.2.tar.gz 
[root@server3 ~]# ls
nginx-1.14.2  nginx-1.14.2.tar.gz  nginx-1.17.8.tar.gz
[root@server3 ~]# cd nginx-1.14.2
[root@server3 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx

(2)启动旧版本的nginx并查看版本。

[root@server3 nginx-1.14.2]# cd /usr/local/nginx/sbin/
[root@server3 sbin]# ls
nginx
[root@server3 sbin]# ./nginx 
[root@server3 sbin]# netstat -antlupe |grep nginx 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      0          22074      5018/nginx: master  
[root@server3 sbin]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.14.2
[root@server3 sbin]# 

不要将nginx的二进制启动文件通过 ln -s 链接
必须使用nginx二进制文件的绝对路径
(3)备份老版本的启动脚本

[root@server3 sbin]# cp nginx nginx.old
[root@server3 sbin]# ls
nginx  nginx.old
[root@server3 sbin]# 

(4)编译新版本

[root@server3 ~]# ls
nginx-1.14.2  nginx-1.14.2.tar.gz  nginx-1.17.8  nginx-1.17.8.tar.gz
[root@server3 ~]# cd nginx-1.17.8
[root@server3 nginx-1.17.8]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@server3 nginx-1.17.8]# ./configure --prefix=/usr/local/nginx

直接make 不能make && make install
(5) 复制新版本的启动nginx到老版本的sbin下
cp -f ~/nginx-1.17.8/objs/nginx .

[root@server3 nginx]# cd sbin/
[root@server3 sbin]# ls
nginx  nginx.old
[root@server3 sbin]# cp -f ~/nginx-1.17.8/objs/nginx .
cp: overwrite ‘./nginx’? y
[root@server3 sbin]# 

(6)关闭旧版本nginx的进程。启动新版本的工作进程。

[root@server3 sbin]# ps -ef |grep nginx |grep -v grep
root      5018     1  0 17:29 ?        00:00:00 nginx: master process ./nginx
nobody    5019  5018  0 17:29 ?        00:00:00 nginx: worker process
[root@server3 sbin]# kill -USR2 5018
[root@server3 sbin]# ps -ef |grep nginx |grep -v grep
root      5018     1  0 17:29 ?        00:00:00 nginx: master process ./nginx
nobody    5019  5018  0 17:29 ?        00:00:00 nginx: worker process
root     10152  5018  0 18:46 ?        00:00:00 nginx: master process ./nginx
nobody   10153 10152  0 18:46 ?        00:00:00 nginx: worker process
[root@server3 sbin]# 
[root@server3 sbin]# kill -WINCH 5018
[root@server3 sbin]# ps -ef |grep nginx |grep -v grep
root      5018     1  0 17:29 ?        00:00:00 nginx: master process ./nginx
root     10152  5018  0 18:46 ?        00:00:00 nginx: master process ./nginx
nobody   10153 10152  0 18:46 ?        00:00:00 nginx: worker process
[root@server3 sbin]# 

发现,版本已经更新

[root@server3 sbin]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.17.8
[root@server3 sbin]#

2. 版本回退

[root@server3 sbin]# ls
nginx  nginx.old
[root@server3 sbin]# cp -f nginx.old nginx
cp: overwrite ‘nginx’? y
[root@server3 sbin]# ls

唤醒原来的旧进程,停掉新版本的工作进程。

[root@server3 sbin]# ps -ef |grep nginx |grep -v grep
root      5018     1  0 17:29 ?        00:00:00 nginx: master process ./nginx
root     10152  5018  0 18:46 ?        00:00:00 nginx: master process ./nginx
nobody   10153 10152  0 18:46 ?        00:00:00 nginx: worker process
[root@server3 sbin]# kill -HUP 5018
[root@server3 sbin]# ps -ef |grep nginx |grep -v grep
root      5018     1  0 17:29 ?        00:00:00 nginx: master process ./nginx
root     10152  5018  0 18:46 ?        00:00:00 nginx: master process ./nginx
nobody   10153 10152  0 18:46 ?        00:00:00 nginx: worker process
nobody   10168  5018  0 18:52 ?        00:00:00 nginx: worker process
[root@server3 sbin]# kill -USR2 10152
[root@server3 sbin]# kill -WINCH 10152
[root@server3 sbin]# ps -ef |grep nginx |grep -v grep
root      5018     1  0 17:29 ?        00:00:00 nginx: master process ./nginx
root     10152  5018  0 18:46 ?        00:00:00 nginx: master process ./nginx
nobody   10168  5018  0 18:52 ?        00:00:00 nginx: worker process
[root@server3 sbin]# 

可见,版本已经成功回退。

[root@server3 sbin]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.14.2
[root@server3 sbin]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值