nginx版本升级

Nginx详情:

Nginx 是一个流行的 Web 服务器和反向代理服务器。当需要升级 Nginx 时,可能会涉及到停止和启动服务,这将导致一段时间内网站不可用。为了避免这种情况,可以采用平滑升级的方法。

1、背景

因为一些原因,比如说 nginx发现漏洞、应用一些新的模块等等,想对 Nginx 的版本进行更新,最简单的做法就是停止当前的Nginx服务,然后开启新的Nginx服务。但是这样会导致在一段时间内,用户是无法访问服务器。

为了解决这个问题,我们就需要用到Nginx服务器提供的平滑升级功能。这个也是Nginx的一大特点,使用这种方式,就可以使 Nginx 在 7*24 小时不间断的提供服务了。

2、需求

Nginx 的版本最开始使用的是 Nginx-1.18.0 , 由于服务升级,需要将 Nginx 的版本升级到 Nginx-1.19.7 ,要求 Nginx 不能中断提供服务。

为了应对上述的需求,提供两种解决方案:

  • 方案1:make upgrade 完成升级
  • 方案2:服务信号 完成升级

3、nginx 版本升级

3.1、环境说明

当前是 CentOS7 服务器。

点击进入 nginx 下载页面

3.2、环境准备

1)已安装的 Nginx 版本信息

nginx -V
或者
/usr/local/nginx/sbin/nginx -V

可以看出当前版本为 1.18.0,如下图所示:

2)下载当前最新版本 nginx-1.19.7,并通过Xftp上传至服务器,然后执行解压命令。

tar -zxvf nginx-1.19.7.tar.gz

如下图所示:

3)解压后,对最新版 nginx 进行配置

(1)查看现有版本(老版本)nginx 的 configure 配置信息

nginx  -V

如图所示,得到 configure 的配置信息。


(2)然后,再对新版 nginx 进行配置。

./configure  --prefix=/usr/local/nginx

如下图所示:

4)接着,进行 make

make

进行编译,切记千万不要输入 make install ,如下图所示:

5)这样,最新版本nginx的目录下会多出来一个objs目录,如下图所示:

6)对老版本 sbin 目录下的 nginx 进行备份:

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

如下图所示:

7)将编译好的 objs 目录下的 nginx 文件,复制到 /usr/local/nginx/sbin 目录。

cp /root/nginx-1.19.7/objs/nginx   /usr/local/nginx/sbin/nginx

如下图所示:

8)验证更新的

执行如下命令:

nginx -V
nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

3.3、方案1:make upgrade 命令升级

1)对 nginx 升级

make upgrade

如下图所示:

2)查看升级后的版本

/usr/local/nginx/sbin/nginx  -V

可以看到升级成功,并且过程中服务不中断,如下图所示:

5)通过浏览器可以访问到nginx的主页。

如下图所示:

3.4、方案2:服务信号升级

1)平滑重启升级nginx

发送信号 USR2 给 Nginx 的 1.18.0 版本对应的 master 进程。

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

旧版本 Nginx 的 pid 变为 oldbin ,这是旧版本和新版本的 nginx 同时运行,过一端时间等就 nginx 处理完用户请求后,执行下面操作从容关闭旧版本的 Nginx 进程。

2)从容关闭旧版本的Nginx进程

kill -WINCH `cat /usr/local/nginx/log/nginx.oldbin`

3)决定是否升级到新版的 nginx

发送信号 QUIT 给 Nginx 的 1.18.0 版本对应的 master 进程。

## nginx在不重载配置文件启动工作进程
kill -HUP `cat /usr/local/nginx/log/nginx.oldbin`  

## 关闭旧版nginx
kill -QUIT `cat/usr/local/nginx/log/nginx.oldbin`

4)验证nginx是否升级成功

/usr/local/nginx/sbin/nginx -V
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值