Nginx 实现平滑升级和增加模块

      如果我们需要对当前的Nginx服务进行升级 ,应用新的模块,最简单的方式是停下来,然后开启新的Nginx服务,那么给我们的用户体验是非常差的,会导致用户在一段时间内无法访问我们的服务器为了解决这个问题,Nginx提供了平滑升级的方案。

      为了实现nginx服务器的平滑升级,新安装的服务器路径应该和旧的一致。因此建议用新安装的服务器之前先备份一下我们的旧nginx服务器,如果由于种种原因不能保持新旧客户端路径一致则可以做一下操作,将旧的服务器路径更改为新的路径,新的服务器放入旧的路径中 过程如下:

     一般有两种情况下需要升级Nginx,一种是确实要升级Nginx的版本,另一种是要为Nginx添加新的模块。,Nginx方便地帮助我们实现了平滑升级。其原理简单概括:

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

一、主要过程如下


      需求:现在我们 需要将原有的nginx版本1.8.0 进行升级为官方推荐稳定版本1.18.0, 并在不影响业务的情况下添加SSL和pcre模块。

1. 下载官方的最新稳定版本
wget https://nginx.org/download/nginx-1.18.0.tar.gz

2. 解压安装包
tar zxvf nginx-1.18.0.tar.gz

3. 切换到1.18 解压目录下执行 ./configure命令(保持原nginx 的 --prefix 安装路径)
  cd /download/nginx-1.18.0

 ./configure --prefix=/usr/local/nginx/nginx-1.8.0 --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre

4.执行make ,执行完成后不需要执行 make install
make 

5. 把原有的nginx二进制文件改名 nginx.old
mv /usr/local/nginx/nginx-1.8.0/sbin/nginx /usr/local/nginx/nginx-1.8.0/sbin/nginx_old 

6. 拷贝新编译好的nginx文件到sbin目录
cp /download/nginx-1.18.0/objs/nginx  /usr/local/nginx/nginx-1.8.0/sbin

7. 使用USR2信号量,启动一个新的nginx进程。新旧Nginx进程会一起工作;
kill -USR2 `cat /usr/local/nginx/nginx-1.8.0/logs/nginx.pid`
      注释:Nginx服务接受到USR2的信号后,首先将旧的Nginx。pid文件后面添加一个.oldbin变成了nginx.pid.oldbin 然后执行新版本的Nginx服务器的二进制文件启动服务,如果启动成功那么我们将会有两个Nginx服务在提供服务。如果新的Nginx服务配置文件有问题那么将显示错误然后任然使用旧的Nginx

在这里插入图片描述


8. 查看nginx 进程状态,此时或多出一个nginx进程(一个master和worker)

ps aux | grep nginx 

在这里插入图片描述


9. 使用 WINCH 信号量,平滑停止旧的master对应的worker进程,这个时候由新的Nginx处理服务请求

kill -WINCH `cat /usr/local/nginx/nginx-1.8.0/logs/nginx.pid.oldbin`


此时可以有2个操作:

  • 选择启用新的Nginx 进程 (可以理解为commit),使用 QUIT 信号量 平缓结束 旧的的pid
kill -QUIT `cat /usr/local/nginx/nginx-1.8.0/logs/nginx.pid.oldbin`
  • 或者启用旧的Nginx进程(可以理解为rallback),使用 HUP 信号量 平缓重启 使用 旧的pid
// 执行  HUP,恢复原来的旧的Nginx 进程
kill -HUP `cat /usr/local/nginx/nginx-1.8.0/logs/nginx.pid.oldbin` 

//在执行QUIT ,结束新的Nginx 进程
kill -QUIT `cat /usr/local/nginx/nginx-1.8.0/logs/nginx.pid` 

注释:Nginx 启动停止可以参考:https://blog.csdn.net/womenyiqilalala/article/details/109178194


10. 查看安装后的版本

在这里插入图片描述


11. 查看安装时候的参数(切换到安装目录 /sibn , 执行./nginx -V)
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值