nginx的平滑升级与版本回退

北慕城南 提交于 2020-02-26 21:17:14

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]# 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!