Nginx 平滑升级
对Nginx的版本进行更新,或者要增添新的模块,最简单的方法就是停止当前的Nginx服务,重新编译安装nginx,然后开启新的Nginx服务。但是这样会导致在一段时间内,用户是无法访问服务器,在大型系统中这是不可估量的灾难。为了解决这个问题,就需要用到Nginx服务器提供的平滑升级
功能。这个也是Nginx的一大特点,使用平滑升级
方式,就可以使Nginx在7*24小时不间断的提供服务了。
- 要求
Nginx的版本最开始使用的是Nginx-1.12.2,由于服务升级,需要将Nginx的版本升级到Nginx-1.16.1,要求Nginx不能中断提供服务。
为了应对上述的需求,这里提供两种解决方案:
方案一: 使用Nginx服务信号完成Nginx的升级
- 将1.12.2版本的sbin目录下的nginx进行备份;
# 进入到nginx安装的目录,默认安装则为/usr/local/nginx/sbin;否则到自己指定的安装目录中寻找nginx文件
$ cd /usr/local/nginx/sbin
$ ls
nginx
$ mv nginx nginxold
- 将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
- 发送信号USR2给Nginx的1.12.2版本对应的master进程
kill -USR2 `more /usr/local/logs/nginx.pid`
- 发送信号QUIT给Nginx的1.12.2版本对应的master进程
kill -QUIT `more /usr/local/logs/nginx.pid.oldbin`
- 查看是否更新成功
$ cd /usr/local/nginx/sbin
$ ./nginx -v
方案二:使用Nginx安装目录的make命令完成升级
- 将1.12.2版本的sbin目录下的nginx进行备份;
$ cd /usr/local/nginx/sbin
$ mv nginx nginxold
- 将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
- 进入到安装目录,执行
make upgrade
$ cd /opt/nginx-1.16.1/ //使用 cd .. 返回上一层 也可以
$ make upgrade
- 查看是否更新成功
$ cd /usr/local/nginx/sbin$ ./nginx -v
在整个过程中,其实Nginx是一直对外提供服务的。并且当Nginx的服务器启动成功后,我们是可以通过浏览器进行直接访问的。