nginx平滑升级以及配置文件

本文介绍如何平滑地升级Nginx版本并添加新功能模块。首先下载新版本,获取当前版本的编译参数,然后配置并编译新版本。通过保留原有配置和服务连续性的方式,实现无缝升级。

nginx平滑升级和添加新功能


1.下载新版本的nginx

[root@nginx ~]# wget https://nginx.org/download/nginx-1.22.0.tar.gz
[root@nginx ~]# ls
123  anaconda-ks.cfg  guazai  lv0  nginx-1.20.2  nginx-1.20.2.tar.gz  nginx-1.22.0.tar.gz  nginx_module_echo

2.获取原版本nginx的编译信息

//获取原版本nginx的编译信息
[root@nginx ~]# nginx -V
nginx version: nginx/1.20.2
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-4) (GCC)
built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log

3.配置新版本和功能

//下载工具来拉取gitee仓库的功能
[root@nginx ~]# dnf -y install git
[root@nginx ~]# git clone https://gitee.com/wujunze/nginx_module_echo.git
Cloning into 'nginx_module_echo'...
remote: Enumerating objects: 80, done.
remote: Total 80 (delta 0), reused 0 (delta 0), pack-reused 80
Unpacking objects: 100% (80/80), 14.32 KiB | 977.00 KiB/s, done.
[root@nginx ~]# ls
123  anaconda-ks.cfg  guazai  lv0  nginx-1.20.2  nginx-1.20.2.tar.gz  nginx_module_echo

//解压
[root@nginx ~]# tar xf nginx-1.22.0.tar.gz
[root@nginx ~]# ls
123  anaconda-ks.cfg  guazai  lv0  nginx-1.20.2  nginx-1.20.2.tar.gz  nginx-1.22.0  nginx-1.22.0.tar.gz  nginx_module_echo
[root@nginx ~]# cd nginx-1.22.0/
[root@nginx nginx-1.22.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --add-module=../nginx_module_echo

4.make进行编译,千万不能make install安装

[root@nginx nginx-1.22.0]# make

5.进行替换

//将老版本的nginx备份,然后杀掉nginx进程,将新版本的nginx强行复制到老版本的位置,然后启动nginx服务。
[root@nginx nginx-1.22.0]# cp /usr/local/nginx/sbin/nginx{,.bak};pkill nginx;\cp objs/nginx /usr/local/nginx/sbin/;systemctl start nginx
[root@nginx nginx-1.22.0]# nginx -V
nginx version: nginx/1.22.0
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-4) (GCC)
built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --add-module=../nginx_module_echo

6.nginx的配置文件详解

主配置文件:/usr/local/nginx/conf/nginx.conf

  • 默认启动nginx时,使用的配置文件是:安装路径/conf/nginx.conf文件
  • 可以在启动nginx时通过-c选项来指定要读取的配置文件

nginx常见的配置文件及其作用

Nginx平滑升级(也称为热升级)是一种在停止服务的情况下更新Nginx版本或添加模块的方法。这种升级方式确保了服务的高可用性,避免了因升级导致的请求中断问题。以下是实现Nginx平滑升级的具体步骤: ### 1. 下载并编译新版本Nginx 首先,需要下载目标版本的Nginx源码包,并解压。进入解压后的目录后,使用与当前运行版本相同的配置参数进行编译,同时可以添加新的模块或修改配置参数以满足需求。 ```bash # 下载新版本Nginx wget http://nginx.org/download/nginx-1.20.0.tar.gz tar -zxvf nginx-1.20.0.tar.gz cd nginx-1.20.0 # 使用与旧版本相同的配置参数进行编译,可通过nginx -V命令查看当前运行的配置参数 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../some-module make ``` ### 2. 替换旧的Nginx二进制文件 编译完成后,`objs/nginx`即为新的Nginx可执行文件。将其替换掉旧的Nginx二进制文件,通常位于`/usr/local/nginx/sbin/`目录下。 ```bash cp /path/to/nginx-1.20.0/objs/nginx /usr/local/nginx/sbin/ ``` ### 3. 发送USR2信号给Nginx主进程 通过向Nginx主进程发送USR2信号,触发平滑升级过程。这将启动新的Nginx进程,使用新的二进制文件,同时保留旧的进程以处理尚未完成的请求。 ```bash kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` ``` ### 4. 关闭旧的Nginx进程 一旦确认新版本的Nginx已经成功启动并正常工作,可以通过发送WINCH信号给旧的主进程,让其关闭所有连接并退出。这个过程可能需要一些时间,具体取决于当前正在处理的请求数量。 ```bash kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin` ``` ### 5. 验证升级 最后,验证Nginx是否已成功升级到新版本,并检查是否有任何错误或异常情况。 ```bash /usr/local/nginx/sbin/nginx -v ``` ### 注意事项 - 在执行平滑升级之前,建议备份现有的Nginx配置文件和二进制文件,以便于出现问题时快速回滚。 - 确保在编译新版本时使用的配置参数与旧版本一致,否则可能导致配置兼容的问题。 - 如果在升级过程中遇到问题,可以通过发送HUP信号给Nginx主进程来重新加载旧的配置文件,或者直接恢复备份的二进制文件[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1we11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值