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

Posted HOsystem

tags:

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

Nginx 平滑升级

对Nginx的版本进行更新,或者要增添新的模块,最简单的方法就是停止当前的Nginx服务,重新编译安装nginx,然后开启新的Nginx服务。但是这样会导致在一段时间内,用户是无法访问服务器,在大型系统中这是不可估量的灾难。为了解决这个问题,就需要用到Nginx服务器提供的平滑升级功能。这个也是Nginx的一大特点,使用平滑升级方式,就可以使Nginx在7*24小时不间断的提供服务了。

  • 要求
Nginx的版本最开始使用的是Nginx-1.12.2,由于服务升级,需要将Nginx的版本升级到Nginx-1.16.1,要求Nginx不能中断提供服务。

为了应对上述的需求,这里提供两种解决方案:

方案一: 使用Nginx服务信号完成Nginx的升级

  1. 将1.12.2版本的sbin目录下的nginx进行备份;
# 进入到nginx安装的目录,默认安装则为/usr/local/nginx/sbin;否则到自己指定的安装目录中寻找nginx文件
$ cd /usr/local/nginx/sbin

$ ls
nginx

$ mv nginx nginxold

  1. 将Nginx1.16.1安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin目录下;
$ cd /opt/nginx-1.16.1/
$ ./configure
$ make
$ cd objs/
$ cp nginx /usr/local/nginx/sbin

  1. 发送信号USR2给Nginx的1.12.2版本对应的master进程
kill -USR2 `more /usr/local/logs/nginx.pid`
  1. 发送信号QUIT给Nginx的1.12.2版本对应的master进程
kill -QUIT `more /usr/local/logs/nginx.pid.oldbin`
  1. 查看是否更新成功
$ cd /usr/local/nginx/sbin
$ ./nginx -v

方案二:使用Nginx安装目录的make命令完成升级

  1. 将1.12.2版本的sbin目录下的nginx进行备份;
$ cd /usr/local/nginx/sbin
$ mv nginx nginxold
  1. 将1.16.1版本的Nginx1安装目录经编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin(nginx安装目录)目录下;
$ cd /opt/nginx-1.16.1/
$ ./configure
$ make
$ cd /opt/nginx-1.16.1/objs
$ cp nginx /usr/local/nginx/sbin

  1. 进入到安装目录,执行make upgrade
$ cd /opt/nginx-1.16.1/  //使用 cd .. 返回上一层  也可以
$ make upgrade
  1. 查看是否更新成功
$ cd /usr/local/nginx/sbin$ ./nginx -v

在整个过程中,其实Nginx是一直对外提供服务的。并且当Nginx的服务器启动成功后,我们是可以通过浏览器进行直接访问的。

以上是关于Nginx 平滑升级(不需要关闭Nginx升级)的主要内容,如果未能解决你的问题,请参考以下文章

平滑升级你的Nginx

[Linux]-Nginx平滑升级

使用 Nginx 实现平滑升级

nginx版本低,但是又不能关闭怎么办?一招教你平滑升级

平滑升级nginx

nginx平滑升级