Nginx平滑升级详细步骤-113p.cn
2024-08-25 16:06:10
- 认识平滑升级
有时候我们需要对Nginx版本进行升级以满足运维人员对其功能的需求,例如添加xxx模块,需要xxx功能,而此时Nginx又在跑着业务无法停掉,这时我们就只能平滑升级了。
- 平滑升级原理
Nginx服务接收到USR2信号后,将Nginx.pid文件添加.oldbin变成nginx.pid.oldbin文件;然后执行新版本Nginx服务器的二进制文件启动服务,如果新的服务启动成功,系统中将有新旧两个Nginx主进程共同提供Web服务,之后,需要向旧的Nginx服务进程发送WINCH信号,使旧的Nginx服务平滑停止,并删除Nginx.pid.oldbin文件。
- Nginx信号简介
1.主进程支持的信号
2.TERM, INT: 立刻退出
3.QUIT: 等待工作进程结束后再退出
4.KILL: 强制终止进程
5.HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程。
6.USR1: 重新打开日志文件
7.USR2: 启动新的主进程,实现热升级
8.WINCH: 逐步关闭工作进程
9.工作进程支持的信号
10.TERM, INT: 立刻退出
11.QUIT: 等待请求处理结束后再退出
12.USR1: 重新打开日志文件
- 进行平滑升级
1.当前环境
- System : CentOS-7.5
- Nginx :1.12.0
2.查看当前版本并下载新版本Nginx
- /usr/local/nginx/sbin/nginx -v
- # nginx version: nginx/1.12.0
- wget -c http://nginx.org/download/nginx-1.16.0.tar.gz
- # 下载的版本为nginx-1.16.0
3.开始平滑升级
- tar -xzf nginx-1.16.0.tar.gz
- # 解压源码包
- cd nginx-1.16.0
- ./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module
- # 进入源码包内执行预编
预编译结果如上图所示,即可执行编译。。。
- make
- # 执行编译,切记不要安装也就是不要去执行 make install
对Nginx执行文件进行更新
- cd /usr/local/nginx/sbin
- # 进入nginx的执行文件目录内
- mv nginx nginx.old
- # 将旧版本Nignx执行文件备份为nginx.old
- cp /root/nginx-1.16.0/objs/nginx .
- # 将新版本Nginx执行文件移动到当前目录内
进行平滑重启
- /usr/local/nginx/sbin/nginx -t
- # 检测新版本Nginx是否正常 正常为 successful
- ps -ef|grep nginx
- # 查看旧版本nginx进程
- kill -USR2 4428
- # 向主进程发送USR2信号,Nginx会启动一个新版本的master进程和工作进程,和旧版一起处理请求
此时再次查看Nginx进程就发现有俩Nginx在工作
- kill -WITCH 4428
- # 向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理
- kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
- # 杀死旧版本Nginx主进程或者 kill -9 2248 也可以
- /usr/local/nginx/sbin/nginx -v
- # ouput:nginx version: nginx/1.16.0
- Nginx平滑升级结束
文章来源:https://www.113p.cn/287.html
最新文章
- Hibernate3.3.2 手动配置annotation环境
- Effective C++ 之 Item 5:了解C++默默编写并调用哪些函数
- 修改win10打开文件资源管理器
- extjs笔记
- Python程序的执行原理(转载)
- SVN 中trunk、tags、branches使用
- Android开发之Intent.Action
- BestCoder Round #14
- mysql_navicat_快捷键
- Manual write code to record error log in .net by Global.asax
- NodeJS Addon 多线程通信
- Asp.net Core IdentityServer4 入门教程(一):概念解析
- Python-10 字典dict
- idea常用快捷键及操作
- 火币网API文档——WebSocket API错误码
- Docker 创建 mysql 容器
- Linux释放内存小脚本
- 项目通过https访问的tomcat相关配置
- vagrant之道(即其工作流程)
- Docker--删除容器实例和镜像
热门文章
- Java实现蓝桥杯 历届试题 k倍区间
- Java实现 蓝桥杯 算法训练 数字游戏
- Java实现 蓝桥杯 算法提高 最大值路径
- Android中如何使用列表对话框
- Java实现 蓝桥杯 历届试题 数字游戏
- Java实现第九届蓝桥杯字母阵列
- github下载速度太慢,这里有已经下载完的nacos-server.zip组件
- 2020/06/05 JavaScript高级程序设计 函数表达式
- pip应用实例
- [转] C++项目中的extern ";C"; {}