Linux下升级Nginx版本(平滑&详细)

起因:服务器所用nginx是1.19.2版本扫出来存在安全隐患。需要我们升级到1.20.0以上
在这里插入图片描述
cd /usr/local/ 一般我们的nginx会在这里, 当然这不是绝对的也可能是你自定义的路径。

1、下载新版本 这里用1.21.1

wget -c http://nginx.org/download/nginx-1.21.1.tar.gz

2、解压

tar zxvf nginx-1.21.1.tar.gz

3、备用一下旧版本以防意外(我的旧版本是1.19.2版本)

cp -r  nginx-1.19.2 ./nginx-1.19.2.bak

4、到旧版本的sbin下看执行./nginx -V
cd /usr/local/nginx-1.19.2/sbin (这是我的旧版本的路径) 下图可以看到我的旧版本信息。红线指的东西等会儿要用到
在这里插入图片描述
查看完旧版本信息可以执行如下命令,给旧版本改个名

mv ./nginx ./nginx.old

5、编译新版本–1.切到新版本下 2.执行编译命令
(这里要注意, 编译新版本时的路径是和旧版本一致的 如上图 然后在最后加了&&make)

cd /usr/local/nginx-1.21.1
./configure --prefix=/usr/local/nginx-1.19.2 --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-pcre&&make

6.把编译后的新版nginx复制到旧版本的sbin下

cd /usr/local/nginx-1.19.2/sbin
cp /usr/local/nginx-1.21.1/objs ./

复制过来后 执行下**./nginx -t** 测试一下
在这里插入图片描述
出现这个ok 和 successful说明我们的新版本文件可以正常执行
7.升级新版本
将旧版本nginx的pid改为nginx.pid.oldbin
cd /usr/local/nginx-1.19.2/logs/

kill -USR2 `cat  /usr/local/nginx-1.19.2/logs/nginx.pid`
--此时执行ll 可以看到多了一个nginx.pid.oldbin文件
ls -lit nginx.pid.oldbin
----退化旧版本
kill -QUIT  `cat /usr/local/nginx-1.19.2/logs/nginx.pid.oldbin`

8.这时可以查看下版本号(完成升级)

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

在这里插入图片描述

Linux平滑升级Nginx,一般建议通过替换配置文件和滚动重启的方式来实现,以避免服务中断。以下是详细的步骤: 1. **备份现有配置**: 在升级前,确保首先备份当前的Nginx配置文件和重要的数据目录,如 `/etc/nginx` 和 `/var/lib/nginx`. 2. **下载新版本**: 下载最新稳定版的Nginx源码包,或者从官方仓库获取更新的二进制包。比如: ```sh wget https://nginx.org/download/nginx-1.24.0.tar.gz ``` 3. **解压并安装**: 解压缩并进入目录,然后按照官方文档指示编译安装新版本: ```sh tar zxf nginx-1.24.0.tar.gz cd nginx-1.24.0 ./configure && make && make install ``` 4. **编辑新版本配置**: 将旧版本的配置文件复制到新版本的配置目录下,如 `/etc/nginx/sites-available/old.conf` -> `/etc/nginx/conf.d/old.conf`。然后编辑新配置,添加新的特性,修改必要的参数。 5. **启用新配置**: 创建一个新的站点配置文件用于新版本,如 `/etc/nginx/sites-available/new.conf`,并启用它: ```sh ln -s /etc/nginx/conf.d/new.conf /etc/nginx/sites-enabled/ ``` 6. **测试新配置**: 临时禁用旧配置,启动新配置进行初步测试,确保一切正常: ```sh rm /etc/nginx/sites-enabled/default nginx -t # 测试配置语法 service nginx reload # 仅加载新配置,不重启 curl http://yourdomain.com # 测试访问 ``` 7. **监控负载**: 确保流量正在平稳地转向新配置。可以使用`top`或`htop`查看进程负载,也可以借助`pmacct`等工具监控网络流量。 8. **滚动重启**: 逐个停止旧的Nginx实例并启动新实例,而不是一次性全停: ```sh for pid in $(ps aux | grep nginx | awk '{print $2}'); do kill -HUP $pid; done ``` 这样可以保证在每个实例都接管完流量后再杀掉旧版本。 9. **完成并验证**: 最后,确认所有的请求都已经迁移到新版本,检查日志没有异常,然后删除旧配置文件。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值