Ubuntu编译Nginx生成deb包

Ubuntu 20.04 Jenkins生产级部署:deb包+systemd+Nginx全栈实践 Jenkins 是持续集成与交付(CI/CD)的核心调度平台,其本质是基于 Java 的可扩展自动化服务引擎。工作原理依赖 JVM 运行时、插件化架构与分布式任务调度机制,技术价值在于将构建、测试、部署等工程活动标准化、可观测、可编排。典型应用场景包括 Java/Python 项目自动编译、Docker 镜像构建、Kubernetes 应用发布及多环境流水线协同。在 Ubuntu 20.04 系统中,因官方源版本陈旧(如 2.204.x)、OpenJDK 11 兼容性风险及 systemd 服务治理需求,必 阅读详情

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

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

因此本文主要介绍基于Ubuntu系统编译nginx1.30.2生成deb包

一、编译环境准备

安装deb构建工具,编译依赖等基础环境

sudo apt update 
sudo apt install -y build-essential devscripts debhelper libssl-dev libpcre3-dev zlib1g-dev

二、编译目录文件准备

创建编译工作目录和所需要的文件

mkdir ~/nginx-build/ 
wget https://nginx.org/download/nginx-1.30.2.tar.gz
tar -zxvf nginx-1.30.2.tar.gz
cd nginx-1.30.2
mkdir debian
# changelog 记录版本变更信息
touch debian/changelog
# compat  debhelper 兼容版本(新版本通常改为 `debhelper-compat`)
touch debian/compat
# control 包描述、依赖、维护者等核心信息
touch debian/control
# copyright 软件版权和许可证
touch debian/copyright
# Debian 打包构建脚本(类似 Makefile)
touch debian/rules
# postinst 安装后执行脚本
touch debian/postinst
# prerm 卸载前执行脚本
touch debian/prerm

三、填写编译控制文件内容

# debhelper 兼容版本(新版本通常改为 `debhelper-compat`)
echo "10" > debian/compat

# 版本变更信息
cat > debian/changelog << 'EOF'
nginx (1.30.2-0) unstable; urgency=medium

  * Custom build with RTMP module

 -- cinn <omstack@163.com>  Wed, 22 Apr 2026 16:00:00 +0800
EOF

# 包描述、依赖、维护者等核心信息
cat > debian/control << 'EOF'
Source: nginx
Section: httpd
Priority: optional
Maintainer: Your Name <your@email.com>
Build-Depends: debhelper (>= 10), libssl-dev, libpcre3-dev, zlib1g-dev
Standards-Version: 4.5.0

Package: nginx-rtmp
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, adduser, lsb-base
Conflicts: nginx, nginx-full, nginx-light
Description: Nginx web server with RTMP module
 This is a custom build of Nginx 1.30.2 including the RTMP module.
EOF

# 软件版权和许可证
cat > debian/copyright << 'EOF'
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: nginx
Source: http://nginx.org/

Files: *
Copyright: (c) 2002-20264 Igor Sysoev
License: BSD-2-clause
EOF

# Debian 打包构建脚本(类似 Makefile)
# override_dh_auto_configur部分编译参数根据需要修改

cat >  debian/rules << 'EOF'
#!/usr/bin/make -f

RTMP_MODULE_DIR = nginx-rtmp-module

%:
	dh $@

override_dh_auto_configure:
	./configure \
		--prefix=/etc/nginx \
		--sbin-path=/usr/sbin/nginx \
		--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 \
		--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-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
EOF

# 安装后执行脚本
cat > debian/postinst << 'EOF'
#!/bin/bash
set -e

case "$1" in
    configure)
        mkdir -p /var/cache/nginx/client_temp
        mkdir -p /var/cache/nginx/proxy_temp
        mkdir -p /var/cache/nginx/fastcgi_temp
        mkdir -p /var/cache/nginx/uwsgi_temp
        mkdir -p /var/cache/nginx/scgi_temp
        mkdir -p /var/log/nginx
        mkdir -p /var/lib/nginx/body
        mkdir -p /etc/nginx/sites-enabled
        mkdir -p /etc/nginx/forbid
        mkdir -p /etc/nginx/custom
        mkdir -p /etc/nginx/conf.d
        
        systemctl daemon-reload
        systemctl enable nginx
        systemctl start nginx || true
        ;;
esac
exit 0
EOF

# 卸载前执行的脚本
cat > debian/prerm << 'EOF'
#!/bin/bash
set -e

case "$1" in
    remove|upgrade|deconfigure)
        if [ -f /var/run/nginx.pid ]; then
            systemctl stop nginx || true
        fi
        ;;
esac
exit 0
EOF

# 构建阶段需要执行的步骤,指定“把哪些文件安装到包里的哪个目录”
cat >debian/install<<EOF
debian/nginx.service lib/systemd/system/
EOF

# 需要提前创建的目录
cat >debian/dirs<<EOF
etc/nginx
var/log/nginx
var/lib/nginx/body
var/cache/nginx
run
lib/systemd/system
EOF

四、准备systemd控制文件

cat > debian/nginx.service << EOF
[Unit]
Description=nginx - 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
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=65535:65535


[Install]
WantedBy=multi-user.target

EOF

五、编译生成deb包

# 给对应的文件执行权限。
chmod +x debian/rules debian/postinst debian/prerm

# 构建deb包
dpkg-buildpackage -us -uc -b
# -us: 不签名源码包
# -uc: 不签名变更文件
# -b: 仅构建二进制包
Ubuntu 20.04 安装 Webmin:DEB 直装实战指南 Webmin 是一款面向 Linux 服务器的轻量级 Web 系统管理工具,基于 Perl 构建,不依赖 Python 或 Node.js 运行时,具备零外部依赖、自包含 Web 服务、可视化配置与操作审计等核心特性。其技术价值在于将 iptables、Apache/Nginx 虚拟主机、用户权限、cron 任务等命令行高危操作封装为带校验、回滚和日志的图形化表单,显著降低运维误操作风险。典型应用场景包括老旧 VPS 快速应急响应、多版本 Ubuntu 环境统一纳管、非专业人员安全接管服务器配置。本文聚焦 阅读详情

相关推荐

银河麒麟离线安装软件实战:deb包、依赖与源码编译全攻略

在信创与内网环境中,Linux系统软件安装常受限于无外网权限,而包管理机制是解决问题的核心。以dpkg和apt为代表的Debian系包管理工具,为软件分发提供了标准化途径,但离线场景下依赖缺失、架构不匹配等问题频发。理解deb包封装原理、依赖解析逻辑及源码编译流程,是高效部署的基础。通过提前准备依赖包、搭建本地apt源、合理选择安装格式,可在批量设备上实现快速交付。面向国产CPU平台、驱动安装及虚拟化工具等场景,掌握排查技巧能大幅提升运维效率。本文从基础概念到工程实践,系统梳理银河麒麟v10离线安装软件的关

weixin_34331102的博客 235

nginx和dpkg实现带依赖的deb包源发布和安装

简单Deb安装软件发布

Double Galaxy 1961

[架构之美]Ubuntu 系统上通过 .deb 包安装 Nginx 的详细步骤(八)

在 Ubuntu 系统上通过 `.deb` 包安装 Nginx 的详细步骤(支持离线环境)

曼岛_的博客 1652

linux下nginx安装和使用

RocketMQ使用详解RocketMQ使用消息发送消息消费事务消息使用消息队列注意事项消息重复消费 RocketMQ使用 在项目中引入MQ客户端依赖,依赖版本最好和RocketMQ版本一致; <!--rocketmq包--> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> &

xianren95的博客 3523

ubuntu20.04离线无网dpkg安装nginx按完整的deb包

解压后 执行: dpkg -i *.deb 里面包含gcc make 和nginx

统信UOS桌面系统nginx离线deb安装包(飞腾-鲲鹏-arm64架构)-23年最新测试

2023年最新测试,绝对没问题!!! 系统版本:统信UOS V20 此包架构是:飞腾,鲲鹏,arm64架构 nginx版本:nginx-v1.14 特意买了几台国产机器安装和测试,有多种CPU电脑测试(1.飞腾-鲲鹏--arm64,2.龙芯--loongarch,3.龙芯--mips,4.兆芯-海光-intel-AMD--X86) 因为我们公司也是做国产软件的,这些必须测试成功,到客户那里直接安装和使用 安装命令: sudo dpkg -i 你的路径/*.deb 安装完可以直接使用 查看是否安装成功 : nginx -version 如果安装和使用遇到什么问题也可以联系我,不忙的话立马帮你解答。 下载后有我的联系方式

Linux之开源组件deb包编译方法

Linux deb编译方式

shalan88的博客 1065

银河麒麟桌面系统nginx离线deb安装包(兆芯-海光-intel-AMD-X86)-23年最新测试

2023年最新测试,绝对没问题!!! 系统版本:银河麒麟桌面系统V10 此包架构是:兆芯-海光-intel-AMD--X86 ngin版本:nginx-v1.18 特意买了几台国产机器安装和测试,有多种CPU电脑测试(1.飞腾-鲲鹏--arm64,2.龙芯--loongarch,3.龙芯--mips,4.兆芯-海光-intel-AMD--X86) 因为我们公司也是做国产软件的,这些必须测试成功,到客户那里直接安装和使用 安装命令: sudo dpkg -i 你的路径/*.deb 安装完可以直接使用 查看是否安装成功 : nginx -version 如果安装和使用遇到什么问题也可以联系我,不忙的话立马帮你解答。 下载后有我的联系方式

linux ded编译,重新编译deb包

debian/ubuntu 是高度自动化的Linux系统,编译源码包也不例外。首选需要确保你的sources.list 包含src 源例如:deb-srchttp://http.us.debian.org/debianstablemaincontribnon-free如果你刚刚在source.list里添加了上面那行,请运行下面的命令清除缓存apt-getcleanall安装编译环境...

weixin_39645343的博客 516

《Long-CLIP: Unlocking the Long-Text Capability of CLIP》

总的来说,Long-CLIP是一个改进的视觉-语言预训练模型,它通过知识保留的位置上插值和主要成分匹配策略,有效解决了原始CLIP模型在处理长文本输入时的限制。这一模型不仅在长文本图像检索任务中表现出色,而且在零样本图像分类任务中保持了与原始CLIP相当的性能,同时还能以即插即用的方式增强图像生成任务中的长文本处理能力。

Angelina_Jolie的博客 1380

【技术拆解】Illumina边合成边测序(SBS)核心流程全解析 | 从文库构建到数据分析

本文深入解析了Illumina边合成边测序(SBS)技术的完整流程。从DNA样本的文库构建(片段化、加接头、扩增),到Flowcell上的簇生成(桥式PCR),再到核心的边合成边测序(SBS)循环(荧光标记、可逆终止),最后简述了从原始数据到生物学洞见的数据分析步骤,为理解这一主流高通量测序技术提供了清晰的框架。

weixin_29201859的博客 539

Ubuntu 12.10 编译安装 Nginx 1.4.7 完整指南

Nginx 是一款高性能、轻量级的开源 Web 服务器与反向代理服务器,其核心优势在于事件驱动架构与低内存占用。在老旧 Linux 系统(如 Ubuntu 12.10)上部署现代 Nginx,需突破 APT 仓库失效、glibc ABI 不兼容、init 系统差异等底层限制。技术本质是绕过包管理依赖,通过源码静态编译实现运行时环境解耦,并适配 Upstart 服务管理机制。该方案广泛应用于工业控制、嵌入式终端、遗留系统复现等场景,是处理技术债务与长周期系统运维的关键能力。本文聚焦 Nginx 编译安装与 U

weixin_31102231的博客 312

Python气象数据处理实战:用PyCINRAD轻松绘制雷达PPI图像(附避坑指南)

本文详细介绍了如何使用Python库PyCINRAD处理中国CINRAD系列天气雷达的基数据,并绘制专业的PPI图像。内容涵盖从环境配置、数据读取、核心绘图到高级定制与批量处理的完整流程,并针对安装依赖、中文乱码、数据范围等常见问题提供了实用的避坑指南,帮助气象工作者高效完成雷达数据可视化。

dog123的博客 223

Ubuntu 14.04 安装 VestaCP 与 Nginx 配置实战指南

Nginx 是现代 Web 服务的核心反向代理与静态资源服务器,其配置灵活性和性能优势使其成为 LEMP/LAMP 架构的首选;Ubuntu 作为最主流的 Linux 服务器发行版之一,长期承载着大量存量生产环境。理解 Nginx 安装原理、版本兼容性约束及配置文件结构,是保障网站稳定上线的技术基础。在老旧但仍在服役的 Ubuntu 14.04 系统上,因官方源陈旧、依赖链断裂、init 系统差异(upstart vs systemd)等现实限制,直接部署新版控制面板面临兼容性风险。本文聚焦于 VestaC

weixin_30268921的博客 354

基于MATLAB的基本数字调制解调系统的设计

基于MATLAB的基本数字调制解调系统的设计一、摘要现代通信系统要求通信距离远、通信容量大、传输质量好,作为其关键技术之一的调制解调技术一直是人们研究的一个重要方向。本文以MATLAB为软件平台,充分利用其提供的通信工具箱和信号处理工具箱中的模块,对数字调制解调系统进行Simulink设计仿真,并且进行误差分析。调制与解调是通信系统中十分重要的一个环节,针对不同的信道环境选择不同的调制与解调方式可...

m0_55395440的博客 5550

【信息学奥赛一本通】1215:迷宫(bfs版)

同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。每组测试数据的第1行是一个正整数n(1≤n≤100),表示迷宫的规模是n×n的。接下来是一个n×n的矩阵,矩阵中的元素为‘再接下来一行是4个整数ha,la,hb,lb,描述A处在第ha行, 第la列,B处在第hb行, 第lb列。一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n×n的格点组成,每个格点只有2种状态,.

chu_xiaojie的博客 946

linux下deb安装包制作,Ubuntu下制作Nginx deb安装包

因为工作需要需要制作deb安装包。在老大的帮助下,终于搞成功了。下面来看一下制作方法。我们以制作Nginx的deb安装包为例子。首先看一下 脚本目录结构:image.pngbuild.sh 打包deb脚本nginx nginx控制脚本,用来在命令行执行 nginx start stop restar等命令。提取于nginx官方的deb包中。post与pre则为打包成deb包后,安装deb包时所...

weixin_39883129的博客 1462

基于Simulink的四足机器人楼梯攀爬仿真模型

构建一个基于Simulink的四足机器人楼梯攀爬仿真模型,旨在模拟四足机器人在面对楼梯等障碍时的运动控制和稳定性调整。以下是一个详细的步骤指南,帮助你从零开始创建这样一个仿真模型。

xiaoheshang_123的博客 247

ubuntu 生成deb文件,生成bin文件

dpkg–命令 -c:显示软件包中的文件列表; -e:将主控信息解压; -f:把字段内容打印到标准输出; -x:将软件包中的文件释放到指定目录下; -X:将软件包中的文件释放到指定目录下,并显示释放文件的详细过程; -W:显示软件包的信息; -l:显示软件包的详细信息; -R:提取控制信息和存档的清单文件; -b:创建debian软件包。 整体文件目录架构 |----DEBIAN |-------control #控制文件 |-------preinst #安装前执行 like

qq_34399969的博客 1089

ATT MTU 交换机制:提升 BLE 数据传输效率的关键

在低功耗蓝牙(BLE)技术的面试中,ATT MTU 交换机制始终是高频考点。无论是芯片厂商的固件开发岗,还是物联网设备的协议栈调试岗,面试官都爱通过这个知识点考察候选人对 BLE 数据传输底层逻辑的理解。本文将系统梳理核心考点,结合历年真题详解应答思路,轻松应对这类问题。​

byte轻骑兵的技术小窝 2411

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

(一)ubuntu通过deb管理软件包

通常我们用源码包安装软件都需要编译,而编译就会带来时间的消耗。如果只是有一两台服务器需要这样,我们还能够接受,但当你需要对十台,几十台甚至上百台服务器进行编译安装源码包,你会不会疯掉呢?现在可以这样做,将编译安装好的程序打包成deb,再为这些deb包做一个网络源。以后就在需要安装的服务器(系统环境相同)中配置好该网络源,通过apt-get安装即可,这样就省去了很多繁琐的工作,节省了大量时间。 ...

xingzhishangyang的专栏 542

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

编译安装nginx [Ubuntu]

编译安装ngnix

Clan 1749

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

deb定制_定制deb安装包

选择一个合适的Linux发行版的重要因素就是是否有足够丰富的软件以及软件的维护是否方便。对于正常情况下的使用,Ubuntu继承自Debian系的deb已经可以满足,部分情况下还是无法摆脱需要编译安装的情况。对于有点洁癖的管理员,或者需要大规模部署的情况,每台机器的编译显然不现实,于是就需要定制deb包。本文以Ubuntu下的操作为例,同样适用于Debian。修改现有deb包这种情况往往是现有的de...

weixin_39602579的博客 142

Ubuntu 14.04下为Nginx手动启用gzip模块实战指南

gzip是Web服务器核心压缩机制,其原理依赖Nginx编译期配置而非运行时加载,技术价值在于显著降低传输体积、提升并发承载与CDN回源效率。在老旧发行版如Ubuntu 14.04中,因官方包默认禁用--with-http_gzip_module且系统组件(zlib、OpenSSL、glibc)版本锁定,直接apt安装或预编译二进制常导致模块缺失、编译失败或运行异常。典型应用场景包括遗留系统性能优化、无法升级OS的生产环境兜底、以及定制化Debian/Ubuntu包构建。本文聚焦于基于官方源码包的精准缝合式

weixin_30872499的博客 361
上一篇: Nginx高危漏洞CVE-2026-42945
下一篇: 国产服务器操作系统编译nginx生成rpm包
运维栈
博客等级 码龄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、付费专栏及课程。

余额充值