实现热部署(在线升级):
热部署方案一 (有弊端,不利于回滚)
查看nginx版本及源编译差数:
/usr/local/nginx/sbin/nginx -V

预编译/ 编译/ 安装:在预编译之前,先删除之前生成的Makefile文件,保存干净 也可不删除:
cd nginx-1.16.0
make clean
echo-nginx-module-0.61.tar.gz (需手动上传)
mv /usr/src/echo-nginx-module-0.61.tar.gz /usr/src/echo-nginx-module
预编译-添加echo-nginx-module模块(添加前模块需要和之前的一致)
./configure --prefix=/usr/local/nginx --with-http_stub——status_module --with-http_ssl_module --add-module=/usr/src/echo-nginx-module
编译 安装
make &&make install
/usr/local/nginx/sbin/nginx -V
进行升级
make upgrade

热部署方案二 (更谨慎的操作,随时可回滚):
查看原版本参数及编译安装均与热部署一相同
/usr/local/nginx/sbin/nginx -V
cd /usr/src/nginx-1.16.0
删除之前Makefile文件
make clean
进行预编译
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../echo-nginx-module
编译/ 安装
make && make install

启动nginx服务/查看进程:
/usr/local/nginx/sbin/nginx
ps -ef|grep nginx
查看nginx.pid master老进程
cat /usr/local/nginx/logs/nginx.pid
向master进程xxxxx(进程id) 请求 生成新的进程
kill -USR2 xxxxx

优雅退出老master进程
向老master进程发信号 xxxxx优雅退出, 新master进程xxxxx起来:
kill -WINCH xxxxx
ps -ef|grep nginx

快泽/回滚:
重新拉起老master进程:
kill -HUP xxxxx
退出新的master进行:
kill -QUIT xxxxx

热部署三:
下载源码包:

wget http://www.nginx.org/download/nginx-1.14.2.tar.gz
获取旧版本号
/usr/local/nginx/sbin/nginx -V
解压 编译新版本的nginx 与旧版本的参数相同,不加上旧版本的参数,旧的版本参数不可用:
tar xf nginx-1.14.2.tar/gz
cd nginx-1.14.2
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
编译/ 安装 (这里我选择编译不安装)
make
下图是编译安装自动生成的文件 效果

备份旧版本的nginx可执行文件, 复制新版本的nginx执行文件 (默认编译安装时已复制过去, 如果没有编译安装 自己手动复制)
mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.old
cp objs/nginx /usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -v
/usr/local/nginx/sbin/nginx.old -v

平滑重启动测试:
/usr/local/nginx/sbin/nginx -s reload
/usr/local/nginx/sbin/nginx -v

 

nginx虚拟机及热部署(在线升级)的更多相关文章

  1. Nginx热部署 平滑升级 日志切割

    1.重载 修改nginx配置文件之后,在不影响服务的前提下想加载最新的配置,就可以重载配置即可. 操作如下: 1)修改nginx配置文件 2)nginx -t     检查nginx文件语法是否有误 ...

  2. Nginx 热部署和日志切割,你学会了吗?

    上篇文章,我们已经安装好 Nginx,并且配置好 Nginx 文件后,这个时候我就需要操作 Nginx 的命令行了,这篇文章主要讲解 Nginx 命令行相关知识,并通过日常遇到的热部署.切割日志文件场 ...

  3. nginx之热部署,以及版本回滚

    热部署的概念:当从老版本替换为新版本的nginx的时候,如果不热部署的话,会需要取消nginx服务并重启服务才能替换成功,这样的话会使正在访问的用户在断开连接,所以为了不影响用户的体验,且需要版本升级 ...

  4. nginx命令行及演示:重载、热部署、日志切割

    重载配置文件 nginx -s reload 热部署(升级nginx) 首先备份二进制文件 cp nginx nginx.old  拷贝新版本的nginx替换以前的nginx二进制文件 cp  ngi ...

  5. Nginx系列p2:重载,热部署,日志分割

    今天我们来学习 nginx 的 重载.热部署.日志分割功能 重载:当我们需要修改配置文件中的一些值,我们可以直接修改该配置文件,然后重新启动 nginx 服务,就可以实现在 nginx 不停止服务的情 ...

  6. nginx使用热部署添加新模块

    简介 当初次编译安装nginx时,http_ssl_module 模块默认是不编译进nginx的二进制文件当中,如果需要添加 ssl 证书.也就是使用 https协议.那么则需要添加 http_ssl ...

  7. JAVA代码热部署,在线不停服动态更新

    本地debug的时候,可以实时编译并更新代码,线上也可以不停服来动态更新类,即所说的java热部署.   JDK代理的两种方式: 1.premain方式是Java SE5开始就提供的代理方式,但其必须 ...

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

    近日,为解决生产环境热部署问题,决定在服务器中增加一个tomcat组成集群,利用集群解决热部署问题. 这样既能解决高并发瓶颈问题,又能解决热部署(不影响用户使用的情况下平滑更新生产服务器)问题. 因为 ...

  9. nginx负载均衡和tomcat热部署简单了解

    简单说下几个名词 nginx     它是一个反向代理,实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的 ...

  10. 【nginx】nginx:利用负载均衡原理实现代码的热部署和灰度发布

    事情起因很简单,代码的改动量很大.而且刚接手服务器,对原有的代码进行了一定程度的重构.虽然在测试服务器上做了较多的测试工作,但是直接将代码送入生产环境还是不放心,万一配置出问题服务直接崩溃怎么解?万一 ...

随机推荐

  1. OC项目集成flutter后,编译卡死

    oc项目集成flutter的项目,本来运行的好好的,突然就再Xcode编译就是卡死的情况, 先运行一下flutter的项目,再编译Xcode的项目,就好了

  2. Day06_Java_作业

    A:简答题 1. 类是什么? 对象是什么?举例说明 2. 类由哪些内容组成? 3. 成员变量与局部变量的区别? 4. 什么是匿名对象?什么时候使用匿名对象? 5. 使用面向对象[封装]的好处有哪些? ...

  3. 【调制解调】PM 调相

    说明 学习数字信号处理算法时整理的学习笔记.同系列文章目录可见 <DSP 学习之路>目录,代码已上传到 Github - ModulationAndDemodulation.本篇介绍 PM ...

  4. python 将中文数字转换成阿拉伯数字

    日常遇到的中文数字主要有两种情况: 1."二零零一"这种类型,只包含[0-9]对应的十个中文字,需要转换成数字:2001.这种情况的转换十分简单. 2. "三百二十一&q ...

  5. python(django启动报错,之编码问题)UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte

  6. MarkdownQuote:简化 Markdown 中的代码引用!

    MarkdownQuote:简化 Markdown 中的代码引用! 这是 SourceCodeTrace 项目之一,通过在 IDE 中提供一种便捷的方式,快速复制包含代码来源 Markdown 代码块 ...

  7. shell 编程变量使用心得

    类型 示例 用途 大写的变量名 IP 表示常量,比如,用来记录输入和输出文件名 小写变量名 mac 一般变量 左边下划线 _mac 临时的中间变量,只引用一次的变量 右边下划线 tmpfile_ 临时 ...

  8. std::queue 中遇到释放内存错误的问题

    项目上有个需求要用到 std::queue 顺序处理消息事件 简单的示例如下: struct MyEvent { MyEvent() { event_ = CreateEvent(nullptr, 0 ...

  9. 用 GPT-4 给开源项目 GoPool 重构测试代码 - 每天5分钟玩转 GPT 编程系列(8)

    目录 1. 好险,差点被喷 2. 重构测试代码 2.1 引入 Ginkgo 测试框架 2.2 尝试改造旧的测试用例 2.3 重构功能测试代码 3. 总结 1. 好险,差点被喷 早几天发了一篇文章:&l ...

  10. 文心一言 VS 讯飞星火 VS chatgpt (84)-- 算法导论8.2 1题

    一.用go语言,参照图8-2 的方法,说明 COUNTING-SORT 在数组 A=(6,0,2,0,1,3,4,6,1,3,2)上的操作过程. 文心一言: Counting Sort 是一种非比较型 ...