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

kettle信息发送钉钉

由于其他的作业比较多,想要在job中加入一个转化发送消息到钉钉,其他的配置说明直接获取系统的信息。这样也避免直接修改其他的转换和大量的工作量。 步骤: 1、新建一个转换 拉取获取系统信息、获取变量、JavaScript代码、获取access_token组件。 2、获取系统信息设置 拿到需要的信息,比如作业的读写更新删除行数,job的日志内容 这个日志内容同在作业执行页面下输出的日志,所以可以在执行作业时选择是详细日志、基本日志还是错误日志。 3、获取变量 获取变量主要是想要去拿到job的名称,文件名。按

Deng_7788的博客 1448

QMT实盘交易入门:5分钟搞定ETF全球配置策略(附完整代码)

本文详细介绍了如何使用QMT平台实现ETF全球配置策略,从环境准备到策略编写、实盘部署全流程仅需5分钟。通过xtquant库对接交易所接口,提供完整的动量轮动策略代码,帮助投资者快速掌握自动交易技术,优化全球资产配置。

weixin_30675247的博客 335

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

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

weixin_31102231的博客 312

保姆级教程:在RK3568开发板上手把手配置RMII百兆以太网DTS节点

本文提供了一份详细的RK3568开发板RMII百兆以太网DTS节点配置教程,涵盖基础概念解析、关键参数设置、实际操作步骤及常见问题排查。通过手把手指导,帮助开发者快速完成RK3568开发板的以太网配置,特别适合嵌入式系统开发者参考。

weixin_33686714的博客 137

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

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

weixin_30268921的博客 354

【学习系列】SAP RAP 29:如何创建Application Jobs(下)

本文介绍了在SAP系统中通过API创建和使用Application Jobs的方法。主要内容包括:1) 创建RAP应用并通过Action调用API创建Jobs;2) 使用事件驱动方式异步更新Job状态;3) 通过URL跳转到标准日志页面;4) 使用Custom Entity获取Job日志;5) 演示遗留接口IF_APJ_DT_EXEC_OBJECT和IF_APJ_RT_EXEC_OBJECT的使用。文章提供了详细的代码示例,展示了如何通过CL_APJ_RT_API=>SCHEDULE_JOB调度作业,

DeveloperMrMeng的博客 382

人工智能---什么是Transformer?

Transformer是一种强大的神经网络架构,最初由Google的研究人员在论文《Attention is All You Need》中提出,用于自然语言处理任务,特别是在机器翻译方面取得了巨大成功。Transformer的核心思想是完全基于自注意力机制(self-attention mechanism)来实现序列到序列(sequence-to-sequence)的学习。它在自然语言处理(NLP)和其他序列到序列任务中表现出色,逐渐成为该领域的主流模型。近些年也逐渐在自动驾驶领域有所应用。

智能汽车人的博客 3955

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

基于STM32、HAL库的W25Q01JVZEIQ TR FLASH存储器驱动应用程序设计

1Gb (128MB),分为512个可擦除块(block),每个块256KB。:块擦除约30-50ms,芯片擦除约30s。:标准SPI (支持1/2/4线模式)// 初始化CS引脚为高电平。// 擦除扇区(4KB)// 初始化Flash。/* 状态寄存器位 *//* 指令定义 *//* 超时定义 *//* 函数声明 */

corlin6688的博客 268

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

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

qq_34399969的博客 1089

Vue3 - 详解播放m3u8视频流+HLS拉流推流完整方案,vue3如何播放m3u8格式文件实时视频播放教程(流媒体播放、直播视频流、实时摄像头监控视频流对接、后端服务器切片分片传输视频流边下边播)

vue3组件播放m3u8格式视频,实现hls流媒体监控摄像头实时播放,vue3播放m3u8视频流格式,实时直播画面视频流播放,摄像头监控画面推流,hls.js,Vue Video.js播放m3u8视频流格式,实现hls流媒体监控摄像头实时播放,vue中使用video.js播放m3u8格式的视频,m3u8格式视频,通过HLS协议播放m3u8格式视频,黑屏不显示怎么办,视频非常卡加载缓慢,拉流报错,推流报错,播放失败,播放监控m3u8视频流格式,苹果ios播放,vue3中使用video标签播放MP4,西瓜视频插

🏆 前端领域优质创作者 5941

LeRobot — 基于 PyTorch 的真实世界机器人学习框架(一)- 核心框架模块解析

LeRobot 是一个开源的机器人学习框架,由 Hugging Face 开发,旨在降低机器人学的准入门槛。该框架提供完整的机器学习流程支持,包括数据采集、训练、评估和部署。核心模块涵盖数据集标准化、策略算法、硬件抽象和强化学习组件,采用模块化设计实现灵活扩展。通过集成 Hugging Face Hub,用户可以轻松共享数据集和预训练模型。LeRobot 特别注重真实世界的机器人应用,支持多种前沿算法如模仿学习、视觉语言动作模型等,并提供统一的硬件接口和仿真环境适配。

熊猫小妖的AI世界 171

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

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

xingzhishangyang的专栏 542

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

编译安装nginx [Ubuntu]

编译安装ngnix

Clan 1749

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

deb定制_定制deb安装包

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

weixin_39602579的博客 142

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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、付费专栏及课程。

余额充值