Nginx 平滑升级
目录
升级 nginx-1.12.0 到 nginx-1.22.0
1. 查看版本
nginx -v
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
3. 安装编译环境依赖包
yum -y install \
pcre-devel \
zlib-devel \
gcc \
gcc-c++ \
make \
openssl \
openssl-devel
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
5. 编译
按照原来的编译参数安装 nginx 的方法进行安装,只需要到 make,千万不要 make install 。如果make install 会将原来的配置文件覆盖
make
6. 备份原二进制文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
7. 更换二进制文件
复制新的nginx二进制文件,进入新的nginx源码包
cp /opt/nginx-1.22.0/objs/nginx /usr/local/nginx/sbin/
8. 测试新Ngin二进制
测试新版本的nginx是否正常
/usr/local/nginx/sbin/nginx -t
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 8月 28 19:22 nginx.pid.oldbin
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