• 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
    

    image-20211230224104201

    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
    

    image-20201230224441711

    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
    

    image-20201230224701759

    方案二:使用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
    

    image-20201230224441711

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

    image-20201230224651307

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

  • 相关阅读:
    centos安装杂记inittabhostnamessh
    centos6安装aircrack,reaver1.4
    20175236 201820192 《Java程序设计》第五周学习总结
    20175236 201820192 《Java程序设计》第三周学习总结
    20175236 JAVA MyCP(课下作业)
    20175236 201820192 《Java程序设计》第六周学习总结
    小学生之Java中的异常
    小学生之面向对象的三个特征继承、封装、多态
    小学生之类与对象
    小学生之手(01)之 "for循环"
  • 原文地址:https://www.cnblogs.com/HOsystem/p/15750963.html
Copyright © 2020-2023  润新知