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

引言

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

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

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

前置资源

基于源码安装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(备注技术)。

相关推荐
流形填表3 分钟前
AI如何做SEO?
运维·人工智能·自动化·seo
[J] 一坚3 分钟前
Shell 脚本解锁 curl/iptables/Nginx 日志分析等实战用法
linux·服务器·正则表达式·系统架构·自动化
点亮一颗LED(从入门到放弃)6 分钟前
字符设备驱动(5)
linux·运维·服务器
weixin_4481199426 分钟前
Datawhale 用Markdown语法轻松开发AI应用202512 第1次作业
运维·服务器
知识分享小能手29 分钟前
CentOS Stream 9入门学习教程,从入门到精通,Linux日志分析工具及应用 —语法详解与实战案例(17)
linux·学习·centos
ZXF_H42 分钟前
Linux tcpdump抓包实践(以http为例)
linux·http·wireshark·tcpdump
悄悄敲敲敲44 分钟前
Linux:信号(二)
linux·操作系统·信号
Felven1 小时前
飞腾D2000 GPIO中断调试
linux·gpio·中断·d2000
CodeCraft Studio1 小时前
用“录制宏”轻松实现文档自动化:ONLYOFFICE 宏功能实践解析
运维·自动化·onlyoffice·录制宏·创建宏·文档自动化·文档协同
喵了meme2 小时前
Linux学习日记21:读写锁
linux·c语言·学习