现在要把nginx旧版本升级到新版,所以针对生产环境的升级做一个平滑升级教程,如下:
服务器:CentOS7
旧版本:nginx-1.19.5
新版本:nginx-1.21.6
升级步骤:
- 解压新版本nginx
1
| tar -zxvf nginx-1.21.6.tar.gz
|
- 进入安装目录,开始编译
1 2
| # 编译应与之前版本的编译相同,我这里之前编辑就是默认,所以不需要改动 ./configure
|
make
,一定不要make install
!!!
- 替换二进制文件(把新版本的二进制执行文件覆盖过去,要加
-f
否则会报错正忙)
1
| cp -f objs/nginx /usr/local/nginx/sbin/nginx
|
- 现在查看nginx进程

- 向主进程(master)发送 USR2 信号,Nginx 会启动一个新版本的 master 进程和对应工作进程,和旧版一起处理请求
- 向旧的Nginx主进程(master)发送 WINCH 信号,它会逐步关闭自己的工作进程(主进程不退出),这时所有请求都会由新版 Nginx 处理
- 验证nginx版本号,并访问测试


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