如何平滑升级 Nginx

Nginx详情:

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

以下是平滑升级 Nginx 的步骤:

1.查看现有 Nginx 编译参数

在终端输入以下命令查看当前 Nginx 的编译参数:

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

这将输出 Nginx 的版本和编译参数,例如:

nginx version: nginx/1.20.0

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

2.安装新版本的nginx

下载新版本的 Nginx 并解压缩,进入解压缩后的目录,然后运行以下命令进行安装:

tar -zxvf nginx-1.20.1.tar.gz

cd nginx-1.20.1/

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module make

这将编译新版本的 Nginx,但是不会安装它。

3.备份原有 Nginx 二进制文件

在终端输入以下命令备份原有的 Nginx 二进制文件:

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_$(date +%F)

此时 Nginx 服务不会停止运行。

4.复制新的 Nginx 二进制文件

进入新的 Nginx 源码目录,然后复制新的 Nginx 二进制文件到 /usr/local/nginx/sbin/ 目录下:

cp /usr/local/nginx-1.20.1/objs/nginx /usr/local/nginx/sbin/

5.测试新版本的 Nginx 是否正常

在终端输入以下命令测试新版本的 Nginx 是否正常:

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

如果测试成功,会输出以下内容:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

6.给 Nginx 发送平滑迁移信息

在终端输入以下命令给 Nginx 发送平滑迁移信息:

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

这将启动新的 Nginx 进程并加载新的二进制文件,但不会关闭旧的 Nginx 进程。

7.查看 Nginx 进程 ID

在终端输入以下命令查看 Nginx 的进程 ID:

ls /usr/local/nginx/logs/

这将输出 Nginx 的进程 ID 和一个后缀为 .oldbin 的文件,例如:

nginx.pid.oldbin

8.关闭旧的nginx进程

执行如下命令:

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

9.此时不重载配置启动旧的工作进程

执行如下命令:

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

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

执行如下命令:

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

11.查看nginx是否升级成功

执行如下命令:

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

猜你喜欢

转载自blog.csdn.net/wuds_158/article/details/133161627