精华内容
下载资源
问答
  • 平滑升级

    2016-08-24 23:19:00
    平滑升级 所谓平滑升级,就是在不影响当前程序运行的情况下,对Nginx版本进行升级、添加/删除服务器模块 具体做法如下: 1、下载新版本 2、执行make 3、对旧版本的 nginx 命令进行copy备份 如:cp nginx nginx_...

    平滑升级

    所谓平滑升级,就是在不影响当前程序运行的情况下,对Nginx版本进行升级、添加/删除服务器模块

    具体做法如下:

    1、下载新版本

    2、执行make

    3、对旧版本的 nginx 命令进行copy备份 如:cp nginx nginx_version

    4、使用新版本的nginx命令去覆盖旧版本的nginx

    cp -rfp nginx(new)  old_nginx_path

    5、sudo kill -USR2 旧版本的Nginx主进程号

    旧版本Nginx的主进程将重命名它的pid文件为.oldbin ,然后执行新的程序

    6、sudo nginx -c /usr/local/nginx/nginx.conf

    启动新的nginx

    此时新旧版本的Nginx实例会同时运行,共同处理请求

    7、sudo kill -WINCH 旧版本Nginx主进程号

    从容停止旧版本Nginx的工作进程

    8、过了一会儿,旧工作进程处理完了已连接的请求,自己会退出,由新的工作进程来处理新的请求

    9、由我们自己判断是继续使用新的工作进程,还是恢复到旧版本

    恢复旧版本:

    sudo kill -HUP 旧的主进程号    Nginx将在不重载配置文件的情况下启动它的工作进程

    sudo kill -QUIT 新的主进程号 从容关闭其工作进程

    sudo kill -TERM 新的主进程号 强制退出

    如果还是无法关闭新开启的进程,则直接使用kill命令

     

    新的主进程退出后,旧的进程会移除  .oldbin 前缀,恢复为.pid文件,至此,一切又回到了升级前的模样

     

    如果希望留下新的服务器,可以发送QUIT信号给旧的主进程,使其退出

    sudo kill -QUIT 旧的主进程号

     

    转载于:https://www.cnblogs.com/sherrykid/p/5805035.html

    展开全文
  • Nginx 的平滑升级 平滑升级概述 Nginx 平滑升级原因 随着Nginx的广泛应用,Nginx的版本迭代也来时加速模式,线上业务不能停,因此Nginx的升级就需要平滑升级。 Nginx平滑升级原理 Nginx平滑升级操作 Nginx 错误...

    Nginx 的平滑升级

    • 平滑升级概述、参数
    • 1、nginx 平滑升级原因

    随着 nginx 的广泛应用,nginx 的版本迭代也来时加速模式,线上业务不能停,因此nginx 的升级就需要平滑升级。

    • nginx 平滑升级原理:

      (1)在不停掉老进程的情况下,启动新进程。
      (2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
      (3)新进程接受新请求。
      (4)老进程处理完所有请求,关闭所有连接后,停止。

    一般有两种情况下需要升级 nginx,一种是需要升级新的Nginx版本,另一种是要为 nginx 添加新的模块。

    • 2、Nginx 平滑升级描述

    多进程模式下的请求分配方式

    nginx 默认工作在多进程模式下,即主进程(master process)启动后完成配置加载和端口绑定等动作,fork 出指定数量的工作进程(worker process),这些子进程会持有监听端口的文件描述符(fd),并通过在该描述符上添加监听事件来接受连接

    • 信号的接收和处理

    nginx 主进程在启动完成后会进入等待状态,负责响应各类系统消息,如 SIGCHLD、SIGHUP、SIGUSR2 等。

    • 3、Nginx 信号简介

    主进程支持的信号

    TERM, INT: 立刻退出
    QUIT: 等待工作进程结束后再退出
    KILL: 强制终止进程
    HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程。
    USR1: 重新打开日志文件
    USR2: 启动新的主进程,实现热升级
    WINCH: 逐步关闭工作进程
     工作进程支持的信号
    TERM, INT: 立刻退出
    QUIT: 等待请求处理结束后再退出
    USR1: 重新打开日志文件
    
    • Nginx 平滑升级操作

    1、查看现有的 nginx 编译参数

    [root@nginx-server ~]#  /usr/local/nginx/sbin/nginx -V
      nginx version: nginx/1.16.0
      built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
      built with OpenSSL 1.0.2k-fips  26 May 2020
      TLS SNI support enabled
      configure arguments: --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream
    

    2.上传新版本的源码包 nginx-1.19.10.tar.gz,解压到/usr/local/

    按照原来的编译参数安装 nginx 的方法进行安装,然后make,不要 make install(make install 会将原来的配置文件覆盖)

    [root@nginx-server2 ~]# cd /usr/local/nginx-1.19.10/
      [root@nginx-server2 nginx-1.19.10]# ./configure --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream
      [root@nginx-server2 nginx-1.19.10]# make
      #千万不要 make install !!
    

    3、备份原 nginx 二进制文件
    备份二进制文件和 nginx 的配置文件(期间 nginx 不会停止服务)

    [root@nginx-server2 nginx-1.19.10]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_$(date +%F)
    

    4、复制新的 nginx 二进制文件,进入新的 nginx 源码包

    [root@nginx-server2 nginx-1.19.10]# cp /usr/local/nginx-1.19.10/objs/nginx /usr/local/nginx/sbin/
    

    5、测试新版本的 nginx 是否正常

    [root@nginx-server2 nginx-1.19.10]# /usr/local/nginx/sbin/nginx -t
    

    6、给 nginx 发送平滑迁移信号(若不清楚 pid 路径,请查看 nginx 配置文件)
    USR2: 启动新的主进程,实现热升级

    [root@nginx-server2 nginx-1.19.10]# kill -USR2 `cat /var/run/nginx.pid`
    

    7、查看 nginx pid,会出现一个 nginx.pid.oldbin

    [root@nginx-server2 nginx-1.19.10]# ll /var/run/nginx.pid*
    

    8、从容关闭旧的 Nginx 进程(WINCH: 逐步关闭工作 work 进程)

      [root@nginx-server2 nginx-1.19.10]# kill -WINCH `cat /var/run/nginx.pid.oldbin`
    

    9、此时不重载配置启动旧的工作进程
    HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程。

     [root@nginx-server2 nginx-1.19.10]# kill -HUP `cat /var/run/nginx.pid.oldbin`
    

    10、结束工作进程,完成此次升级
    QUIT: 等待请求处理结束后再退出

      [root@nginx-server2 nginx-1.19.10]# kill -QUIT `cat /var/run/nginx.pid.oldbin`
    

    11、验证 Nginx 是否升级成功

      [root@nginx-server2 nginx-1.19.10]# /usr/local/nginx/sbin/nginx -V
    

    12、访问验证

      elinks 10.8.165.121
    

    PS. 使用yum安装Nginx 的平滑升级方式一样,下载新的安装包解压到同一目录配置、make即可。

    • Nginx 错误页面配置

    nginx 错误页面包括 404 403 500 502 503 504 等页面,在 server 中增加配置即可:

      #error_page  404 403 500 502 503 504  /404.html;
                      location = /404.html {
                              root   /usr/local/nginx/html;
                      }
    

    注意:

    /usr/local/nginx/html/ 路径下必须有 404.html 文件
    

    404.html 上如果引用其他文件的 png 或 css 就会有问题,无法显示,因为其他文件的访问也需要做配置;

    为了简单,可以将 css 嵌入文件中,图片用 base 编码嵌入;如下:
    
      [root@localhost html]# vim 404.html
      
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
     
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
        <title>404-[对不起!您访问的页面不存在] </title>
     
        <style type="text/css">
     
            .head404{ width:580px; height:234px; margin:50px auto 0 auto; background:url('http://zq027.com/Public/images/head404.png') no-repeat; }
     
            .txtbg404{ width:499px; height:169px; margin:10px auto 0 auto; background:url('http://zq027.com/Public/images/txtbg404.png') no-repeat;}
     
            .txtbg404 .txtbox{ width:390px; position:relative; top:30px; left:60px;color:#eee; font-size:13px;}
     
            .txtbg404 .txtbox p {margin:5px 0; line-height:18px;}
     
            .txtbg404 .txtbox .paddingbox { padding-top:15px;}
     
            .txtbg404 .txtbox p a { color:#eee; text-decoration:none;}
     
            .txtbg404 .txtbox p a:hover { color:#FC9D1D; text-decoration:underline;}
     
        </style>
     
    </head>
     
     
     
    <body bgcolor="#494949">
     
    <div class="head404"></div>
     
    <div class="txtbg404">
     
        <div class="txtbox">
     
            <p>对不起,您请求的页面不存在、或已被删除、或暂时不可用</p>
     
            <p class="paddingbox">请点击以下链接继续浏览网页</p>
     
            <p><a style="cursor:pointer" οnclick="history.back()">返回上一页面</a></p>
     
            <p><a href="/">返回网站首页</a></p>
     
        </div>
     
    </div>
     
    </body>
     
    </html>
    

    展示效果:
    在这里插入图片描述

    展开全文
  • nginx平滑升级

    2015-06-15 11:28:41
    nginx平滑升级
  • nginx1.8平滑升级

    2017-11-16 10:31:23
    nginx1.8版本平滑升级,本文档用于nginx1.8平滑升级到nginx1.11.2文档
  • Nginx平滑升级

    2020-07-01 20:45:39
    Nginx平滑升级 1,说明 当已经安装了nginx,只需要升级新版本或者加模块的情况下,我们需要平滑升级。如果当前没有安装nginx,安装参数 配置进去进行安装就可以了。 有两种方案: 1,条件允许的情况下,卸载nginx...

    Nginx平滑升级

    1,说明

    这两天在研究nginx动态负载均衡,需要用到第三方模块,不过之前没有装。卸载重装Nginx又太麻烦,查询资料得知
    nginx可以进行平滑升级。就用了平滑升级安装了nginx-upsync-module。由于之前不知道这个知识点,自己搞完打
    算写个总结,分享出来,一来当作自己的笔记,二来有需要的朋友也可以参考
    

    2,概览

    当已经安装了nginx,只需要升级新版本或者加模块的情况下,我们需要平滑升级。如果当前没有安装nginx,安装参数
    配置进去进行安装就可以了。
        有两种方案:
            1,条件允许的情况下,卸载nginx重装。
            2,在nginx运行中,进行平滑升级或者安装模块。
    本文着重记录下第二种方案的执行过程。
    

    3,操作过程

    1,查看当前已安装nginx的配置参数
    
        /usr/local/nginx/sbin/nginx -V
    
        例如:
            #执行命令
            #已安装配置参数 即--prefix=/usr/local/nginx
            [root@4598d101709d ~]# /usr/local/nginx/sbin/nginx -V   
            nginx version: nginx/1.18.0
            built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
            configure arguments: --prefix=/usr/local/nginx          
    
    
    2,进入nginx源码包目录(没有的话自行下载源码包,下载的版本即是当前操作后的版本)
    
        1,参数配置简介:
            执行./configure --help可查看所有参数配置以及相关的自带模块
                自带模块
                   --with-http_geoip_module      安装的时候加某个模块
                   --without-http_charset_module  安装的时候不要某个模块
                第三方模块
                   --add-module=/nginxModule/loadBalance/nginx-upsync-module-2.1.0 
                   后面跟第三方模块的绝对路径
    
        2,注意:
            ./configure --XXX执行的时候,一定要把之前安装的配置参数带进去,要不然第二次安装的
            参数配置会覆盖第一次安装的
    
        3,执行
            ./configure --XXX
    
            例如:
                ./configure \
                --prefix=/usr/local/nginx \                                       #之前的配置
                --add-module=/nginxModule/loadBalance/nginx-upsync-module-2.1.0 \ #要加入的第三方模块
                --with-mail=dynamic \                                             #要安装的自带模块
    
        4,执行make进行编译
            注意:不能执行make install,要不然就会直接赴覆盖安装
    
        5,复制二进制文件
            make编译之后,在当前目录的objs目录里生成nginx二进制执行文件。将原先的nginx执行文件做备份,然后
            把新的二进制文件拷贝到之前的安装目录,也就是/usr/local/nginx/sbin/中
    
        6,在nginx源码包目录执行 make upgrade升级
            用 /usr/local/nginx/sbin/nginx -V 命令查看新的版本或者参数配置,如果成功,则升级成功
            需要注意的是,执行过程中有可能会抛出异常,因为执行过程中会有些文件不存在什么的,不用管他。
    展开全文
  • 主要介绍了详解nginx平滑升级的过程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 该工具作为衔接用友不同产品线的实用工具可以实现通平滑升级到 U6 和U6 平滑升级到U8 两个过渡操作。
  • nginx 平滑升级

    2021-04-06 08:23:17
    nginx 平滑升级 文章目录nginx 平滑升级编译新版版本升级版本回退 编译新版 # 源码编译获取新版 nginx 二进制文件: # 下载新版 nginx 源码包,解压,编译,不安装, tar zxf nginx-1.19.1.tar.gz cd nginx-1.19.1 ...

    nginx 平滑升级

    编译新版

    # 源码编译获取新版 nginx 二进制文件:
    
    # 下载新版 nginx 源码包,解压,编译,不安装,
    tar zxf nginx-1.19.1.tar.gz
    cd nginx-1.19.1
    
    # 关闭调试,减小程序的所占资源大小
    vim nginx-1.19.1/auto/cc/gcc
    	172 # CFLAGS="$CFLAGS -g"
    
    # 生成 Makefile 文件
    ./configure --prefix=/usr/local/nginx \
    --with-http_ssl_module \
    --with-http_stub_status_module
    
    # 编译
    make
    
    

    示例截图

    在这里插入图片描述在这里插入图片描述

    版本升级

    # 升级:
    # 将 nginx 二进制文件替换新版
    cd /usr/local/nginx/sbin/
    
    # 做备份,以便版本回退
    mv nginx nginx.old
    cd nginx-1.19.1/objs
    cp nginx /usr/local/nginx/sbin/
    
    # 查看 目前 nginx 的进程
    ps  ax | grep nginx
    # 开启新进程(新版 nginx 的进程)
    kill -USR2 12954
    # 回收旧进程(旧版 nginx 的进程)
    kill -WINCH 12954
    
    

    示例截图
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    版本回退

    # 回退:
    # 将 nginx 二进制文件替换成旧版
    mv nginx nginx.new
    mv nginx.old nginx
    ps  ax | grep nginx
    
    # 开启新进程(旧版 nginx 的进程)
    kill -HUP 12954
    
    # 回收 新版的nginx 的进程
    kill -WINCH 19785
    
    # 关闭新版主进程
    kill -QUIT 1978
    
    

    示例截图
    在这里插入图片描述

    展开全文
  • 主要介绍了Nginx平滑升级的详细操作方法,适应编译安装ningx的情况,yum安装的直接用yum更新即可,需要的朋友可以参考下
  • Nginx版本平滑升级

    2020-12-15 14:31:21
    Nginx版本平滑升级nginx的平滑升级重要性安全漏洞报告nginx升级原理简介nginx平滑升级详细过程1、环境准备2 开始升级 nginx的平滑升级重要性 由于nginx的优越性能及强大功能,被业界大量使用,Nginx版本升级必然是...
  • nginx的平滑升级

    千次阅读 2019-01-06 13:49:14
    关于nginx,我们通常都会提到nginx的平滑升级。即在不影响业务的情况下,对正在使用的nginx的版本进行升级。而这个操作是只在有必要升级时才进行的。 关于nginx的平滑升级与nginx添加模块基本相同,可参考下列链接...
  • 于是怀着好奇的心情,开始了探索 nginx 的平滑重启和平滑升级是如何实现的。先解释下笔者对这两个名词的概念: 平滑重启:针对的是更新 nginx 的 *.conf 文件 平滑升级: 针对的是 nginx 服务的二进制文件更新,...
  • 主要介绍了Nginx1.8.0版本平滑升级新版本1.9.7的相关资料,需要的朋友可以参考下
  • 平滑升级Nginx

    2018-09-03 13:30:24
    当Nginx的服务升级到新的版本时,必须要将旧的二进制文件的Nginx替换掉,通常这是需要重启服务的,但Nginx的支持不重启服务来完成新版本的平滑升级; 步骤: 1,通知正在运行的旧版本的Nginx准备升级。通过向主...
  • nginx编译安装后用了一段时间后发现当前版本有漏洞或需要新的功能时就需要对当前nginx版本进行版本升级,所以这时就需到对nginx的平滑升级,如何进行平滑升级,下面就一起来了解一下
  • Nginx的平滑升级

    2019-05-05 20:54:47
    Nginx的平滑升级 平滑升级: 有时候,我们需要对服务器进行升级更高版本,此时我们将强制停止服务器,然后在原来基础上升级,这样会关闭之前正在运行的进程。 平滑升级正是解决这个问题的,平滑升级时,不会停掉在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,913
精华内容 12,765
关键字:

平滑升级