现在要把nginx旧版本升级到新版,所以针对生产环境的升级做一个平滑升级教程,如下:
  服务器:CentOS7
  旧版本:nginx-1.19.5
  新版本:nginx-1.21.6
  升级步骤:

  1. 解压新版本nginx
1
tar -zxvf nginx-1.21.6.tar.gz
  1. 进入安装目录,开始编译
1
2
# 编译应与之前版本的编译相同,我这里之前编辑就是默认,所以不需要改动
./configure
  1. make一定不要make install!!!
1
make
  1. 替换二进制文件(把新版本的二进制执行文件覆盖过去,要加-f否则会报错正忙)
1
cp -f objs/nginx /usr/local/nginx/sbin/nginx
  1. 现在查看nginx进程
  2. 向主进程(master)发送 USR2 信号,Nginx 会启动一个新版本的 master 进程和对应工作进程,和旧版一起处理请求
1
kill -USR2 26717
  1. 向旧的Nginx主进程(master)发送 WINCH 信号,它会逐步关闭自己的工作进程(主进程不退出),这时所有请求都会由新版 Nginx 处理
1
kill -WINCH 26717
  1. 验证nginx版本号,并访问测试

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