Nginx在线升级
Posted 心之余技术宅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx在线升级相关的知识,希望对你有一定的参考价值。
这里介绍两种nginx在线升级的方法(热升级,平滑升级)
下载新版本并解压:当前是14
[root@localhost nignx]# tar -xzvf nginx-1.16.1.tar.gz
编译(先不要直接编译先查看老版本都编译环境使用-V,小v是查看版本)
拿到老版本环境就可以编译:(编译环境必须和老版本一样)
预编译时新版本时,网站还是可以运行
[root@localhost nginx-1.16.1]# make && make install
新版本可以直接安装不影响运行,不会覆盖原文件(要理解install安装到底是什么机制),在执行install过程如下:安装时首先使用test -d来测试你的目录是否存在,若没有就创建一个(相当于命名一个.old文件),比如后面配置文件系统会一个一个测试文件有没有,没有就cp,有就不执行,如下图:
.old就是老版本二进制存放的文件
编译完后来进行升级(两种方法)(通过上面编译还是会使用老版本)
直接升级是调用当前Makefile文件里的upgrade参数来实现)
Upgrade参数解释:第一步:先使用-t测试配置文件是否有问题,第二步:生成一个master和worker新进程,过一秒,第三步:再测试文件有没有,有就直接kill掉退出
直接执行make upgrade就可以实现升级:
这种方法在实际环境中不推荐使用,它直接把老版本的进程干掉,回退比较麻烦!
平滑升级是通过拉起新的master进程(此时版本已经切换过来);两个独立的master,老的休眠状态,只是进程还在。如果要拿到nginx的进程也可以使用:cat /usr/local/nginx/logs/nginx.pid查看。
关闭老的worker进程(在生产环境中千万不要使用kill -9关闭,要保证平滑升级,保证不出错,这种情况一般使用在中病毒时使用kill -9)
如果说新版nginx不稳定 ,可以重新拉起老nginx进程:(此时已经回到老版本)
关闭老进程(master和woker直接关掉)(master删掉不能回退,需退就要重新进行版本降级):
[root@localhost ~]# kill -QUIT 4296
以上是关于Nginx在线升级的主要内容,如果未能解决你的问题,请参考以下文章