有时候我们需要对nginx服务进行版本升级或者安装一些新的模块,最简单的做法就是停止当前的Nginx服务,然后开启新的Nginx服务。但是这样会导致服务器无法访问。为了解决这个问题,我们就需要用到Nginx服务器提供的平滑升级功能,可以实现不关闭服务进行升级。
假设我们又如下需求
Nginx的版本最开始使用的是Nginx-1.22.1,由于服务升级,需要将Nginx的版本升级到Nginx-1.22.3,要求Nginx不能中断提供服务。
环境准备
1.假设我们当前的nginx版本是1.22.1,我们需要升级到1.22.3。
2.将Nginx1.22.3进行参数配置和编译,不需要进行安装
进入Nginx1.22.3的安装目录执行以下命令进行编译
./configure
make
3.备份1.22.1版本的nginx运行文件 nginx_old
cd /usr/local/nginx/sbin
mv nginx nginx_old
4.将Nginx1.23.3安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin(1.22.1)目录下
cp /home/nginx/nginx-1.23.3/objs/nginx /usr/local/nginx/sbin/
5.进入到nginx1.23.3安装目录,执行make upgrade
执行的命令说明
执行 upgrade 命令说明:
nginx -t:对配置文件进行测试。
kill -USR2 <master_pid>:发送信号给原来的 Nginx 主进程,启动新版本的 Nginx。
sleep 1:等待一秒钟。
检查 /usr/local/nginx/logs/nginx.pid.oldbin 文件,确保新版本启动成功。
kill -QUIT <old_master_pid>:发送信号结束原来的 Nginx 主进程。
查看版本是否升级成功