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