Nginx在线升级

Posted 心之余技术宅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx在线升级相关的知识,希望对你有一定的参考价值。

nginx在线升级


这里介绍两种nginx在线升级的方法(热升级,平滑升级)


安装nginx新版本


下载新版本并解压:当前是14

Nginx在线升级

Nginx在线升级

Nginx在线升级

[root@localhost nignx]# tar -xzvf nginx-1.16.1.tar.gz

编译(先不要直接编译先查看老版本都编译环境使用-V,小v是查看版本)

Nginx在线升级

拿到老版本环境就可以编译:(编译环境必须和老版本一样)

Nginx在线升级

预编译时新版本时,网站还是可以运行

[root@localhost nginx-1.16.1]# make && make install

新版本可以直接安装不影响运行,不会覆盖原文件(要理解install安装到底是什么机制),在执行install过程如下:安装时首先使用test -d来测试你的目录是否存在,若没有就创建一个(相当于命名一个.old文件),比如后面配置文件系统会一个一个测试文件有没有,没有就cp,有就不执行,如下图:

Nginx在线升级

Nginx在线升级

.old就是老版本二进制存放的文件


编译完后来进行升级(两种方法)(通过上面编译还是会使用老版本)


方法一:直接升级



直接升级是调用当前Makefile文件里的upgrade参数来实现)


Nginx在线升级

Upgrade参数解释:第一步:先使用-t测试配置文件是否有问题,第二步:生成一个master和worker新进程,过一秒,第三步:再测试文件有没有,有就直接kill掉退出

直接执行make upgrade就可以实现升级:

Nginx在线升级

这种方法在实际环境中不推荐使用,它直接把老版本的进程干掉,回退比较麻烦!


方法二:平滑升级



平滑升级是通过拉起新的master进程(此时版本已经切换过来);两个独立的master,老的休眠状态,只是进程还在。如果要拿到nginx的进程也可以使用:cat /usr/local/nginx/logs/nginx.pid查看。

Nginx在线升级

Nginx在线升级 

关闭老的worker进程(在生产环境中千万不要使用kill -9关闭,要保证平滑升级,保证不出错,这种情况一般使用在中病毒时使用kill -9)

Nginx在线升级

如果说新版nginx不稳定 ,可以重新拉起老nginx进程:(此时已经回到老版本)

Nginx在线升级

关闭老进程(master和woker直接关掉)(master删掉不能回退,需退就要重新进行版本降级):

[root@localhost ~]# kill -QUIT 4296



扫码关注更多精彩
Nginx在线升级
Nginx在线升级
Nginx在线升级
END
Nginx在线升级
Nginx在线升级
Nginx在线升级








以上是关于Nginx在线升级的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 平滑升级(不需要关闭Nginx升级)

Nginx平滑升级版本!

nginx升级之openssl 漏洞

Nginx在线服务状态下平滑升级或新增模块

Nginx平滑升级

Nginx平滑升级