关于Nginx热部署的细节分析


文章目录

  • 前言
  • 一、环境准备
  • 二、热部署步骤
  • 总结


前言

Nginx由于其高并发、高性能、可扩展性好、高可靠性、热部署、BSD许可证等优势被广泛使用,本人主要针对热部署的部分展开说明热部署的具体步骤以及步骤背后发生的具体事情。

本次热部署采用的Nginx版本号为,旧版本Nginx为1.24.0,新版本为1.26.0

一、环境准备

  1. 下载Nginx源码包,下载链接如下:
    • nginx-1.24.0
    • nginx-1.26.0
  2. 上传下载的源码包到服务器(本次上传路径为/data/ivan/packages)
    在这里插入图片描述
  3. 解压nginx-1.24.0的压缩包
    tar -zxvf nginx-1.24.0.tar.gz
    
    在这里插入图片描述
    解压完成后如下图
    在这里插入图片描述
  4. 编译安装Nginx-1.24.0
    cd nginx-1.24.0/
    ./configure --prefix=/data/ivan/nginx-1.24.0
    make && make install
    
    上述命令中/data/ivan/nginx-1.24.0目录为创建好用以保存Nginx的二进制文件、配置文件等文件的目录。
  5. 启动Nginx
    cd /data/ivan/nginx-1.24.0/
    ./sbin/nginx
    

二、热部署步骤

  1. 将旧Nginx二进制文件换成新Nginx二进制文件(注意备份)

    # 进入源码包存放路径,解压nginx-1.26.0压缩包
    cd /data/ivan/packages/
    tar -zxvf nginx-1.26.0.tar.gz
    # 编译新版Nginx二进制文件(这里的编译参数必须与旧Nginx二进制文件的编译参数保持一致)
    ./configure --prefix=/data/ivan/nginx-1.24.0
    make
    # 进入nginx二进制存放目录,备份旧Nginx二进制文件
    cd /data/ivan/nginx-1.24.0
    cp nginx nginx.old
    # 用新编译的二进制文件覆盖原二进制文件,必须使用-f参数,否则无法覆盖
    cp -rp objs/nginx /data/ivan/nginx-1.24.0/sbin/ -f
    
  2. 向master进程发送USR2信号

    # 通过ps命令查看Nginx的master进程的pid
    ps -ef | grep nginx
    

    发送信号前,Nginx只有一个Master进程:
    在这里插入图片描述

    # 向master进程发送USR2信号
    kill -USR2 9893
    

    发送信号后,Nginx的Master进程变成两个,并且可以看出,新Master进程是旧Master进程的子进程
    在这里插入图片描述
    此时,旧nginx进程仍然在LISTEN,只是不会去处理这个socket,因为没有把它加到epoll中。master进程打开监听端口,但不处理,由worker进程处理。另外,旧master是新master的父进程,所以新master才能共享打开的监听端口。
    在这里插入图片描述
    同时,旧Master进程的旧pid文件会变成nginx.pid.oldbin,新Master进程的pid文件会写进nginx.pid
    在这里插入图片描述

  3. 向旧Master进程发送WINCH信号
    执行如下命令:

    kill -WINCH 9893
    

    执行完成后再次查看nginx进程,会发现旧Master进程的worker进程已经停止工作,旧Master进程仍在运行,说明所有的请求已全部切换到新的Master进程。
    在这里插入图片描述
    但是我们发现旧的Master进程没有自动退出,这是因为有可能升级Nginx之后会出现一些问题,保留这个Master进程是为了在有问题的情况下,可以向旧的Master进程发送RELOAD命令(对应HU信号),把旧的Worker进程重新拉起来,实现版本回滚。回滚方式如下:

    # 向老Master进程发送HUP信号
    kill -HUP 9893
    # 向新Master进程发送QUIT信号
    kill -QUIT 12682
    
  4. 向旧Master进程发送QUIT信号

    kill -QUIT 9893
    

    执行完成后再次查看nginx进程,可以发现现在只剩新Master进程及其worker进程正在运行,旧Master进程已完全退出,Nginx升级完成(这里进程号发生变化是因为在这之前测试了下重启步骤,重新执行升级步骤导致新Master进程号发生变化)
    在这里插入图片描述


总结

Nginx提供了非常便捷的热重载的升级方式,能有效保证服务不中断的情况下执行Nginx的升级任务,并且提供了快速的回退方法,这对业务容忍度很低的业务系统来说是非常好用的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/648592.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Web】2024京麒CTF ezjvav题解

目录 step 0 step 1 step 2 EXP1 EXP2 step 0 进来是一个登录框 admin/admin成功登录 访问./source jwt伪造 带着伪造的jwt访问./source,拿到题目源码jar包 step 1 pom依赖有spring、fj、rome 反序列化入口在./Jsrc路由 有两层waf,一个是明…

科技与心理学的协同舞蹈

在探讨盲人如何利用如“蝙蝠避障”这样的辅助软件融入日常生活的同时,我们不得不深入触及盲人教育心理学的核心,这一领域致力于理解盲人在学习与成长过程中独特的心理需求与挑战,以及如何通过教育策略激发他们的潜能,促进全面发展…

Day37 贪心算法part04

LC860柠檬水找零(未掌握) 未掌握分析:20的时候找零卡住,同时贪心思路就想了很久 当bill[i]20的时候,我们有两种找零范式,找零10、5和找零三个5,优先找零10、5,因为三个5是可以替代10、5的情况的&#xff0…

亚马逊、沃尔玛如何通过测评自养号打造爆款

在跨境电商的激烈竞争中,不少商家误以为仅需简单的测评便能迅速打造出热销产品。然而,真实情况远非如此。测评不仅是一个需要精心策划和持续执行的过程,更是提升产品曝光度和权重的关键手段。 首先,安全始终是测评的首要前提。在缺…

不能错过的AI知识学习神器「Mo卡片」

1. 「Mo卡片」——知识点的另一种承载方式 1.1 产品特点 📱一款专为渴望理解和掌握人工智能知识的小伙伴量身打造的轻量级 App。 🏷AI 知识卡片集 Mo卡片内置了 26 套卡片集,总计 1387 张卡片,每张卡片都能获得 1 个核心知识。…

产品经理-产品设计规范(六)

1. 设计规范 2. 七大定律 2.1 菲茨定律 2.1.1 概念 2.1.2 理解 2.1.3 启示 按钮等可点击对象需要合理的大小尺寸根据用户使用习惯合理设计按钮的相对和绝对位置屏幕的边和角很适合放置像菜单栏和按钮这样的元素 2.1.4 参考使用手机习惯 2.1.5 案例 2.2 席克定律 2.2.1 概念 …

# LLM高效微调详解-从Adpter、PrefixTuning到LoRA

一、背景 目前NLP主流范式是在大量通用数据上进行预训练语言模型训练,然后再针对特定下游任务进行微调,达到领域适应(迁移学习)的目的。 Context Learning v.s. SFT 指令微调是预训练语言模型微调的主流范式,其目的是…

Python筑基之旅-文件(夹)和流

目录 一、文件操作 1、文件打开与关闭 2、文件读写 3、文件操作模式 4、文件编码 二、文件夹操作 1、创建文件夹 2、删除文件夹 3、改变当前工作目录 4、获取当前工作目录 5、检查文件/文件夹是否存在 6、遍历文件夹 三、文件路径操作 1、获取绝对路径 2、构建完…

Python3 使用 pymssql 连接 SQL Server 报错:DB-Lib error message 20002, severity 9

一、版本说明 python版本: 3.12.1 pymssql版本: 2.3.0 # pymssql.version_info() SQL Server版本:SQL Server 2008 OS版本: rocky linux 9.4二、报错信息 Traceback (most recent call last):File "src/pymssql/_…

【QT环境配置】节约msvc2017灰色不可用问题

1. 问题 msvc2017不可用,2019、2022都同理解决。 2. 解决 打开控制面板->程序->程序和功能->找到自己安装的vs程序->鼠标右键后出现卸载更改->点击更改 找到下面组件即可。(msvc2019就找msvcv142)

乘风破浪,创维汽车旗舰店落户安徽

2024年5月19日,创维汽车宣城家奇体验中心盛大开业。宣城市委办公室副主任师典雅、市投资促进局副局长金崇学、经开区管委会副主任汤晓峰、宣城市通信局局长梁登峰、创维汽车战区总经理刘俊、创维汽车大区总监王大明等人出席此次开业盛典,共同见证了创维汽…

如何编辑 PDF 中的文本

使用 PDF 格式时最常见的挑战之一是弄清楚如何编辑 PDF 文档中的现有文本。该问题不仅影响新手,还影响多年来处理各种文档的专业人士。 PDF 格式专为处理数字纸张而设计。它以原始形式保留所有数据,例如表格、图章和签名。对于需要安全可靠地分发文档的…

2024年了,再聊安卓上的分身应用工具

大家好,最近更新的慢了,一个最近有了小宝宝之后,更多时间需要忙着照顾她,平时上班较忙,周末留出更多时间陪着她。另一个是,最近一直参与一个项目,一个全新的安卓多开工具,终于做的差…

NIO流(多路复用技术)

目录 什么是NIO使用场景 NIO(new IO)相关包路径NIO的实现基础NIO的核心组件Buffer缓冲区详解数据如何从磁盘读到用户进程 ChannelChannel的使用 其他组件字符集和Charset文件锁NIO工具类使用Files的FileVisitor遍历文件和目录使用WatchService监控文件变化访问文件属性 什么是N…

YOLOv10真正实时端到端目标检测(原理介绍+代码详见+结构框图)| YOLOv10如何训练自己的数据集(NEU-DET为案列)

💡💡💡本文主要内容:真正实时端到端目标检测(原理介绍代码详见结构框图)| YOLOv10如何训练自己的数据集(NEU-DET为案列) 博主简介 AI小怪兽,YOLO骨灰级玩家,1&#xff0…

AI写作工具:助力论文撰写的创新助手

近年来,随着科技的快速发展,AI已经逐渐渗透到了生活中的方方面面,其中也包含着学术领域。 作为学生党,你是否还在为期末论文,大学生实践报告而发愁? 有了这些AI写作神器,大学生们再也不用在期…

icloud照片怎么恢复到相册?2个方法,轻松解决烦恼

在现代生活中,照片承载着我们的回忆和珍贵的时刻,而iCloud提供了便捷的云存储服务,让用户可以方便地备份和同步手机上的照片、视频等文件。 然而,有时候我们可能会不小心删除了在iCloud上的照片,或者想要将iCloud照片…

【408真题】2009-18

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…

【Python】 列表中的删除操作:del、remove 和 pop 的区别

基本原理 在Python中,列表(list)是一种非常灵活的数据结构,它允许我们存储一系列的元素。在处理列表时,我们经常需要添加、修改或删除元素。在删除元素时,我们可以使用三种不同的方法:del、rem…

mac电脑用n切换node版本

一、安装 node版本管理工具 “n” sudo npm install -g n二、检查安装成功&#xff1a; n --version三、查看依赖包的所有版本号 比如: npm view webpack versions --json npm view 依赖包名 versions --json四、安装你需要的版本的node sudo n <node版本号> // 例如…