文章目录

  • 4. Nginx 热部署
    • 4.1.检查当前所用的nginx版本
    • 4.2 检查旧的二进制命令编译参数
    • 4.3 备份当前 nginx 二进制命令
    • 4.4 下载一个新版本
    • 4.5 编译安装
    • 4.6 检查新安装的 nginx
    • 4.7 检查当前 nginx 运行状态
    • 4.8 停止旧版本
    • 4.9 再次查看新的 nginx 状态
    • 4.10 退出旧版本 master
    • 4.11 再次查看 nginx 状态
    • 4.12 删除旧进程

4. Nginx 热部署

特点:1)在不重启或者关闭进程的情况下,使用新的应用直接替换旧的应用例如:更换 nginx 的二进制命令版本(即升级或者降级 nginx 版本)2)在不影响用户体验的情况下,进行版本升级或者降级,不主动 kill worker,就能够更换软件的二进制命令

4.1.检查当前所用的nginx版本

# 热部署流程
[root@nginx ~]# nginx -v
nginx version: nginx/1.20.2

4.2 检查旧的二进制命令编译参数

# 要保证新的二进制命令模块和旧的一样,不然更换版本之后如果不一致则很多模块不能使用
[root@nginx ~]# nginx -V   # 这里是 大写的 V
nginx version: nginx/1.20.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments:

4.3 备份当前 nginx 二进制命令

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-1202

4.4 下载一个新版本

wget http://nginx.org/download/nginx-1.18.0.tar.gz
# 解压缩
tar -zxvf nginx-1.18.0.tar.gz

4.5 编译安装

cd nginx-1.18.0./configure       # 注意这里要和之前版本编译的命令参数一致,默认安装则不用参数
make
make install

4.6 检查新安装的 nginx

# 这时就有两个版本的 nginx 命令
[root@nginx nginx-1.18.0]# ls /usr/local/nginx/sbin/
nginx  nginx-1202[root@nginx sbin]# nginx -v
nginx version: nginx/1.18.0
[root@nginx sbin]# nginx-1202 -v
nginx version: nginx/1.20.2

4.7 检查当前 nginx 运行状态

[root@nginx sbin]# ps -ef | grep nginx
root       5447      1  0 08:49 ?        00:00:00 nginx: master process ./nginx
nobody     8687   5447  0 12:25 ?        00:00:00 nginx: worker process
root      11447   8833  0 15:26 pts/0    00:00:00 grep --color=auto nginx

4.8 停止旧版本

# 此时发送一个 USR2 信号给旧的 master process,作用是使得 nginx 旧的版本停止接受用户请求,并且切换成新的 nginx 版本
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid `# 当执行完毕上述命令,旧的 master process,首先会重命名它的 pid 文件,添加上.oldbin后缀;
[root@nginx ~]# ls /usr/local/nginx/logs/
access.log  error.log  nginx.pid  nginx.pid.oldbin
# 然后再自动启动一个新的 master 主进程,以及 worker,使用的是新版本的 nginx 二进制文件
# 此时新的 nginx 就能够自动接受用户发来的请求,过度到新的 nginx-worker 进程上

4.9 再次查看新的 nginx 状态

[root@nginx ~]# ps -ef | grep nginx
root       5447      1  0 08:49 ?        00:00:00 nginx: master process ./nginx
nobody     8687   5447  0 12:25 ?        00:00:00 nginx: worker process
root      11455   5447  0 15:31 ?        00:00:00 nginx: master process ./nginx # 这里新的 nginx 进程,它的父进程 id 就是之前旧的 nginx 的进程 id
nobody    11456  11455  0 15:31 ?        00:00:00 nginx: worker process
root      11458   8833  0 15:31 pts/0    00:00:00 grep --color=auto nginx

4.10 退出旧版本 master

# 发送 WINCH 信号给旧的 master 进程,让旧的 master 进程优雅的退出
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin `

4.11 再次查看 nginx 状态

[root@nginx ~]# ps -ef | grep nginx
# 这时候旧的 nginx 下就没有 worker 进程了,旧的 master 不会自己退出,当新的 master 有问题时,可以直接回滚到旧的 master 上使用
root       5447      1  0 08:49 ?        00:00:00 nginx: master process ./nginx
root      11455   5447  0 15:31 ?        00:00:00 nginx: master process ./nginx
nobody    11456  11455  0 15:31 ?        00:00:00 nginx: worker process
root      11465   8833  0 15:41 pts/0    00:00:00 grep --color=auto nginx
如果出现发送kill -USR2信号后,未出现新的master进程
是因为:旧的nginx必须用绝对路径启动,然后再发送USR2信号

4.12 删除旧进程

# 使用一段时间之后如果觉得 nginx 服务一切正常,就可以 kill 旧的 master主进程了
kill -9 `cat /usr/local/nginx/logs/nginx.pid.oldbin `
[root@nginx ~]# ps -ef | grep nginx
root      11455      1  0 15:31 ?        00:00:00 nginx: master process ./nginx
nobody    11456  11455  0 15:31 ?        00:00:00 nginx: worker process
root      11471   8833  0 15:44 pts/0    00:00:00 grep --color=auto nginx

4. Nginx 热部署相关推荐

  1. Nginx热部署详解

    前言 原理: nginx 支持热加载 热部署 ,在不打断用户请求的情况下更新版本 Nginx 只所以出名,和它内部的精密设计有关.Nginx 采用了高度模块化的设计思路,并且内部的进程主要有两类,ma ...

  2. Tomcat学习总结(8)——Tomcat+Nginx集群解决均衡负载及生产环境热部署

    近日,为解决生产环境热部署问题,决定在服务器中增加一个tomcat组成集群,利用集群解决热部署问题.

  3. 【转】Nginx+uWSGI 部署 Django 应用

    原文来自: http://www.oschina.net/question/54100_30386 http://obmem.info/?p=703 常见的django webapp 部署方式采用FC ...

  4. SpringBoot热部署加持

    概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件.或者一些诸如xml的配置文件.以及一些静态文件生效,这样耗时又低效.所谓的热部署指的是 ...

  5. ssm如何支持热部署_最新Spring Boot实战文档推荐:项目搭建+配置+SSM整合

    在Spring Boot项目中,正常来说是不存在XML配置,这是因为Spring Boot不推荐使用XML,注意,排不支持,Spring Boot推荐开发者使用Java配置来搭建框架, Spring ...

  6. nginx安装部署和配置管理

    一.HTTP 介绍 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器 ...

  7. springboot热部署该怎么实现?springboot热部署实现方式

    Spring家族博大精深,我之前讲过该如何搭建一个简单的springboot项目,这次我们就来深入探讨一下springboot,比如,你们知道springboot该如何搭建热部署吗?下面就来为大家讲解 ...

  8. Nginx的部署与配置

    Nginx 简介 Nginx是一款自由的.开源的.高性能的HTTP服务器和 反向代理 服务器:同时也是一个IMAP.POP3.SMTP代理服务器:Nginx可以作为一个HTTP服务器进行网站的发布处理 ...

  9. 一文搞懂使用Nginx服务器部署前端Web项目

    1 Nginx简介与安装 概要 Nginx 简介 Nginx 架构说明 Nginx 基础配置与使用 1.1 Nginx 简介 Nginx是一个高性能WEB服务器,除它之外Apache.Tomcat.J ...

最新文章

  1. 46 岁美国华裔“鞋王”意外去世,25 岁创业成亿万富翁
  2. mysql删除有空格字符名称的触发器
  3. Flask常见错误与解决方法
  4. Linux 命令行上执行多个命令(分隔符简介使用)
  5. 求出数组中元素的总和_数组中所有元素的总和可被给定数K整除
  6. LeetCode 283. Move Zeroes
  7. 【奇技淫巧】Android真机调试看不到应用logcat或者应用logcat信息太少的解决方法
  8. 系统学习深度学习(八)--损失函数
  9. spring cloud config 加密配置
  10. ul列表中包含input时line-height属性失效的解决办法
  11. 数据库学习入门(转)
  12. Android模仿新浪微博(写微博界面)
  13. 《高性能MySQL》读书笔记(1~6章)
  14. gopro7怎么回看视频_gopro7推荐帧数设置 gopro7视频格式设置
  15. Fiori 磁贴配置
  16. 解决 There is no getter for property named ‘null‘ in ‘class 报错
  17. 视频中的声音如何处理,如何添加背景音乐?
  18. 解读手机拍照的各个参数(延时摄影)
  19. Java实现 LeetCode 88 合并两个有序数组
  20. 【hbase问题】org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not run

热门文章

  1. 原来微信小程序已经可以在自己的APP上架运行了
  2. Cadence Allegro(15):设置全局铜皮参数
  3. 2021年4月Python小屋编程比赛获奖名单
  4. Google 的秘密 PageRank彻底解说 中文版
  5. Shell脚本:shell编程规范与变量
  6. twelveth-alien_invasion-alien_invasion.py
  7. 首个中文Stable Diffusion模型开源;TPU演进十年;18个PyTorch性能优化技巧 | AI系统前沿动态...
  8. 微星x58pro支持服务器内存吗,价廉却不简单!微星X58 Pro主板超频评测
  9. 至简设计系列_简易计算器
  10. 基于android的运动app,毕业设计(论文)-基于Android的手机运动的APP设计与实现.doc...