Nginx实战案例—平滑升级与版本回退

Nginx实战案例—平滑升级与版本回退

1. 平滑升级

为什么要平滑升级呢?
如果我们想要更新nginx,但它的更新也要耗费一定的时间。而平滑升级可以做到在线升级,保证不影响客户的使用,并且升级后新版本对服务端的数据也不会覆盖。

step1 需要两个不同版本的nginx安装包:

这里我的是:nginx-1.14.2.tar.gz  nginx-1.16.1.tar.gz

在这里插入图片描述

step2 先安装一个版本较低的nginx:

tar zxf nginx-1.14.2.tar.gz 
yum install gcc openssl-devel pcre-devel -y
cd nginx-1.14.2
./configure --prefix=/usr/local/nginx
make && make install

step3 开启nginx:

cd /usr/local/nginx/sbin/
./nginx
netstat -antlp | grep nginx		#查看端口信息
/usr/local/nginx/sbin/nginx -v	#查看版本信息
/usr/local/nginx/sbin/nginx -V	#查看编译信息

在这里插入图片描述
step4 将之前的启动脚本备份:

cp nginx nginx.old

在这里插入图片描述
step5 编译安装另一个安装包:

tar zxf nginx-1.16.1.tar.gz 
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx	#根据老版本的编译选项对新版本进行编译
make									#make结束不要make install

step6 覆盖老版本的启动脚本:

cd /usr/local/nginx/sbin/
cp -f /root/nginx-1.16.1/objs/nginx .	#覆盖老版本的启动脚本

在这里插入图片描述
step7 向原来的nginx的master进程发送信号,不再接受新的请求:

新的nginx程序开启worker进程,并且开始接收请求:

ps -ef | grep nginx | grep -v grep 	#查看进程
kill -USR2 4667						#4667为nginx老进程的pid
kill -WINCH 4667	

在这里插入图片描述
注意:此时原来的nginx的master并没有宕掉,只是不在接收请求,当有需要时,我们可以唤醒它

step8 测试:

/usr/local/nginx/sbin/nginx -v	#升级成功
/usr/local/nginx/sbin/nginx -V

在这里插入图片描述

注意:

  • 在编译新版本的时候configure make结束不要make install,这会覆盖原来的nginx
    此处只进行编译步骤(make)不执行安装步骤(make install)因为make install命令的本质就是将编译好的文件复制到对应的目录中。所以此处省略make install以防止某些老的配置文件被覆盖,我们只是为了升级nginx,原来的配置需要保持不变,所以要确保配文件不会被覆盖。
  • 不要制作软链接
    使用这种方法有一个前提:就是你在启动nginx时使用的是nginx二进制文件的绝对路径,而不是直接在命令行中输入"nginx"的方式启动的nginx服务,如果没有通过绝对路径启动nginx那么当你向nginx进程中发送更新的信号时,nginx进程可能会无法找到新的二进制程序

2. 版本回退

step1 先还原nginx脚本:

cd /usr/local/nginx/sbin
cp -f nginx.old nginx

在这里插入图片描述

step2 重新唤起旧版本的master进程,让其接收请求:

ps -ef | grep nginx | grep -v grep
kill -HUP 4667

在这里插入图片描述

step3 让新版本的master进程不再接收请求,关闭worker进程:

kill -USR2 7197
kill -WINCH 7197

在这里插入图片描述

注意:这里一定要分清除新老版本的进程pid

step4 测试:

查看nginx版本,回退到旧版本:

/usr/local/nginx/sbin/nginx -v
/usr/local/nginx/sbin/nginx -V

在这里插入图片描述

发布了175 篇原创文章 · 获赞 11 · 访问量 6050

猜你喜欢

转载自blog.csdn.net/weixin_45775963/article/details/104583440