• 认识平滑升级

有时候我们需要对Nginx版本进行升级以满足运维人员对其功能的需求,例如添加xxx模块,需要xxx功能,而此时Nginx又在跑着业务无法停掉,这时我们就只能平滑升级了。

  • 平滑升级原理

Nginx服务接收到USR2信号后,将Nginx.pid文件添加.oldbin变成nginx.pid.oldbin文件;然后执行新版本Nginx服务器的二进制文件启动服务,如果新的服务启动成功,系统中将有新旧两个Nginx主进程共同提供Web服务,之后,需要向旧的Nginx服务进程发送WINCH信号,使旧的Nginx服务平滑停止,并删除Nginx.pid.oldbin文件。

  • Nginx信号简介

1.主进程支持的信号
2.TERM, INT: 立刻退出
3.QUIT: 等待工作进程结束后再退出
4.KILL: 强制终止进程
5.HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程。
6.USR1: 重新打开日志文件
7.USR2: 启动新的主进程,实现热升级
8.WINCH: 逐步关闭工作进程
9.工作进程支持的信号
10.TERM, INT: 立刻退出
11.QUIT: 等待请求处理结束后再退出
12.USR1: 重新打开日志文件

  • 进行平滑升级

1.当前环境

  1. System : CentOS-7.5
  2. Nginx :1.12.0

2.查看当前版本并下载新版本Nginx

  1. /usr/local/nginx/sbin/nginx -v
  2. # nginx version: nginx/1.12.0
  3. wget -c http://nginx.org/download/nginx-1.16.0.tar.gz
  4. # 下载的版本为nginx-1.16.0

3.开始平滑升级

  1. tar -xzf nginx-1.16.0.tar.gz
  2. # 解压源码包
  3. cd nginx-1.16.0
  4. ./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module
  5. # 进入源码包内执行预编

预编译结果如上图所示,即可执行编译。。。

  1. make
  2. # 执行编译,切记不要安装也就是不要去执行 make install

对Nginx执行文件进行更新

  1. cd /usr/local/nginx/sbin
  2. # 进入nginx的执行文件目录内
  3. mv nginx nginx.old
  4. # 将旧版本Nignx执行文件备份为nginx.old
  5. cp /root/nginx-1.16.0/objs/nginx .
  6. # 将新版本Nginx执行文件移动到当前目录内

进行平滑重启

  1. /usr/local/nginx/sbin/nginx -t
  2. # 检测新版本Nginx是否正常 正常为 successful
  3. ps -ef|grep nginx
  4. # 查看旧版本nginx进程

  1. kill -USR2 4428
  2. # 向主进程发送USR2信号,Nginx会启动一个新版本的master进程和工作进程,和旧版一起处理请求

此时再次查看Nginx进程就发现有俩Nginx在工作

  1. kill -WITCH 4428
  2. # 向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理
  3. kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
  4. # 杀死旧版本Nginx主进程或者 kill -9 2248 也可以
  5. /usr/local/nginx/sbin/nginx -v
  6. # ouput:nginx version: nginx/1.16.0
  • Nginx平滑升级结束

文章来源:https://www.113p.cn/287.html

Nginx平滑升级详细步骤-113p.cn的更多相关文章

  1. 让你的网站免费支持 HTTPS 及 Nginx 平滑升级

    为什么要使用 HTTPS ? 首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密.简单点说在 ...

  2. Nginx 平滑升级、Nginx的一些基础配置

    # Nginx 平滑升级 # 方案一:使用Nginx服务信号进行升级 # 1.将就版本的sbin目录下可执行nginx进行备份(mv nginx nginxold) # 2.将新版本 configur ...

  3. Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级) 【转】

    对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...

  4. Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级)

    对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...

  5. nginx平滑升级实战

    Nginx 平滑升级 1.查看旧版Nginx的编译参数 [root@master ~]# /usr/local/nginx/sbin/nginx -V [root@master ~]# ll ngin ...

  6. Nginx平滑升级版本!(重点)

    一.解释nginx的平滑升级 随着nginx越来越流行使用,并且nginx的优势也越来越明显,nginx的版本迭代也开始了加速模式,1.9.0版本的nginx更新了许多新功能,例如stream四层代理 ...

  7. 02 . Nginx平滑升级和虚拟主机

    Nginx虚拟主机 在真实的服务器环境,为了充分利用服务器资源,一台nginx web服务器会同时配置N个虚拟主机,这样可以充分利用服务器的资源,方便管理员的统一管理 配置nginx虚拟主机有三种方法 ...

  8. Nginx平滑升级的详细操作方法

    转至:https://blog.csdn.net/midion9/article/details/49684325 一.平滑升级概述Nginx方便地帮助我们实现了平滑升级.其原理简单概括,就是:(1) ...

  9. Linux centos7 nginx 平滑升级

    2021-08-19为了方便读者的阅读,该文通篇使用绝对路径,各位朋友们在实际上操作中可以根据实际情况编写路径(#^.^#)1. 当前环境 # system cat /etc/redhat-relea ...

随机推荐

  1. Java实现 蓝桥杯 算法训练 约数个数

    算法提高 约数个数 时间限制:1.0s 内存限制:512.0MB 输入一个正整数N (1 样例输入 12 样例输出 6 样例说明 12的约数包括:1,2,3,4,6,12.共6个 import jav ...

  2. Java实现 LeetCode 335 路径交叉

    335. 路径交叉 给定一个含有 n 个正数的数组 x.从点 (0,0) 开始,先向北移动 x[0] 米,然后向西移动 x[1] 米,向南移动 x[2] 米,向东移动 x[3] 米,持续移动.也就是说 ...

  3. java实现纵横火柴棋

    [编程题] 这是一个纵横火柴棒游戏.如图[1.jpg],在一个3x4的方格中,游戏的双方轮流放置火柴棒.其规则是: 1. 不能放置在已经放置火柴棒的地方(即只能在空格中放置). 2. 火柴棒的方向只能 ...

  4. 原生js实现点击添加购物车按钮出现飞行物飞向购物车

    效果演示: 思路:核心->抛物线公式 let a = -((y2-y3)*x1 - (x2-x3)*y1 + x2*y3 - x3*y2) / ((x2-x3) * (x1-x2) * (x1- ...

  5. 什么?你还不会获取地址栏(url)的值

    function getUrlParam(name) {//封装方法 var reg = new RegExp("(^|&)" + name + "=([^&am ...

  6. Sublime 配置 Markdown,并实时预览

    准备: 找到菜单栏:Preferences → Package Control → Package Control:Install Package 需要安装的插件: [Markdown Editing ...

  7. 宝塔部署时,出现“open_basedir restriction in effect”错误

    下面是错误代码: Warning: require(): open_basedir restriction in effect. Warning: require(XXXXXXXXXXX): fail ...

  8. 521.最长特殊序列 I

    2020-05-14 最长特殊序列 I 给你两个字符串,请你从这两个字符串中找出最长的特殊序列. 「最长特殊序列」定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列). 子序列 可 ...

  9. 658.找到K个最接近的元素

    2020-03-10 找到 K 个最接近的元素 给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之 差最小)的 k 个数.返回的结果必须要是按升序排好的.如果有两个数与 x 的 ...

  10. [TopCoder]Seatfriends

    题目   点这里看题目. 分析   可以想到用 DP 解决.   由于把空位放到状态里面太麻烦了,因此我们单独将 " 组 " 提出来进行 DP .   \(f(i,j)\):前\( ...