nginx平滑升级版本

1nginx平滑升级的概述:

随着网络并发访问量越来越高,nginx web服务器也越来越流行,nginx版本换代越来越频繁,1.15.2版本的nginx更新了许多新功能,生产环境中版本升级必然的但是线上业务不能停,此时nginx的升级就是运维的重要工作了。

2nginx平滑升级原理

1): 多进程模式下的请求分配方式:

Nginx默认工作在多进程模式下,即主进程(master process)启动后完成配置加载和端口绑定等动作,fork出指定数量的工作进程(worker process),这些子进程会持有监听端口的文件描述符(fd),并通过在该描述符上添加监听事件来接受连接(accept)。

2):信号的接受和处理:

nginx主进程在启动完成后会进入等待状态,负责影响各类系统,如:SIGCHLD,SIGHUP,SIGUSR2.

3):Nginx信号介绍:

《1》:主进程支持的信号

  • TERM,INT:        立刻推出
  • QUIT:             等待工作进程结束后再推出
  • KILL:              强制终止进程
  • HUP:             重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程
  • USR1:            重新打开日志文件
  • USR2:            启动新的主进程,实现热升级
  • WINCH:         逐步关闭工作进程

《2》:工作进程支持的信号

  • TERM,INT:        立刻退出
  • QUIT:             等待请求处理结束后再退出
  • USR1:            重新打开日志文件

(注:nginx主要玩的是信号,nginx有两种进程,一种是主进程,一种是工作进程,当在启动服务的时候,他首先会出现主进程,主进程启动之后去加载配置文件,绑定端口等,然后主进程派送工作进程,工作进程上会持有工作描述符,然后在描述符上添加监听事件来接受请求然后去处理请求。)

3nginx平滑升级实战

《1》:rz  上传

《2》:tar xf nginx-1.15.9.tar.gz -C /usr/src/     解压

《3》: cd /usr/src/nginx-1.15.9/   切换目录

《4》:useradd -M -s /sbin/nologin nginx   创建用户

《5》:./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install  编译安装

(注:以上方式是报错

解决方法:

《1》:yum -y install pcre-devel openssl openssl-devel  安装依赖包

))))))

《6》:ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/   创建链接

《7》:vim /usr/local/nginx/conf/nginx.conf  编辑文件

《8》:修改文件

worker_processes  2;

《9》:nginx  启动

《10》:netstat -lnpt |grep 80

《11》:ps aux | grep nginx

1):查看旧版本nginx的编译参数

《1》: nginx -V  查看编译安装时候的配置项

2):编译安装新版本nginx源码包,安装路径需要与旧版本一致,(注:不要执行make install 上传源码包不要与老版本差的太大。)

《1》:rz  上传

《2》: tar xf nginx-1.16.0.tar.gz -C /usr/src/    解压

《3》: cd /usr/src/nginx-1.16.0/  切换目录

《4》:./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module --with-pcre && make  编译安装

3):备份二进制文件,用新版本的替换

《1》:ls  查看,(注:里面有一个objs目录,在objs目录里有一个nginx的主程序。)

《2》: cd /usr/local/nginx/sbin/  切换目录

《3》:mv nginx nginx.old  修改名称

《4》:ls  查看

《5》:cp /usr/src/nginx-1.16.0/objs/nginx ./   复制

《6》:./nginx -t  用新程序去加载老文件的语法

(注:不能把老的进程杀死,假如用户在访问资源,这时候不就完了。)

4):发送USR2信号

向主进程(master)发送usr2信号,nginx会启动一个新的版本的master进程和对应工作进程,和旧版本一起处理请求

《1》:ps aux | grep nginx   查看进程

《2》:kill -USR2 10826  发送信号   (注:这个时候就要看运气了,如果运气不好就不会出现,如果运气好就会有。)

在做一个遍试一试

《1》:rm -rf nginx   删了

《2》:mv nginx.old nginx  修改名

《3》:killall -9 nginx  杀死进程

《4》:nginx 重启

《5》:mv nginx nginx.old  重命名

《6》:mv /usr/src/nginx-1.16.0/objs/nginx ./  移动

《7》:ps aux |grep nginx  查看进程

《8》:kill -USR2 14234   发送信号

《9》:ps aux |grep nginx    查看进程  (注:此时出现了 许多进程,说明成功。)

《10》:访问(注:这个时候新的和旧的都在发送请求。)

5)发送WINCH 信号(注:就是让老的工作进程逐步退出。)

向旧的Nginx主进程(master)发送WINCH信号,它会逐步关闭自己的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理

《1》:kill -WINCH 14234  发送信号

《2》:ps aux |grep nginx 查看进程

注意:回滚步骤,发送HUP信号

如果这时需要回退继续使用旧版本,可向旧的Nginx主进程发送HUP信号,它会重新启动工作进程,仍使用旧版配置文件。然后可以将新版Nginx进程杀死(使用QUIT、TERM    、或者KILL)

《1》:kill -HUP …….

6):发送OUT 信号

升级完毕,可向旧的Nginx主进程(master)发送(QUIT、TERM、或者KILL)信号,时旧的主进程退

《1》:kill -QUIT  14234

《2》:ps aux |grep nginx

7):验证nginx版本号,并访问测试

《1》: nginx -v

nginx平滑升级版本相关推荐

  1. nginx平滑升级与配置文件详解

    nginx平滑升级与配置文件详解 文章目录 nginx平滑升级 nginx配置文件 nginx.conf配置详解 用于调试.定位问题的配置参数 正常运行必备的配置参数 优化性能的配置参数 网络连接相关 ...

  2. nginx平滑升级make upgrade出错的解决办法

    为nginx平滑升级在make upgrate那一步除了点小状况 [root@web01 nginx-1.0.5]# make upgrade /usr/local/nginx/sbin/nginx ...

  3. Nginx平滑升级到最新版本

    (一)简述: 早上收到nginx最新漏洞的通知,Nginx官方发布最新的安全公告,在Nginx范围过滤器中发现了一个安全问题(CVE-2017-7529),通过精心构造的恶意请求可能会导致整数溢出并且 ...

  4. 生产环境nginx平滑升级

    nginx是较常用的软件,真实工作环境中往往遇到版本升级此时又不能关闭卸载之前的版本,接下来为大家介绍平滑升级的办法,文内含长段代码可复制可往左滑,希望对大家有帮助! 实验环境 版本:CentOS7 ...

  5. Nginx平滑升级,并增加清除缓存模块

    平滑升级nginx0.8.46到nginx1.0,并增加清除缓存模块 ×××: wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.g ...

  6. nginx 平滑升级

    怎么能在不停止服务的情况下,平滑的升级nginx?下面告诉你答案,其实很简单 1.下载nginx新版本,并解压,进入解压的目录 2.你要执行旧版本的nginx -V来查看旧版本编译的时候,编译了什么模 ...

  7. nginx平滑升级添加ssl实现站内https

    操作目录在root的home下,/home /mt/server/nginx/sbin/nginx 这是x云默认nginx 路径 下载nginx1.8 stable wget http://nginx ...

  8. Nginx-学习nginx这一篇就够了、版本平滑升级

    学习Nginx这一篇就够了 一.Nginx概述 1. 什么是Nginx 2.常见服务器 3.什么是正向代理 二.安装Nginx与运行 1.去[nginx官网](http://nginx.org/) 下 ...

  9. 如何对nginx进行平滑升级

    nginx平滑升级,不影响线上业务的运行 这里nginx的安装目录是:nginx 第一步:查看nginx版本号: [root@localhost nginx-web]# nginx -v nginx ...

最新文章

  1. Chirp信号公式与对离散生成算法之间的差异
  2. 什么叫枚举法_四年级:美妙数学之“巧用枚举法”1(0202四)
  3. Excel 提取单元格中的数字、中/英文方法
  4. 你是儒系程序名猿,还是佛系开发大神?
  5. 灵雀云Kube-OVN:基于OVN的开源Kubernetes网络实践
  6. 我要吐槽各大自媒体平台的权重问题
  7. 对Redis中主从复制、哨兵模式和集群进行部署
  8. 2020年三月计算机二级甘肃报名官网,2020年3月甘肃计算机二级考试报名时间
  9. 论文阅读—Relation-Aware Graph Attention Network for Visual Question Answering
  10. Win11和Win10之间鼠标右键菜单切换
  11. JAVA中调用Arrays工具类遇见的问(帮忙指点一下)
  12. Openstack云平台的搭建与部署(具体实验过程截图评论拿)
  13. AMBER:使用Cpptraj计算RMSD 以及使用中遇到的问题
  14. 凯利边带(Kelly Sidebands)
  15. python知乎爬虫收藏夹_Python爬取知乎问题收藏夹 爬虫入门
  16. Python采集网站ip代理, 检测IP代理是否可用,构建自己的ip代理池
  17. 邮件代发、国外邮件代发、外贸邮件代发平台,送达率、打开率高的秘密
  18. 表单引擎之表单组件详细说明
  19. 企业实施办公系统OA可能存在哪些问题?
  20. 三菱fx3uplc恢复出厂设置_三菱PLC FX3U应用常见问题及解决办法

热门文章

  1. R-CNN、Fast R-CNN、Faster R-CNN网络结构、框架原理详解
  2. php curl 设置请求头,php的curl请求如何设置header参数
  3. java http reffer_HTTP Referer与网站流量来路统计
  4. python boxplot用法,Python使用plt.boxplot() 参数绘制箱线图
  5. 高速缓冲存储器cache-主存映射方式介绍及替换算法
  6. 【WY】数据分析 — Matplotlib 阶段一 :基础语法 二 —— 创建图表
  7. 2020-11-02 oracle sql listagg函数使用
  8. 毕业论文word段前2行段后1行不成功终于解决啦啊
  9. 手把手教你用鸿蒙HarmonyOS实现微信聊天界面(一)
  10. ElasticSearch之搜索结果返回字段长度问题