• nginx实现热部署(平滑升级)


    这里我们使用的是上一篇文章封装好的rhel7.3的虚拟机,主机名修改成了server1

    环境:

              虚拟机server1:rhel7.3系统

              软件:nginx-1.14.2.tar.gz、nginx-1.15.8.tar.gz  ==> 点击下载

    我们这里的思想是热部署将nginx-1.14.2版本升级到nginx-1.15.8

    整个热部署的思想是

    修改配置文件nginx.conf后,重新生成新的worker进程,当然会以新的配置进行处理请求,而且新的请求必须都交给新的worker进程,至于老的worker进程,等把那些以前的请求处理完毕后,kill掉即可。

    1.编译安装nginx(旧版本)

    这里我使用lftp将两个包放在了封装好已经可以使用的虚拟机上,只需要解压编译安装即可

    1.  
      tar zxf nginx-1.14.2.tar.gz
    2.  
      yum install gcc zlib-devel pcre-devel -y
    3.  
      cd nginx-1.14.2
    4.  
      vim auto/cc/gcc ##屏蔽其中的debug
    5.  
      ./configure --prefix=/usr/local/nginx
    6.  
      make&&make install

    这样nginx就成功的安装在了server1上了,此时我们可以查看nginx的版本

    /usr/local/nginx/sbin/nginx -v

    开启nginx

    /usr/local/nginx/sbin/nginx

    2.编译新的nginx版本,并获取二进制文件

    1.  
      tar zxf nginx-1.15.8.tar.gz
    2.  
      cd nginx-1.14.2
    3.  
      vim auto/cc/gcc ##屏蔽其中的debug
    4.  
      ./configure --prefix=/usr/local/nginx  #路径和之前安装一样
    5.  
      make ##切忌不要make install
    6.  
      cd objs
    7.  
      ls ##如下图所示,nginx是我们需要的二进制文件

     

    3.热部署

    我们可以使用以下命令查看nginx的进程

    ps -ef |grep nginx	##查看nginx的进程

    开始之前,我们首先要进行一个备份,回滚的时候会用到

    1.  
      cd /usr/local/nginx/sbin
    2.  
      cp nginx nginx.old ##这样就备份了老的nginx

    结下来就可以进行部署了

    1.  
      cp -f /root/nginx-1.15.8/objs/nginx /usr/local/nginx/sbin/
    2.  
      kill -USR2 2086 ##相当于reload
    3.  
      ps -ef | grep nginx
    4.  
      kill -WINCH 2086 ##相当于kill -9
    5.  
      ps -ef | grep nginx
    6.  
      /usr/local/nginx/sbin/nginx -v

    如上图所示,当我们替换掉nginx二进制文件以后,我们使用kill -USR2使新的nginx上线,然后使用kill -WINCH命令杀掉原来的进程,查看版本号,就已经是1.15了

    4.回滚

    如果我们发现升级有问题,我们想回滚怎么办呢?

    1.  
      cp -f /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx
    2.  
      ps -ef |grep nginx

    1.  
      kill -HUP 2104
    2.  
      ps -ef |grep nginx
    3.  
      kill -USR2 2104
    4.  
      kill -WINCH 2104
    5.  
      ps -ef |grep nginx
    6.  
      /usr/local/nginx/sbin/nginx -v

    这样就回滚回了1.14版本

    ok~

    **************只要学不死就往死里学!************
  • 相关阅读:
    InterlockedIncrement函数详解
    c#事件调用
    jdk-8u281-windows-x64.exe JavaSE开发包
    安卓SDK_installer_r24.4.1-windows
    c#中@符号作用
    c#winformAPI_MFC_API
    NFC上位机未发现RFID设备
    MFC隐藏到托盘双击还原_右键退出实现方法
    win10 win+R快捷指令启动程序汇总
    CAN总线调试---节点掉线问题
  • 原文地址:https://www.cnblogs.com/lxhaaron/p/14239672.html
Copyright © 2020-2023  润新知