Skip to content

用到了就进行记录,不一定适用(是从1.24升级到1.26)

字数
755 字
阅读时间
4 分钟

说明:这个是我在遇到修复漏洞的时候进行的升级操作,仅供参考。

升级准备

1. 确认自己需要升级的版本

我自己的原先是1.24是通过yum安装的 需要升级到1.26 原本还是想通过rpm下载升级升级,但是由于没有找到对应的rpm包,所以只能通过源码编译的方式进行安装,下面的是链接地址。

rpm下载链接

2. 下载nginx

Nginx下载地址

选择对应的版本进行下载

shell
cd /usr/local/src
wget https://nginx.org/download/nginx-1.26.2.tar.gz
tar -xzvf nginx-1.26.2.tar.gz
cd nginx-1.26.2

如果没有安装依赖,可以先进行安装依赖,这个根据你nginx用到的模块进行安装

shell
yum install -y gcc pcre-devel zlib-devel openssl-devel

安装依赖可能遇到的问题

可能会出现有些地址无法下载出现类似下述错误 yum 可能会尝试访问 mirrorlist.centos.org,但这个地址已经废弃,或在某些地区无法解析

shell
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?

解决方法:替换为阿里云的镜像源 (推荐)

shell
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak

wget http://mirrors.aliyun.com/repo/Centos-7.repo -O CentOS-Base.repo

yum clean all
yum makecache

然后再重新尝试进行安装依赖

编译 Nginx

  • 进入 Nginx 源码目录:
shell
cd /usr/local/src/nginx-1.26.2
  • 执行 ./configure 命令
shell
./configure \
  --prefix=/usr/local/nginx-1.26.2 \
  --conf-path=/etc/nginx/nginx.conf \
  --sbin-path=/usr/local/nginx-1.26.2/sbin/nginx \
  --pid-path=/var/run/nginx.pid \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --with-http_rewrite_module \
  --with-http_realip_module
  • 编译安装
shell
make
make install
  • 检查版本是否生效
shell
/usr/local/nginx-1.26.2/sbin/nginx -v  # 正确版本

# 你也可以做个软链接让系统默认路径指向新版
ln -sf /usr/local/nginx-1.26.2/sbin/nginx /usr/bin/nginx

nginx -v  # 现在也能看到新版
  • 编译完成可以通过下述方式验证Nginx配置是否正确
shell
/usr/local/nginx-1.26.2/sbin/nginx -t -c /etc/nginx/nginx.conf

如果一切顺利,配置应该会成功通过验证。

配置systemd服务

  • 由于原本就已经通过systemd进行管理,所以可以直接进行替换,如果找不到nginx.service文件,可以通过下述命令进行查找
shell
systemctl status nginx

输出中通常会显示 Loaded 行,例如:

shell
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)

这一行告诉你 nginx.service 文件的位置是:

shell
/usr/lib/systemd/system/nginx.service
  • 以防万一可以先备份一下
shell
cp /usr/lib/systemd/system/nginx.service /usr/lib/systemd/system/nginx.service.bak

进行修改

shell
vim /usr/lib/systemd/system/nginx.service

修改 [Service] 中的nginx路径

shell
ExecStart=/usr/local/nginx-1.26.2/sbin/nginx -c /etc/nginx/nginx.conf

修改成类似这样

  • 重载 systemd 并启动
shell
# 让 systemd 重新识别服务配置
sudo systemctl daemon-reexec
sudo systemctl daemon-reload

# 启动 nginx(用的是新版本)
sudo systemctl start nginx

# 设置开机自启(可选)
sudo systemctl enable nginx

# 查看运行状态
systemctl status nginx

贡献者

The avatar of contributor named as lichenghui lichenghui

文件历史

撰写