CentOS Stream 源码编译安装 Nginx 1.31.0(静态依赖版)

CentOS Stream 源码编译安装 Nginx 1.31.0(静态依赖版)

前言

本文介绍如何在 CentOS Stream 9/10 上通过源码编译安装 Nginx 1.31.0。

与使用 dnf 安装系统依赖包不同,本文采用静态编译 方式,即直接下载 zlib、PCRE2、OpenSSL 的源码并与 Nginx 一同编译。这种方式不依赖系统仓库,适用于网络受限或仓库不完整的场景,且生成的 Nginx 可移植性更强。


一、准备工作

1.1 安装编译工具
bash 复制代码
sudo dnf groupinstall -y "Development Tools"

如果 dnf 仓库不可用,请确保系统已安装 gccmake,可通过 gcc --version 检查。

1.2 创建 Nginx 运行用户
bash 复制代码
sudo useradd -r -s /sbin/nologin nginx

二、下载源码包(Nginx + 三个依赖)

统一放在 /usr/local/src 目录:

bash 复制代码
sudo mkdir -p /usr/local/src
cd /usr/local/src
2.1 Nginx 1.31.0
bash 复制代码
sudo wget https://nginx.org/download/nginx-1.31.0.tar.gz

校验 SHA-256(可选但推荐):

bash 复制代码
sha256sum nginx-1.31.0.tar.gz
# 输出应该为:6d5b00d45393af2e4e7c52a442d2a198f0ccbc7678ed062a46f403edd833ebaa
2.2 zlib 1.3.1(提供 gzip 压缩支持)
bash 复制代码
sudo wget https://zlib.net/zlib-1.3.1.tar.gz

官方 SHA-256:38ef96a8aff9be6350225447ce6e0a200d53e9e41f6fd5e6301b0854514c3b92

2.3 PCRE2 10.43(提供正则表达式支持,Nginx 推荐使用 PCRE2)
bash 复制代码
sudo wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.43/pcre2-10.43.tar.gz

如果 GitHub 下载慢,可使用 Debian 镜像:
http://deb.debian.org/debian/pool/main/p/pcre2/pcre2_10.43.orig.tar.gz

2.4 OpenSSL 3.0.14(提供 HTTPS 支持)
bash 复制代码
sudo wget https://www.openssl.org/source/openssl-3.0.14.tar.gz

官方 SHA-256:582e9d7c011f980dfbfaab3f58e6f1947146335a9d8ab38bfb4b80f59c12b713


三、解压所有源码包

bash 复制代码
cd /usr/local/src
sudo tar -xzf nginx-1.31.0.tar.gz
sudo tar -xzf zlib-1.3.1.tar.gz
sudo tar -xzf pcre2-10.43.tar.gz
sudo tar -xzf openssl-3.0.14.tar.gz

解压后得到四个目录:

  • nginx-1.31.0
  • zlib-1.3.1
  • pcre2-10.43
  • openssl-3.0.14

四、配置 Nginx 编译选项(静态链接依赖)

进入 Nginx 源码目录:

bash 复制代码
cd /usr/local/src/nginx-1.31.0

执行 ./configure,通过 --with- 参数指定三个依赖的源码路径(Nginx 会自动编译并静态链接它们):

bash 复制代码
cd /root/vul_test/nginx-1.31.0

./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_v2_module \
    --with-pcre=/root/vul_test/pcre2-10.43 \
    --with-zlib=/root/vul_test/zlib-1.3.1 \
    --with-openssl=/root/vul_test/openssl-3.6.2

参数说明

  • --prefix:安装目录
  • --user/--group:运行时用户/组
  • --with-http_ssl_module:启用 HTTPS
  • --with-http_stub_status_module:启用状态监控页面
  • --with-http_v2_module:启用 HTTP/2 协议
  • --with-pcre2:静态编译 PCRE2
  • --with-zlib:静态编译 zlib
  • --with-openssl:静态编译 OpenSSL


五、编译与安装

bash 复制代码
make -j$(nproc)   # 使用全部 CPU 核心加速编译
sudo make install


编译时间取决于服务器配置,通常几分钟即可完成。


六、配置 systemd 服务

创建 /etc/systemd/system/nginx.service 文件:

bash 复制代码
sudo tee /etc/systemd/system/nginx.service > /dev/null <<EOF
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

启动 Nginx 并设置开机自启:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx

七、防火墙配置(可选)

如果防火墙开启,放行 HTTP/HTTPS 端口:

bash 复制代码
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

八、验证安装

bash 复制代码
curl http://localhost

或者在浏览器中访问 http://你的服务器IP,看到 Nginx 欢迎页面即表示成功。


九、常见问题排障

错误现象 可能原因 解决方法
configure: error: the HTTP rewrite module requires the PCRE2 library. --with-pcre2 路径错误 确认路径指向解压后的 pcre2-10.43 目录
error: the HTTP gzip module requires the zlib library --with-zlib 路径错误 检查 zlib 源码路径是否正确
error: ... SSL modules require the OpenSSL library --with-openssl 路径错误 确认 openssl 源码路径
make: gcc: Command not found 缺少 gcc 编译器 安装 gccmake(若 dnf 可用)
启动时 nginx: [emerg] getpwnam("nginx") failed 用户 nginx 不存在 执行 sudo useradd -r -s /sbin/nologin nginx

十、总结

本文完全绕过系统包管理器,通过静态编译 方式成功安装 Nginx 1.31.0 + PCRE2 + zlib + OpenSSL。

该方法的优点:

  • 不依赖仓库,适合离线或网络受限环境
  • 版本可控,所有依赖版本由你指定
  • 可移植性强,编译后的 Nginx 可复制到其他同构系统运行

三个依赖的官方下载地址汇总(供博客引用):

  • zlib 1.3.1:https://zlib.net/zlib-1.3.1.tar.gz
  • PCRE2 10.43:https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.43/pcre2-10.43.tar.gz
  • OpenSSL 3.0.14:https://www.openssl.org/source/openssl-3.0.14.tar.gz

(可选)如果你希望使用更新的 OpenSSL 3.5.x LTS 版本,只需替换下载地址和 ./configure 中的路径即可。

相关推荐
2401_853087881 小时前
打破文档孤岛:将知识库深度融入DevOps流水线
运维·人工智能·devops
peihexian2 小时前
我也试试qemu虚拟化
linux·运维
阳光九叶草LXGZXJ2 小时前
达梦数据库-学习-57-读写数据页超时告警排查(page[x,x,xxxxxx] disk write uses)-DSC集群版
linux·运维·服务器·数据库·sql·学习
lolo大魔王2 小时前
Linux监测磁盘空间
linux·运维·服务器
浮生若城2 小时前
Linux基础I/O(1)
linux·运维·服务器
阳光九叶草LXGZXJ2 小时前
达梦数据库-堆栈看问题-01-asmapi_asm_extent_load
linux·运维·数据库·sql·学习
Ujimatsu2 小时前
虚拟机安装openSUSE 16.0及其常用软件(2026.5)
linux·运维·服务器
minji...2 小时前
Linux 网络基础之网络IP层(十)IP 协议,网段划分,IP地址相关问题
linux·运维·服务器·网络·tcp/ip·智能路由器·php
IT瑞先生2 小时前
运维专题3——业务进程排查方法论
运维·网络