不停止Nginx业务,平滑升降级Nginx版本
大致思路:
- 第一步下载要升(降)级的Nginx源码包;
- 第二步通过当前Nginx的编译配置编译下载的Nginx源码包,**注意!!!这里到make结束,不要在make install**;
参考下面命令替换其中的Nginx路径,直接获取当前Nginx的编译配置:
```shell
/usr/local/soft/nginx/sbin/nginx -V > /tmp/1.txt 2>&1 | cat /tmp/1.txt | grep prefix | awk '{print substr($0, index($0,$3))}' && rm -rf /tmp/1.txt
```
- 第三步把编译后的Nginx程序覆盖旧版本的Nginx程序,**注意!!! 1、cp时候使用 - f参数,没有执行make install ,nginx程序在源码包的objs目录下**
- 第四步通过**USR2指令** 和**当前旧版本的进程ID**启动新的Nginx主进程和工作进程,让新旧Nginx进程共同处理数据;
- 第五步通过**WINCH指令**逐渐关闭旧版本Nginx的工作进程;
- 第六步通过**QUIT指令**在主进程处理完最后服务后停止旧版本Nginx主进程,到这里升(降)级就结束了;
指令简介
```text
主进程支持的信号
TERM,INT : 立刻退出
QUIT :等待工作进程结束后再退出
KILL : 强制终止进程
HUP : 重新加载配置文件相当于reload
USR1:重新打开日志文件,用于日志分隔
USR2:启动新的主进程,实现热升级
WITHCH:逐步关闭工作进程
工作进程支持的信号
TERM,INT:立刻退出
QUIT:等待请求处理结束后再退出
USR1:重新打开日志文件,用于日志分隔
```
详细内容博客地址:Nginx平滑升级 | 忆录云博客