2021-08-19

为了方便读者的阅读,该文通篇使用绝对路径,各位朋友们在实际上操作中可以根据实际情况编写路径(#^.^#)

1. 当前环境



# system
cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

# nginx
./nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
configure arguments: --prefix=/home/tomcat/app/nginx


2. 下载



# 下载新版的 nginx,版本为 1.18.0
wget -P /home/tomcat/bag/ http://nginx.org/download/nginx-1.18.0.tar.gz


3. 升级



# 解压到指定文件夹下
tar -zxf nginx-1.18.0.tar.gz -C /home/tomcat/app/

# 到解压目录下
cd /home/tomcat/app/nginx-1.18.0
# 预编译,老版用到了什么模块,这里也要加上的,我前一版预编译也是这样进行的
./configure --prefix=/home/tomcat/app/nginx/


Linux centos7 nginx 平滑升级_nginx

出现这样的提示信息后就可以进行编译了



# 编译
make


注意不要 make install ,因为这会覆盖安装新版本的 nginx。

做完上面的步骤就可以开始升级了

首先我们要将老版的 nginx 备份



cd /home/tomcat/app/nginx/sbin
# 打开 nginx 服务
./nginx
# 备份
mv nginx nginx1.16.1


Linux centos7 nginx 平滑升级_centos7_02

然后将新版的执行文件复制到这个文件夹下



cd /home/tomcat/app/nginx-1.18.0/objs
cp nginx /home/tomcat/app/nginx/sbin


Linux centos7 nginx 平滑升级_环境搭建_03

Linux centos7 nginx 平滑升级_运维_04

现在就可以进行平滑升级操作了



# 查看当前 nginx 进程号
ps -ef | grep nginx

# 平滑开启新的 nginx 服务,此时新的 master 进程已经正常开启,但老的 work 进程也存在
kill -USR2 主进程号


Linux centos7 nginx 平滑升级_环境搭建_05

 



# 将老的 work 进程平滑停止
kill -WINCH 老版worker 进程号


Linux centos7 nginx 平滑升级_tomcat_06

 



# 关闭老的 nginx master进程
kill -QUIT 老版主进程号


Linux centos7 nginx 平滑升级_运维_07

至此,平滑升级结束,可以看到 nginx 服务并没有受到影响(因为我部署了负载均衡,所以打开是这个界面)

Linux centos7 nginx 平滑升级_centos7_08

 

 






作者:元月二一