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 中的路径即可。

相关推荐
翼龙云_cloud5 分钟前
阿里云国际代理商:阿里云 ECS 全维度监控配置教程
运维·阿里云·云计算·监控
笑锝没心没肺21 分钟前
fail2ban工具安装配置及使用
linux·运维·服务器
zt1985q2 小时前
本地部署开源智能家居集成平台 ioBroker 并实现外部访问( Windows 版本)
运维·服务器·智能家居
大卡片2 小时前
linux内核驱动开发
linux·运维·驱动开发
心心喵3 小时前
[linux] nohup和pm2的区别 进程保活
linux·运维·服务器
NGINX开源社区4 小时前
F5 NGINX Ingress Controller 5.3.0 新增功能
运维
SelectDB6 小时前
Apache Doris 在 AgentLogsBench 中领先,支撑 Agent 可观测性生产负载
运维·数据库·agent
荣-6 小时前
从两天到十几分钟:一套 YT Crash 自动化分析工具完整工程复盘
大数据·运维·自动化
酷炫的水壶7 小时前
使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
运维·nginx·缓存
姚不倒8 小时前
F5 SSL Profile 证书卸载深入篇
运维·网络协议·负载均衡·ssl·f5