Nginx 便携编译安装是做什么的
在信创平台上编译 Nginx 的流程与 x86 完全一致:先装依赖开发包(PCRE、zlib、OpenSSL 对应的 -devel 包)、用 configure 指定安装前缀与需要启用的模块、make 编译、make install 安装,最后用 nginx -t 校验配置。常见坑点是只装了运行库没装开发包,configure 阶段就会报找不到头文件;另外与发行版自带 Nginx 共存时要注意配置目录与端口冲突。
基本信息
| 依赖开发包 | gcc、make、pcre2-devel、zlib-devel、openssl-devel |
|---|---|
| 配置前缀 | --prefix 指定安装目录,常用 /usr/local/nginx |
| 常用模块参数 | --with-http_ssl_module、--with-http_stub_status_module |
| 校验命令 | nginx -t 检查配置语法 |
| 托管方式 | 可写 systemd 单元,用 daemon off 前台运行 |
典型使用场景
- 发行版仓库版本较旧,业务需要使用较新版本的功能或安全修复
- 需要启用仓库默认未开启的模块,如特定的流媒体或统计模块
- 交付要求与系统自带版本隔离,装到独立目录避免升级冲突
- 排查官方二进制在信创平台的兼容问题,用源码编译验证差异来源
- 为统一多台服务器的 Nginx 版本与编译参数,建立标准化构建流程
- 安全整改要求升级到指定版本,而仓库尚未跟进
编译安装与托管
编译安装与托管
dnf install -y gcc make pcre2-devel zlib-devel openssl-devel # 依赖开发包
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module --with-http_stub_status_module # 指定模块
make -j$(nproc) 2>&1 | tee /tmp/nginx-build.log # 编译并留档日志
sudo make install # 安装到指定前缀
/usr/local/nginx/sbin/nginx -v # 确认版本
/usr/local/nginx/sbin/nginx -t # 校验配置语法
# systemd 托管(用前台方式运行):
# [Service]
# ExecStart=/usr/local/nginx/sbin/nginx -g 'daemon off;'
# ExecReload=/usr/local/nginx/sbin/nginx -s reload
systemctl daemon-reload && systemctl enable --now nginx-local编译与运行检查点
| 环节 | 检查方式 | 常见问题 |
|---|---|---|
| 依赖准备 | configure 输出摘要 | 缺 -devel 包报找不到头文件 |
| 模块选择 | 查看 configure 结尾的模块列表 | 漏加参数导致功能不可用 |
| 编译结果 | nginx -v 与二进制路径 | 装到系统目录与包管理器冲突 |
| 配置校验 | nginx -t | 升级后旧配置不兼容 |
| 服务托管 | systemctl status | 与仓库版单元名或端口冲突 |
编译日志必须留档:出问题时回看第一处 error 而不是末尾现象,同时日志也是交付与变更管理需要的证据材料。
与发行版自带 Nginx 共存时要明确两者关系:使用不同端口与配置目录,或停用其一;混淆之后会出现「改了配置不生效」这类很难定位的问题。