基于Linux直接安装的Nginx版本升级方法

引言

随着版本的迭代和漏洞的发现,Nginx作为一款软件避免不了打补丁的命运。

以下基于Linux直接安装的Nginx版本升级。

以下操作均在本地虚拟机中操作验证,请验证后再线上操作。基于centos7测试。

前置资源

  • 获取nginx的最新源码版本网址: freenginx.org/
  • 查看nginx的版本命令: nginx -V

基于源码安装Nginx

安装编译环境

nginx基于c语言编写的,所以安装之前需要安装编译环境。

sh 复制代码
### 安装编译环境和依赖包
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
## 验证编译环境是否安装成功
gcc --version

gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

逆向编译命令

nginx编译通过 ./configure 命令加指定参数来完成,对应的参数决定了应用程序的安装位置、日志文件位置、依赖库使用情况等。

所以在安装之前需要知道如下信息:

  • 使用到的依赖库
  • 程序安装位置
  • 启用的模块

以上信息可以通过ngingx -V来获取。

sh 复制代码
## 进入nginx的安装目录
nginx -V
## 可以看到对应的配置参数信息
nginx version: nginx/1.24.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-http_stub_status_module

安装新版本nginx

freenginx 是nginx被F5收购出来的一个独立分支,由原来的nginx的核心人员维护,就像mariadb和mysql的关系。

  • 上传源码到指定服务器,开始安装。
shell 复制代码
# 解压源码
tar -xf nginx-1.25.4.tar.gz
cd nginx-1.25.4
## 根据逆向得到的参数进行编译
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-http_stub_status_module
##  如果缺少对应依赖库,可以通过如下命令安装
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
## 也可以到对应库的正式网站下载安装,通过命令指定安装位置,比如
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-http_stub_status_module --with-pcre=/root/install_app/pcre2-10.43
## 安装
make
make install
## 查看安装后的版本
/usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.25.4
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-http_stub_status_module --with-pcre=/root/install_app/pcre2-10.43

以上是通过覆盖的方式升级nginx,注意提前做好备份,避免数据丢失。

基于安装包安装Nginx

nginx在linux上做了很多分发包,包括debian、centos、ubuntu等。通过nginx官方的安装包升级nginx,可以避免编译过程的麻烦。

确认nginx是通过安装包安装的,可以通过安装路径查看。一般nginx的安装路径为分开的,包括任意路径可以执行nginx -V

centos通过rpm -qa nginx查找nginx的安装包是否存在。

升级过程如下:

sh 复制代码
## 安装nginx的仓库源,访问 http://nginx.org/packages/centos/7/noarch/RPMS/ 下载 nginx-release-centos-7-0.el7.ngx.noarch.rpm  
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
## 安装nginx源
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
## 查看nginx安装包列表
yum --showduplicates list nginx
## 安装最新版本的nginx
yum install nginx.x86_64
## 验证版本
nginx -V

说明

以上就是nginx 1.21.5升级到1.25.4的过程。不同镜像版本可能升级过程不一致。

请在虚拟机中操作验证,请勿直接线上生产主机操作。

关于作者

来自一线全栈程序员nine的八年探索与实践,持续迭代中。欢迎关注"雨林寻北"或添加个人卫星codetrend(备注技术)。

相关推荐
HUT_Tyne2652 小时前
Linux 快速入门
linux·运维·服务器
鸠摩智首席音效师2 小时前
如何在 Linux 中使用 dd 命令 ?
linux·运维·服务器
JuiceFS4 小时前
JuiceFS sync 原理解析与性能优化,企业级数据同步利器
运维·后端
Logan Lie5 小时前
Web服务监听地址的取舍:0.0.0.0 vs 127.0.0.1
运维·后端
Y淑滢潇潇5 小时前
RHCE 防火墙实验
linux·运维·rhce
稻谷君W6 小时前
Ubuntu 远程访问 Win11 WSL2 并固定访问教程
linux·运维·ubuntu
泡沫·6 小时前
4.iSCSI 服务器
运维·服务器·数据库
悠悠121387 小时前
告别Zabbix?我用Netdata只花10分钟就搞定了50台服务器的秒级监控(保姆级实战)
运维·服务器·zabbix
天庭鸡腿哥7 小时前
大小只有4K的软件,可让系统瞬间丝滑!
运维·服务器·windows·microsoft·everything
虚伪的空想家7 小时前
华为昇腾Atlas 800 A2物理服务器开启VT-d模式
运维·服务器·ubuntu·kvm·vt-d·直通