Nginx 平滑升级


升级 nginx-1.12.0 到 nginx-1.22.0

1. 查看版本

nginx -v

image-20230828192540914

2. 下载或上传 nginx 1.22.0 版本

wget -O /opt/nginx-1.22.0.tar.gz https://nginx.org/download/nginx-1.22.0.tar.gz
tar -xf /opt/nginx-1.22.0.tar.gz

image-20230828193155646

3. 安装编译环境依赖包

yum -y install \
pcre-devel \
zlib-devel \
gcc \
gcc-c++ \
make \
openssl \
openssl-devel

image-20230828193616256

4. 设置安装路径及模块

cd /opt/nginx-1.22.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

image-20230828195158886

5. 编译

按照原来的编译参数安装 nginx 的方法进行安装,只需要到 make,千万不要 make install 。如果make install 会将原来的配置文件覆盖

make

6. 备份原二进制文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

image-20230829180434138

7. 更换二进制文件

复制新的nginx二进制文件,进入新的nginx源码包

cp /opt/nginx-1.22.0/objs/nginx /usr/local/nginx/sbin/

image-20230829181106365

8. 测试新Ngin二进制

测试新版本的nginx是否正常

/usr/local/nginx/sbin/nginx -t

image-20230829181424875

9. 发送平滑信号

给nginx发送平滑迁移信号(若不清楚pid路径,请查看nginx配置文件)

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

# 查看nginx pid,会出现一个nginx.pid.oldbin
ll /usr/local/nginx/logs/
-rw-r--r--. 1 root root  5 828 19:22 nginx.pid.oldbin

image-20230829182046268

10. 逐步关闭旧Nginx的工作

kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`

11. 加载新的配置文件

kill -HUP `cat /usr/local/nginx/logs/nginx.pid.oldbin`

重载旧的nginx工作进程是为了使其加载新的配置文件,以应用升级后的配置。在nginx的平滑升级过程中,我们先启动了新版本的nginx进程,并将请求逐渐迁移到新进程上,同时旧进程仍然在工作。当所有请求都转移到新进程后,就可以关闭旧进程。

在关闭旧进程之前,我们需要确保新进程已经加载了更新后的配置文件。通过发送HUP(Hang Up)信号给旧进程,可以实现重新加载配置文件,使旧进程使用新的配置。这样可以确保在关闭旧进程之前,新进程已经开始使用新的配置,从而实现平滑过渡,避免在升级过程中出现服务中断或配置冲突的情况。

因此,kill -HUP cat /var/run/nginx.pid.oldbin``命令的作用是向旧进程发送HUP信号,要求重新加载配置文件并应用更新后的配置。

12. 结束旧Nginx工作进程

结束工作进程,完成此次升级

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

13. 验证Nginx是否升级成功

nginx -v
lsof -i:80

image-20230829195700145

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值