国产服务器操作系统编译nginx生成rpm包

告别手动编译:在openEuler 22.03上通过RPM包一键安装并配置Nginx服务 本文详细介绍了在openEuler 22.03上通过RPM包一键安装并配置Nginx服务的高效方法,包括在线和离线安装方案。通过RPM包管理,用户可以自动处理依赖关系、统一管理文件结构,并轻松实现系统集成与服务管理,大幅提升运维效率。 阅读详情

2026 年 5 月 13 日,F5 和安全研究员 depthfirst 公布了一个 Nginx ngx_http_rewrite_module 模块中的堆缓冲区溢出漏洞,编号 CVE-2026-42945,被命名为"NGINX Rift"。攻击者只需发送一个精心构造的 HTTP 请求,就能在未认证的情况下执行任意代码或导致服务崩溃。修改该漏洞需要更新nginx的版本到1.30.2以上版本。

由于作者维护了几百个nginx实例,操作系统相对比较固定,基本都是OpenEuler2203,OpenEuler2403,UOSV20, KylinosV10这几个固定版本的系统,则可以将nginx编译生成nginx的rpm包,将打包的nginx软件分发到服务器上执行升级命令即可,这样节省了大量的编译时间

因此本文主要介绍基于UOS V20 1070A系统编译nginx1.30.2生成rpm包

一、安装编译环境


dnf -y install gcc gcc-c++ make cmake zlib zlib-devel openssl openssl-devel pcre-devel vim net-tools man wget tar

二、 准备软件包构建环境

安装构建依赖

# 安装构建rpm包依赖
dnf install -y rpm-build rpmdevtools

# 初始化构建目录结构
rpmdev-setuptree

目录结构

rpmbuild/
├── BUILD
├── BUILDROOT
├── RPMS
│   └── x86_64
├── SOURCES
│   ├── nginx-1.30.2.tar.gz
│   └── nginx.service
├── SPECS
│   └── nginx.spec
└── SRPMS

三、准备构建文件

准备nginx编译构建文件

cat  > rpmbuild/SPECS/nginx.spec << EOF

Name:       nginx
Version:    1.30.2
Release:    0%{?dist}
Summary:    omstack

License:    GPL
URL:        http://www.omfox.cn
Source0:    nginx-1.30.2.tar.gz
Source1:    nginx.service

BuildRequires:  gettext

%description
Garena omstack-build .

%prep
%setup -q

%build
 ./configure  --prefix=/etc/nginx \
 --sbin-path=/usr/sbin/ \
 --modules-path=/usr/lib/nginx/modules \
 --conf-path=/etc/nginx/nginx.conf \
 --error-log-path=/var/log/nginx/error.log \
 --http-log-path=/var/log/nginx/access.log \
 --pid-path=/var/run/nginx.pid \
 --lock-path=/var/run/nginx.lock \
 --http-client-body-temp-path=/var/cache/nginx/client_temp \
 --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
 --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
 --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
 --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
 --with-compat \
 --with-threads \
 --with-http_addition_module \
 --with-http_auth_request_module \
 --with-http_dav_module \
 --add-module=/opt/src/nginx-rtmp-module \
 --with-http_flv_module --with-http_gunzip_module \
 --with-http_gzip_static_module \
 --with-http_mp4_module \
 --with-http_random_index_module \
 --with-http_realip_module \
 --with-http_secure_link_module \
 --with-http_slice_module \
 --with-http_ssl_module \
 --with-openssl=/opt/src/openssl-3.0.30 \
 --with-http_stub_status_module \
 --with-http_sub_module \
 --with-http_v2_module \
 --with-mail \
 --with-mail_ssl_module \
 --with-stream \
 --with-stream_realip_module \
 --with-stream_ssl_module \
 --with-stream_ssl_preread_module \
 --with-cc-opt='-static -static-libgcc' \
 --with-ld-opt=-static 


make %{?_smp_mflags}

%install
rm -rf %{buildroot}
mkdir -p %{buildroot}/etc/nginx
mkdir -p %{buildroot}/usr/sbin
mkdir -p %{buildroot}/var/log/nginx
mkdir -p %{buildroot}/var/cache/nginx/{client_temp,proxy_temp,fastcgi_temp,uwsgi_temp,scgi_temp}
mkdir -p %{buildroot}/etc/nginx/{conf.d,sites-enabled}
mkdir -p %{buildroot}/usr/share/nginx/html
make install DESTDIR=%{buildroot}

install -D -m 0644 %{SOURCE1} %{buildroot}/%{_unitdir}/nginx.service

%post
mkdir -p /var/log/nginx
mkdir -p /var/cache/nginx/{client_temp,proxy_temp,astcgi_temp,uwsgi_temp,scgi_temp}
mkdir -p /etc/nginx/{conf.d,sites-enabled}
mkdir -p /usr/share/nginx/html/



%preun
systemctl --quiet is-active  && systemctl stop  >/dev/null || :

%postun
/usr/sbin/userdel  >/dev/null 2>&1 || :

%files
%defattr(-,root,root,-)
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/html/50x.html
/etc/nginx/html/index.html
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
/usr/sbin/nginx
%{_unitdir}/nginx.service

%changelog
* Wed May 20 2026 omstack <omstack@163.com> - 1.30.2
- Initial release of Nginx 1.30.2 for ARM64 with static OpenSSL 3.0.20
  
EOF

添加 systemd方式管理

cat  > rpmbuild/SOURCES/nginx.service <<EOF
[Unit]
Description= - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
User=root
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

EOF

准备nginx编译源码包

wget  https://nginx.org/download/nginx-1.30.2.tar.gz -O  $HOME/rpmbuild/SOURCES/nginx-1.30.2.tar.gz
mkdir -p /opt/src/
wget "https://release-assets.githubusercontent.com/github-production-release-asset/7634677/bc462459-fa7e-49c8-ac75-d5b1e6815328?sp=r&sv=2018-11-09&sr=b&spr=https&se=2026-05-22T04%3A52%3A52Z&rscd=attachment%3B+filename%3Dopenssl-3.0.20.tar.gz&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2026-05-22T03%3A52%3A04Z&sks=b&skv=2018-11-09&sig=jC5XGMKptToXNxO7ewNdqA%2BggQx4EnGdG796LE5l6b8%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc3OTQyMzkwOSwibmJmIjoxNzc5NDIyMTA5LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.AljDjwz9q-AQGSJZjPNuFjsjPq5Rl8Uo5JftwEPZukY&response-content-disposition=attachment%3B%20filename%3Dopenssl-3.0.20.tar.gz&response-content-type=application%2Foctet-stream"  -O /opt/src/openssl-3.0.20.tar.gz

四、构建RPM包

cd /root/rpmbuild/SPECS
rpmbuild -bb nginx.spec

五、获取rpm包

编译后的rpm包位于${HOME}/rpmbuild/RPMS/x86_64 目录下。

注意:
尽量在相同内核版本的操作系统中安装,可以避免因glibc或者其他系统依赖差别过大导致的安装胡总启动报错。

银河麒麟系统下离线部署Nginx的避坑指南与一键脚本实践 本文详细介绍了在银河麒麟系统下进行Nginx离线部署的完整流程与关键注意事项。针对国产化系统依赖管理严格的特点,重点解析了如何避免因安装openssl-devel等核心依赖导致系统冲突的风险,并提供了安全编译配置、systemd服务集成及防火墙配置的实操步骤。最后,分享了一键自动化部署脚本的设计思路与核心模块,帮助运维人员高效、稳定地完成内网环境部署。 阅读详情

相关推荐

银河麒麟V10离线安装Nginx1.24保姆级教程(附一键脚本)

本文提供银河麒麟V10操作系统下Nginx 1.24的离线安装详细教程。针对无网络环境,重点解析依赖包准备、源码编译、服务化配置及防火墙设置等核心步骤,并分享了避免破坏系统OpenSSL等关键踩坑经验,最后附带了可一键执行的自动化部署脚本,助力在封闭网络中高效完成部署。

q9r0s的博客 789

Nginx(SPEC文件打包)

1. 建立工作路径 mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} 2. 下载Nginx源码 cd ~/rpmbuild/SOURCES wget http://nginx.org/download/nginx-1.20.1.tar.gz 3. 安装依赖、编译和打包工具 yum install -y gcc rpm-build pcre-devel pcre zlib zlib-devel 4. 编写SPEC文件 cd ~/rpmbuild/S

从零到1% 1157

麒麟系统下从零部署Java服务栈:JDK+Redis+Nginx+MySQL保姆级教程

本文提供了一份在国产麒麟操作系统上从零部署完整Java服务栈的保姆级教程。详细讲解了JDK、MySQL、Redis、Nginx等核心组件的安装、配置与优化,特别针对麒麟系统的环境特点(如ARM架构)和常见部署难题提供了解决方案,并最终指导如何将Java应用Jar包部署为稳定的系统服务,帮助开发者快速构建生产级运行环境。

u0v1w2x3的博客 568

openEuler离线安装nginx、openEuler安装nginx、openEuler配置nginx

openEuler离线安装nginx、openEuler安装nginx、openEuler配置nginx

my_futrue的博客 4365

Linux软件安装格式全解析:deb、rpm、Flatpak、Snap、AppImage怎么选

软件安装是Linux入门和运维实践中的基础环节,不同发行版衍生出deb、rpm等多种包格式,其本质源于Linux内核与发行版生态的多样性。理解包管理器(如dpkg/apt、rpm/yum/dnf)的依赖处理机制,是避免“依赖地狱”和安装失败的关键。传统格式在服务器场景下凭借稳定性和可控性占据主导,而Flatpak、Snap、AppImage则为桌面应用带来跨发行版和沙箱隔离的新价值,尤其适合GUI应用分发与便携使用。在实际工程中,需根据系统类型、网络环境和部署需求做出选择,如离线环境优先考虑本地rpm/de

weixin_34025051的博客 618

银河麒麟V10SP3离线环境踩坑实录:Nginx源码编译那些事儿

本文详细介绍了在银河麒麟V10SP3离线环境中进行Nginx源码编译的全过程,包括环境准备、依赖检查、源码获取、编译配置与问题排查等关键步骤。针对国产化环境中常见的依赖缺失、路径差异等问题提供了实用解决方案,帮助用户在严格离线环境下高效部署Nginx服务器。

weixin_29232121的博客 378

手把手教你制作RPM包:基于Kylin V11的Nginx打包实战

RPM包是Linux系统中广泛使用的软件管理格式,主要用于Red Hat系发行版。它包含包头(元数据)、有效载荷(压缩文件)和签名信息三部分。RPM包分为二进制RPM(直接安装)和源码RPM(需编译)两种类型。通过rpmbuild工具和spec文件(定义打包流程和参数)可以自定义RPM包。一个典型案例是nginx源码包制作RPM:需准备编译环境、下载源码、初始化rpmbuild目录结构,并编写spec文件指导打包过程,最终生成可直接安装的RPM包。RPM机制通过标准化软件分发和管理,极大简化了Linux系统

深耕信创・网络・云原生领域 1532

国产操作系统下Zabbix Agent部署与优化指南

Zabbix作为企业级监控系统的核心组件,其Agent端部署是构建完整监控体系的关键环节。在国产化替代背景下,麒麟、统信UOS和openEuler等国产操作系统与Zabbix的兼容性配置成为技术难点。监控系统通过采集主机性能指标、服务状态等数据,为运维决策提供数据支撑。本文从系统依赖处理、多源安装方案、性能调优等维度,详细解析不同国产系统的适配方案,特别针对高并发场景下的BufferSize和StartAgents参数优化提供实践建议,并涵盖容器化部署、安全加固等企业级应用场景。

weixin_33946020的博客 370

【亲测免费】 推荐文章:在国产之光麒麟V10上搭建高效Nginx服务

推荐文章:在国产之光麒麟V10上搭建高效Nginx服务 【下载地址】国产化麒麟V10系统专用Nginxky10.aarch64.rpm下载及使用指南 国产化麒麟V10系统专用:Nginx ky10.aarch64.rpm 下载及使用指南欢迎来到国产化操作系统麒麟V10环境下专属的Nginx服务器安装资源页面 ...

gitblog_09726的博客 1797

45 openEuler搭建Nginx服务器-Nginx概述和安装

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占用内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能,并且支持很多第三方的模块扩展。

超哥的博客 1362

未连接互联网的银河麒麟v10安装g++,直接安装pcre又报错:configure: error: Invalid C++ compiler or C++ compiler flags...如何实现?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 2507

浪潮服务器鲲鹏920UOS20服务器系统部署软件

在国产服务器上部署常用软件,如nginx、redis、jdk、tomcat、mysql等软件部署;部署环境cpu:华为kunpeng920,操作系统:UOS server 20 架构:aarch64安装方式:离线安装,使用编译安装方式进行离线安装前期准备:看下面。

qq_38088890的博客 1441

信创环境Nginx离线部署:从源码编译到一键安装包实践

在IT基础架构国产化替代进程中,如何在不具备外网条件的隔离网络中完成高性能Web服务器的部署,是运维工程师面临的现实挑战。Nginx作为高并发场景下的反向代理与Web服务器,其源码编译方式天然支持跨平台适配,尤其适合解决信创环境中CPU架构与操作系统割裂的问题。通过静态整合PCRE、OpenSSL、zlib等依赖库,并针对ARM等不同架构动态调整编译参数,可以打造一个开箱即用的离线安装包。该方案有效规避了二进制拷贝带来的动态库缺失、glibc版本冲突等风险,也能兼容银河麒麟、统信UOS等国产系统,大幅降低现

weixin_32075843的博客 337

国产系统运维指南:在openEuler 22.03 LTS上离线安装Nginx 1.20的避坑手册

本文详细解析了在openEuler 22.03 LTS系统中进行Nginx 1.20离线安装的完整流程与避坑策略。针对金融、政务等内网隔离环境,提供了从依赖分析、精准包捕获到安全部署、系统集成的实战指南,重点解决了离线安装过程中的依赖地狱与版本冲突问题,助力国产化迁移项目平稳落地。

css33的专栏 81

nginx-1.30.1-el7.ngx.x86-64.rpm截止2026-05-17 为最新版

nginx-1.30.1-el7.ngx.x86-64.rpm截止2026-05-17 为最新版

【电弧故障检测算法全解析,电弧串扰问题分析和解决算法】

本文系统分析了电弧故障检测算法及串扰问题解决方案。电弧检测主要采用时频域分析和机器学习方法,通过提取高频噪声、波形畸变等特征实现故障识别。针对电弧串扰问题,提出了自适应滤波、盲源分离和时频联合分析等算法。研究给出了Python和C语言的算法实现示例,包括高频能量检测、过零率计算和陷波滤波器设计。最后指出算法优化方向:实时性提升可采用滑动窗口FFT和硬件加速;抗干扰增强需结合硬件滤波;机器学习扩展可引入随机森林等分类器。该研究为电弧故障检测系统开发提供了完整的技术路线。

syttt的专栏 891

把CentOS全换成国产系统,迁移20台服务器,我踩了6个坑

本文记录了将 20 台 CentOS 服务器迁移到国产操作系统 openEuler 22.03 LTS 的完整实战经历。文章从选型对比(openEuler、银河麒麟、统信UOS)入手,强调选型应跟随业务场景而非热度;随后重点介绍了迁移前评估的三个关键步骤,包括软件依赖盘点、定时任务梳理和 x2openEuler 兼容性扫描。正文详细剖析了迁移过程中踩过的 6 个典型坑:包名相同但版本和默认参数不同、Python 2 到 3 的脚本迁移、内核参数与透明大页策略变化、SELinux 策略更严格、systemd

pan303507479的博客 313

电流采样(分流器与霍尔传感器)

霍尔效应霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。简单原理如图1所示,半导体薄片两端通以控制电流I,垂直方向施加磁感应强度为B的匀强磁场,d为半导体材料的厚度,k为霍尔常数,它与半导体材质有关,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压,它们之间的关系为。霍尔元件。

weixin_48867130的博客 1万+

国产信创服务器部署MySQL、Redis和Nginx实战指南

在国产信创环境下部署基础服务面临独特的挑战,特别是在软件兼容性和性能优化方面。MySQL作为关系型数据库、Redis作为内存数据库和Nginx作为Web服务器,构成了现代应用的核心技术栈。理解这些技术的底层原理对于解决国产CPU架构(如鲲鹏、龙芯)和操作系统(如统信UOS)的兼容性问题至关重要。通过源码编译安装、针对性性能调优和安全加固,可以确保这些服务在信创环境中稳定高效运行。本文特别针对金融等行业的关键系统部署场景,提供了从环境准备到监控维护的全流程实践方案,包括处理依赖库缺失、优化NUMA架构性能等典

weixin_35390379的博客 94

SDRAM控制器——添加读写FIFO

用FIFO实现数据缓存

H19981118的博客 2627

等保测评-达梦数据库

一般适用于等保测评

m0_54146694的博客 1299

银河麒麟V10ServerSP3环境下Nginx源码编译与安全加固实战

本文详细介绍了在银河麒麟V10ServerSP3国产操作系统上,通过源码编译方式安装Nginx的完整实战流程。内容涵盖环境准备、依赖库处理、编译参数优化、系统服务集成,并重点讲解了基础安全加固配置与常见故障排查,旨在帮助运维人员在离线等特殊环境下,实现对Nginx服务的深度定制与安全部署。

q3r4s5t的博客 666

【教程4>第4章>第22节】FFT频偏估计方法,导频+cordic频偏估计方法,costas环的性能对比

频偏范围适应性:Costas 环频偏锁定和基于 PN 导频和 CORDIC 算法的频偏估计都可以通过调整参数来适应一定范围的频偏,但 Costas 环的频率捕获范围相对较窄,而基于 PN 导频和 CORDIC 算法的频偏估计,基于 FFT 变换频偏估计对频偏范围较大。在高信噪比条件下,三种方法都可以获得较高的估计精度,但在低信噪比环境中,基于 PN 导频和 CORDIC 算法的频偏估计,基于 FFT 变换频偏估计这两个开环方案相对更具优势,而Costas 环频偏锁定的精度可能会受到较大影响.

FPGA/MATLAB学习教程/源码/项目合作开发 610
上一篇: Ubuntu编译Nginx生成deb包
运维栈
博客等级 码龄4年 33粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值