实现热部署(在线升级):
热部署方案一 (有弊端,不利于回滚)
查看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. 从零配置Webpack项目

    webpack.config.js基本配置 webpack.config.js是webpack的配置文件,在此文件中对项目入口,项目的输出,loader,插件以及环境等进行简单的配置 首先来对webp ...

  2. java解析CSV文件(getCsvData 解析CSV文件)

    首先需要下载opencsv的jar包 <!-- https://mvnrepository.com/artifact/com.opencsv/opencsv --> <depende ...

  3. 【SpringCloud】Ribbon

    Ribbon 负载均衡原理 order-service 发起 user-service 请求,被ribbon进行拦截; ribbon会向注册中心拉取user-service 相对应的服务; 注册中心返 ...

  4. 如何给Github上的开源项目提交PR?

    前言 对于一个热爱开源的程序员而言,学会给GitHub上的开源项目提交PR这是迈出开源的第一步.今天我们就来说说如何向GitHub的开源项目提交PR,当然你提交的PR可以是一个项目的需求迭代.也可以是 ...

  5. [HUBUCTF 2022 新生赛]simple_RE

    [HUBUCTF 2022 新生赛]simple_RE 查壳,64位 找main函数,F5查看伪代码,简单分析一下 int __cdecl main(int argc, const char **ar ...

  6. 小程序软键盘&SM2解密方式

    小程序软键盘&SM2解密方式 转载请著名出处:https://www.cnblogs.com/funnyzpc/p/17572445.html SM2基本信息 私钥(primary key) ...

  7. sshpass快速登录远程主机:s2

    #!/bin/bash passwd= if [ $# -ne 1 ] then echo "$0 [31|37|61]" fi if command -v sshpass the ...

  8. [golang]获取本机IP

    前言 方便在内网环境中获取服务器本机IP,省了在脚本中过滤ip或ifconfig的结果. 如果内网中有nginx的话,通过nginx获取本机IP也很方便,可参考 借助nginx自动获取本机IP 示例代 ...

  9. 【技术积累】Linux中的命令行【理论篇】【六】

    as命令 命令介绍 在Linux中,as命令是一个汇编器,用于将汇编语言源代码转换为可执行的目标文件.它是GNU Binutils软件包的一部分,提供了一系列用于处理二进制文件的工具. 命令说明 as ...

  10. Stable Diffusion基础:ControlNet之图片风格迁移

    今天继续给大家分享AI绘画中 ControlNet 的强大功能,本次的主角是 Reference,它可以将参照图片的风格迁移到新生成的图片中,这句话理解起来很困难,我们将通过几个实例来加深体会,比如照 ...