在保证Nginx正常处理请求的情况下升级Nginx

                           在保证Nginx正常处理请求的情况下升级Nginx 

前言

        Nginx是一个功能强大的Web服务器,用于服务于世界上许多最受欢迎的站点。 在本博客中,我将演示如何在不丢失客户端连接的情况下升级Nginx可执行文件。

 

升级方法

        Nginx通过在服务启动时生成主进程来工作。同时,主服务会启动一个或多个处理实际客户端连接的工作进程。 Nginx旨在在收到管理员发出的特定信号时执行某些操作。 使用这些信号,您可以轻松地就地升级Nginx或其配置,而不会丢失客户端连接。以下是Nginx master进程与work进程之间常用的信号:

        USR2:这会产生一组新的master/worker进程,而不会影响旧的master/worker进程。
        WINCH:这告诉Nginx master 进程正常停止其关联的worker 进程。
        HUP:这告诉Nginx主进程重新读取其配置文件,同时该master进程下的生成新worker进程,这些worker也使用新的配置文件。 如果新旧master进程正在运行,如果这个信号发送给旧master进程,该进程使用旧的配置文件,该master生成的worker进程也使用旧的配置文件。
        QUIT:这样可以优雅地关闭master进程及其worker进程。
        TERM:这会使master进程及其worker进程的快速关闭。
        KILL:这会立即杀死一个master进程及其worker进程而不进行任何清理。

 

平稳升级步骤

        1)备份Nginx old 可执行文件及配置文件到指定的目录

        2)拷贝新的Nginx 可执行文件到Nginx可执行目录

        3)kill -s "USR2" nginx old process ID

        4) kill -s "WINCH" nginx old process ID

         如果新的Nginx 可执行文件能正常处理新功能,这是我们就可以执行5)步骤。否则,我们就需要执行kill -s "HUP" nginx old process ID

        5) kill -s "QUIT" nginx old process  ID

         

平稳升级举例

        1) 获取Nginx PID。使用ps 命令。从下图可以看出来Nginx PID为12223 。如下所示:

 

        2)新的Nginx bin文件新加了Nginx test模块。在没升级之前是不能访问的。如下所示:

        3)在更新Nginx 配置文件及可执行文件后。运行nginx -s "USR2" 12223 。如下图所示:

      4)测试新的Nginx 模块OK。

        5)退出Nginx old 

         运行kill -s "USR2" 12223  及 kill -s “QUIT” 12223。如下图所示:

        这样不中断连接就升级成功了。        

参考连接

[1] .https://www.digitalocean.com/community/tutorials/how-to-upgrade-nginx-in-place-without-dropping-client-connections

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值