nginx平滑升级版本
nginx平滑升级版本
1:nginx平滑升级的概述:
随着网络并发访问量越来越高,nginx web服务器也越来越流行,nginx版本换代越来越频繁,1.15.2版本的nginx更新了许多新功能,生产环境中版本升级必然的但是线上业务不能停,此时nginx的升级就是运维的重要工作了。
2:nginx平滑升级原理
(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有两种进程,一种是主进程,一种是工作进程,当在启动服务的时候,他首先会出现主进程,主进程启动之后去加载配置文件,绑定端口等,然后主进程派送工作进程,工作进程上会持有工作描述符,然后在描述符上添加监听事件来接受请求然后去处理请求。)
3:nginx平滑升级实战
《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平滑升级版本相关推荐
- nginx平滑升级与配置文件详解
nginx平滑升级与配置文件详解 文章目录 nginx平滑升级 nginx配置文件 nginx.conf配置详解 用于调试.定位问题的配置参数 正常运行必备的配置参数 优化性能的配置参数 网络连接相关 ...
- nginx平滑升级make upgrade出错的解决办法
为nginx平滑升级在make upgrate那一步除了点小状况 [root@web01 nginx-1.0.5]# make upgrade /usr/local/nginx/sbin/nginx ...
- Nginx平滑升级到最新版本
(一)简述: 早上收到nginx最新漏洞的通知,Nginx官方发布最新的安全公告,在Nginx范围过滤器中发现了一个安全问题(CVE-2017-7529),通过精心构造的恶意请求可能会导致整数溢出并且 ...
- 生产环境nginx平滑升级
nginx是较常用的软件,真实工作环境中往往遇到版本升级此时又不能关闭卸载之前的版本,接下来为大家介绍平滑升级的办法,文内含长段代码可复制可往左滑,希望对大家有帮助! 实验环境 版本:CentOS7 ...
- Nginx平滑升级,并增加清除缓存模块
平滑升级nginx0.8.46到nginx1.0,并增加清除缓存模块 ×××: wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.g ...
- nginx 平滑升级
怎么能在不停止服务的情况下,平滑的升级nginx?下面告诉你答案,其实很简单 1.下载nginx新版本,并解压,进入解压的目录 2.你要执行旧版本的nginx -V来查看旧版本编译的时候,编译了什么模 ...
- nginx平滑升级添加ssl实现站内https
操作目录在root的home下,/home /mt/server/nginx/sbin/nginx 这是x云默认nginx 路径 下载nginx1.8 stable wget http://nginx ...
- Nginx-学习nginx这一篇就够了、版本平滑升级
学习Nginx这一篇就够了 一.Nginx概述 1. 什么是Nginx 2.常见服务器 3.什么是正向代理 二.安装Nginx与运行 1.去[nginx官网](http://nginx.org/) 下 ...
- 如何对nginx进行平滑升级
nginx平滑升级,不影响线上业务的运行 这里nginx的安装目录是:nginx 第一步:查看nginx版本号: [root@localhost nginx-web]# nginx -v nginx ...
最新文章
- Chirp信号公式与对离散生成算法之间的差异
- 什么叫枚举法_四年级:美妙数学之“巧用枚举法”1(0202四)
- Excel 提取单元格中的数字、中/英文方法
- 你是儒系程序名猿,还是佛系开发大神?
- 灵雀云Kube-OVN:基于OVN的开源Kubernetes网络实践
- 我要吐槽各大自媒体平台的权重问题
- 对Redis中主从复制、哨兵模式和集群进行部署
- 2020年三月计算机二级甘肃报名官网,2020年3月甘肃计算机二级考试报名时间
- 论文阅读—Relation-Aware Graph Attention Network for Visual Question Answering
- Win11和Win10之间鼠标右键菜单切换
- JAVA中调用Arrays工具类遇见的问(帮忙指点一下)
- Openstack云平台的搭建与部署(具体实验过程截图评论拿)
- AMBER:使用Cpptraj计算RMSD 以及使用中遇到的问题
- 凯利边带(Kelly Sidebands)
- python知乎爬虫收藏夹_Python爬取知乎问题收藏夹 爬虫入门
- Python采集网站ip代理, 检测IP代理是否可用,构建自己的ip代理池
- 邮件代发、国外邮件代发、外贸邮件代发平台,送达率、打开率高的秘密
- 表单引擎之表单组件详细说明
- 企业实施办公系统OA可能存在哪些问题?
- 三菱fx3uplc恢复出厂设置_三菱PLC FX3U应用常见问题及解决办法
热门文章
- R-CNN、Fast R-CNN、Faster R-CNN网络结构、框架原理详解
- php curl 设置请求头,php的curl请求如何设置header参数
- java http reffer_HTTP Referer与网站流量来路统计
- python boxplot用法,Python使用plt.boxplot() 参数绘制箱线图
- 高速缓冲存储器cache-主存映射方式介绍及替换算法
- 【WY】数据分析 — Matplotlib 阶段一 :基础语法 二 —— 创建图表
- 2020-11-02 oracle sql listagg函数使用
- 毕业论文word段前2行段后1行不成功终于解决啦啊
- 手把手教你用鸿蒙HarmonyOS实现微信聊天界面(一)
- ElasticSearch之搜索结果返回字段长度问题