Nginx平滑升级
2021/12/15 7:20:09
本文主要是介绍Nginx平滑升级,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
问题
如果想对Nginx的版本进行更新,或者要应用一些新的模块,最简单的做法就是停止当前的Nginx服务,然后开启新的Nginx服务。但是这样会导致在一段时间内,用户是无法访问服务器。为了解决这个问题,我们就需要用到Nginx服务器提供的平滑升级
功能。这个也是Nginx的一大特点,使用这种方式,就可以使Nginx在7*24小时不间断的提供服务了。
接下来我们分析下需求:
需求:Nginx的版本最开始使用的是Nginx-1.18.0,由于服务升级,需要将Nginx的版本升级到Nginx-1.20.2,要求Nginx不能中断提供服务。
为了应对上述的需求,提供两种解决方案:
方案一:使用Nginx服务信号完成Nginx的升级
方案二:使用Nginx安装目录的make命令完成升级
环境准备
-
先准备两个版本的Nginx分别是1.18.0和1.20.2
-
使用Nginx源码安装的方式将1.18.0版本安装成功并正确访问
# 进入安装目录 /configure make && make install
- 将Nginx1.20.2进行参数配置和编译,不需要进行安装。
# 进入安装目录 ./configure make
使用Nginx服务信号进行升级
- 将1.18.0版本的sbin目录下的nginx进行备份
cd /usr/local/nginx/sbin mv nginx nginxold
- 第二步:将Nginx1.20.2安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin目录下
cd ~/nginx/core/nginx-1.20.2/objs 2 cp nginx /usr/local/nginx/sbin
-
发送信号USR2给Nginx的1.18.0版本对应的master进程
发送USR2信号给master进程,告诉master进程要平滑升级,这个时候,会重新开启对应的master进程和work进程,整个系统中将会有两个master进程,
并且新的master进程的PID会被记录在/usr/local/nginx/logs/nginx.pid
而之前的旧的master进程 PID 会被记录在/usr/local/nginx/logs/nginx.pid.oldbin
文件中
接着再次发送QUIT信号给旧的master进程,让其处理完请求后再进行关闭 -
发送信号QUIT给Nginx的1.18.0版本对应的master进程
kill -QUIT `more /usr/local/logs/nginx.pid.oldbin`
使用Nginx安装目录的make命令完成升级
- 将1.18.0版本的sbin目录下的nginx进行备份
cd /usr/local/nginx/sbin mv nginx nginxold
- 将Nginx1.20.2安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin目录下
cd ~/nginx/core/nginx-1.20.2/objs cp nginx /usr/local/nginx/sbin
-
进入到安装目录,执行make upgrade
-
查看是否更新成功
./nginx -v
这篇关于Nginx平滑升级的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享
- 2024-08-14nginx 让访问带有/relid的地址返回404 ,例子 /relid-x-0.36-y-131.html-icode9专业技术文章分享
- 2024-08-14nginx 判断地址有/statics/的路径,指向到/home/html/statics/目录-icode9专业技术文章分享