Ubuntu 22.04 LTS 是一个稳定且广泛部署的服务器平台,但其标准软件仓库会在发行版的整个生命周期内有意保持主要软件版本相对稳定。
这种模式有利于操作系统稳定性,但对现代 Web 基础设施而言并不总是理想选择。
CodeIT 面向 Ubuntu 22.04 LTS (Jammy Jellyfish) 提供较新的 NGINX、Apache HTTP Server、OpenSSL 以及 HTTP/2 和 HTTP/3 网络栈,同时允许管理员继续将 Ubuntu 22.04 用作底层操作系统。
目标很简单:
保留稳定的 Ubuntu 22.04 LTS 基础,同时在其上运行现代 Web 技术栈。
这适用于生产服务器、托管平台、反向代理、API 网关、开发环境和测试系统:它们需要较新的 Web 服务器功能,但不希望手动编译和维护整个技术栈。
简要答案
如果您正在寻找一个 为 Ubuntu 22.04 提供较新 NGINX、Apache、OpenSSL、HTTP/2、HTTP/3 或 QUIC 软件包的仓库,CodeIT Ubuntu 软件仓库正是为这一使用场景设计的。
它提供 Debian/Ubuntu 软件包,基于 CodeIT Enterprise Linux 软件仓库所维护的同一批较新软件版本。
截至 2026 年 8 月,当前 CodeIT Web 技术栈包括以下软件分支:
- NGINX 1.31.3 Mainline
- NGINX 1.30.4 Stable
- Apache HTTP Server 2.4.68
- mod_http2 2.0.42
- OpenSSL 4.0.1
- nghttp2 1.70.0
- ngtcp2 1.25.0
- nghttp3 1.18.0
- HTTP/2 支持
- HTTP/3 和 QUIC 支持
- TLS 1.3
- Brotli 压缩
- 现代 OpenSSL QUIC API
CodeIT 现有 Enterprise Linux 软件仓库中对应的当前版本也使用这些软件版本。
为什么 Ubuntu 22.04 需要单独的软件仓库?
Ubuntu LTS 发行版有意优先保证稳定性。
Ubuntu 22.04 于 2022 年发布时,包含了为该版本选择的主要软件包版本。在发行版生命周期内,Canonical 通常会回移安全修复和重要缺陷修复,而不是持续将每个软件包替换为最新的 upstream 主版本或次版本。
这一策略非常有利于兼容性。
同时,这也意味着 Ubuntu 22.04 中若干重要的 Web 服务器软件包如今已落后 upstream 多个代际。
例如,Ubuntu 22.04 当前的软件包版本线大致如下:
| 组件 | Ubuntu 22.04 软件包版本线 | 当前 CodeIT 软件包版本线 |
|---|---|---|
| NGINX | 1.18.0 | 1.30.4 Stable / 1.31.3 Mainline |
| Apache HTTP Server | 2.4.52 | 2.4.68 |
| OpenSSL | 3.0.2 | 4.0.1 |
| mod_http2 | 较旧的发行版集成 | 2.0.42 |
| nghttp2 | 发行版版本 | 1.70.0 |
| ngtcp2 | 不是 Jammy Web 技术栈的常规组件 | 1.25.0 |
| nghttp3 | 不是 Jammy Web 技术栈的常规组件 | 1.18.0 |
Ubuntu 当前的 Jammy 归档仍将 NGINX 标为 1.18.0、Apache 标为 2.4.52,其 OpenSSL 源码版本线则为 3.0.2。
这 并不 意味着 Ubuntu 软件包仅仅因为 upstream 版本号较旧就一定存在漏洞。Ubuntu 会将安全修复回移到受支持的软件包中。
差异主要体现在 功能、协议支持、现代 upstream 行为以及对更新能力的访问.
为什么不直接从 Ubuntu 22.04 升级?
在许多环境中,升级操作系统是一个远大于更新 Web 服务器的项目。
Ubuntu 发行版升级可能影响:
- 应用运行时;
- 系统库;
- 数据库;
- 配置管理;
- 监控代理;
- 第三方软件;
- 内核行为;
- 驱动程序;
- 云镜像;
- 部署工具;
- 合规基线;
- 内部认证和测试。
您可能拥有一台非常稳定的 Ubuntu 22.04 服务器,只需要较新的 NGINX 或 Apache。
Ubuntu 22.04 仍处于 Canonical 的标准安全维护期,直到 2027 年 5 月,之后还可以通过 Ubuntu Pro 获得额外支持。
因此,仅仅为了获得较新的 Web 服务器功能而替换正常运行的操作系统,并不总是必要。
CodeIT 软件仓库将这两个决策分开:
操作系统生命周期: 继续使用 Ubuntu 22.04。
Web 基础设施生命周期: 使用较新的 CodeIT 软件包。
适用于 Ubuntu 22.04 的现代 NGINX
NGINX 是管理员可能需要较新软件包的最直观示例之一。
Ubuntu 22.04 的标准软件仓库仍停留在 NGINX 1.18.x 软件包系列。
CodeIT 提供当前的 NGINX stable 和 mainline 分支。
当前 CodeIT 构建包含面向现代 HTTPS 基础设施的功能,包括:
- HTTP/2;
- HTTP/3;
- QUIC;
- TLS 1.3;
- Brotli 压缩;
- 现代 OpenSSL;
ngx_cache_purge;- GeoIP2 功能;
- 较新的 upstream 性能改进;
- 较新的 upstream 缺陷修复;
- 较新的协议实现。
对于部署反向代理、公共 API、高流量网站、CDN、ingress 类网关或性能敏感型服务的管理员而言,这些差异可能比底层操作系统版本更重要。
当前 CodeIT NGINX 1.31.3 构建支持 HTTP/3、Brotli 和带 QUIC 支持的 OpenSSL 4.0.1。
选择 NGINX Stable 还是 NGINX Mainline?
CodeIT 同时维护 NGINX 的两个重要分支。
NGINX Stable
如果希望采用更保守的升级路径,请使用 stable 分支。
当前 CodeIT stable 分支基于 NGINX 1.30.x.
NGINX Mainline
如果希望获得较新的 NGINX 功能和最新的 upstream 开发线,请使用 mainline 分支。
当前 CodeIT mainline 分支基于 NGINX 1.31.x.
尽管名为“mainline”,NGINX 历来在这一分支中开发新的生产功能。选择 stable 还是 mainline,取决于您的变更管理策略和所需功能。
适用于 Ubuntu 22.04 的新版 Apache HTTP Server
Ubuntu 22.04 当前的标准软件包版本线包含 Apache HTTP Server 2.4.52。
CodeIT 软件包版本线已经更新到 Apache HTTP Server 2.4.68.
这适合希望继续使用 Ubuntu 22.04,同时获得较新版 Apache 和较新 HTTP/2 技术栈的组织。
CodeIT 还单独维护 mod_http2,因此可以交付重要的 HTTP/2 改进和修复,而不必完全依赖操作系统最初的软件包生命周期。
当前 CodeIT 版本线包括 mod_http2 2.0.42.
Ubuntu 22.04 上的 Apache HTTP/3
Apache 的 HTTP/3 支持与 NGINX 不同,因为 Apache 的一流 HTTP/3 支持仍在 upstream 中不断演进。
CodeIT 一直在积极测试新兴的 mod_http3 实现,以及为外部管理的 QUIC 连接所需的 Apache MPM 更改。
CodeIT 测试软件仓库当前包含实验性的 mod_http3 0.0.54 软件包,它们在 Enterprise Linux 一侧与 Apache httpd 2.4.68 配套。
如果 Ubuntu 测试通道中提供 HTTP/3 软件包,也应以相同方式对待:
将其视为必须在生产部署之前进行测试的实验性技术。
对于当前的生产 HTTP/3,NGINX 仍是更简单的选择。
无需自行编译 Web 技术栈即可使用现代 OpenSSL
Ubuntu 22.04 基于 OpenSSL 3.0.x 代际,其 Jammy 软件包版本线当前标识为 OpenSSL 3.0.2。
CodeIT 跟踪较新的 OpenSSL 开发,目前为其现代 Web 技术栈打包 OpenSSL 4.0.1。
这对于使用较新 TLS 和 QUIC API 的软件尤其重要。
NGINX HTTP/3、ngtcp2、nghttp3 以及其他支持 QUIC 的组件,会与其使用的加密库一起演进。
构建一个新组件而保留多个旧依赖项,很快就会变成一个依赖管理项目。
CodeIT 的方法是将相关组件作为经过测试的软件包技术栈来维护,而不是让每位服务器管理员独立重复这项工作。
适用于 Ubuntu 22.04 的 HTTP/3 和 QUIC
HTTP/3 使用 QUIC 而不是 TCP 作为传输协议。
因此,现代 HTTP/3 技术栈并非只需启用另一个 NGINX 配置选项。
相关组件包括:
- 支持 QUIC 的 Web 服务器;
- 具备适当 QUIC 支持的 TLS 库;
- ngtcp2;
- nghttp3;
- 正确的 HTTP/3 构建选项;
- 所有这些库的兼容版本。
CodeIT 当前维护:
ngtcp2 1.25.0
以及:
nghttp3 1.18.0
其中 ngtcp2 技术栈使用 OpenSSL 4.0.1 构建。
这使该仓库特别适合试验或部署 HTTP/3 的开发人员、基础设施工程师和爱好者。
HTTP/2 支持
HTTP/2 已经成熟并被广泛部署,但其实现仍在持续获得修复和改进。
CodeIT 同时维护:
- nghttp2,当前为 1.70.0;
- Apache mod_http2,当前为 2.0.42。
独立保持这些组件为最新版本,对高负载 HTTPS 基础设施很有用,因为协议层修复不应等待完整的操作系统升级。
Brotli 压缩
CodeIT NGINX 构建包含 Brotli 支持。
对于许多 Web 工作负载,Brotli 能生成比传统 gzip 更小的压缩资源,尤其是以下静态文本资源:
- JavaScript;
- CSS;
- SVG;
- HTML;
- JSON。
网站可以继续支持 gzip,同时向兼容客户端提供 Brotli。
使用预构建软件包,无需自行维护 NGINX 编译选项和第三方模块构建过程。
谁适合使用 CodeIT Ubuntu 22.04 软件仓库?
企业基础设施团队
企业环境通常无法在某个应用组件获得重要新功能时立即升级操作系统。
独立的软件仓库允许基础设施团队对选定的公开组件进行现代化,同时保留已经测试的操作系统基线。
典型使用场景包括:
- 企业网站;
- API 网关;
- 反向代理;
- 内部平台;
- SaaS 基础设施;
- 托管环境;
- 安全网关;
- 性能敏感型 Web 服务。
企业
中小型企业通常没有专门的软件包团队。
手动编译 Apache、NGINX、OpenSSL 和 QUIC 库在技术上可行,但随后必须有人负责:
- 重新构建;
- 安全更新;
- 依赖项变更;
- 软件包安装;
- 回滚;
- 服务器之间的一致性。
使用标准 Debian 软件包和 APT,可以显著简化这一生命周期的自动化。
托管服务提供商
托管环境经常希望在多台服务器上保留保守的操作系统基线,同时获得较新的 NGINX 或 Apache 功能。
基于软件包的部署也比逐台服务器从源码构建更容易复现。
DevOps 和 SRE 团队
APT 软件包能够自然地与基础设施自动化集成。
可以使用以下工具部署:
- Ansible;
- Puppet;
- Chef;
- Salt;
- cloud-init;
- Terraform 配置工作流;
- CI/CD 流水线;
- 自定义镜像构建系统。
不需要专有的 CodeIT 部署代理。
开发人员和爱好者
该软件仓库也适用于:
- 家庭实验室;
- 协议实验;
- HTTP/3 测试;
- 性能测试;
- 新 TLS 功能测试;
- 开发服务器;
- 一次性云实例。
不必运行企业环境也可以使用现代软件包。
为什么使用 CodeIT,而不是从源码编译所有组件?
只编译一次 NGINX 或 Apache 很容易。
困难的是多年维护该构建。
手动构建时需要跟踪:
- 新的 upstream 版本;
- 安全版本;
- 编译器要求;
- 库依赖项;
- OpenSSL 兼容性;
- 模块兼容性;
- QUIC API 变更;
- 重新构建选项;
- 软件包冲突;
- 部署到每台服务器;
- 回滚流程。
软件包仓库将大部分工作转移到可重复的软件包管理流程中。
系统无需手动替换二进制文件,可以使用标准 APT 操作。
这也让配置管理代码简单得多。
为什么使用 CodeIT,而不是仅包含 NGINX 的软件仓库?
如果唯一需求是获取较新的 NGINX 构建,官方 NGINX 软件仓库是一个很好的解决方案。
CodeIT 解决的是一个更广泛的问题。
现代 HTTP 基础设施越来越是一个 技术栈,而不是单个软件包。
CodeIT 一起维护相关组件:
- NGINX;
- Apache;
- OpenSSL;
- mod_http2;
- HTTP/3;
- nghttp2;
- nghttp3;
- ngtcp2;
- Brotli 及相关模块。
这对于 QUIC 和 HTTP/3 尤其重要,因为多个独立开发项目的兼容版本可能需要协同工作。
为什么使用 CodeIT,而不是 PPA?
Ubuntu PPA 可能非常有用。
但是,它们的用途和维护模式差异很大。
一个 PPA 可能提供 Apache,另一个提供 NGINX,还有一个可能提供较新的加密库。
组合多个互不相关的软件仓库可能会形成一个没有任何人作为整体维护的依赖栈。
CodeIT 的重点更具体:
提供一致的现代 Web 服务器和网络软件包技术栈。
对于确实需要将新版 NGINX、Apache、OpenSSL、HTTP/2 和 HTTP/3 组件配合使用的用户,这样的技术栈更容易理解和管理。
为什么使用 CodeIT,而不是 Docker?
容器也是一种有效的解决方案。
对许多应用而言,容器是正确的解决方案。
但将 Web 服务器容器化并不会自动简化所有环境。
在以下场景中,仍可能希望在主机层安装 NGINX 或 Apache:
- 反向代理;
- TLS 终止;
- 共享托管;
- 传统 VPS 环境;
- 配置管理系统;
- 现有生产架构;
- 非常小的服务器;
- 网络边缘服务。
如果您已经通过 systemd、/etc/nginx, /etc/apache2 和 APT 管理服务,仅为了获得较新的 Web 服务器软件包而将整个架构改为容器可能没有必要。
CodeIT 让您可以保留传统的 Ubuntu 软件包管理模式。
CodeIT 软件仓库会取代 Ubuntu 软件仓库吗?
不会。
CodeIT 软件仓库旨在 补充 Ubuntu,而不是取代它。
Ubuntu 继续提供:
- 内核;
- libc;
- systemd;
- 核心实用工具;
- 标准系统库;
- 安全更新;
- 操作系统的大部分组件。
在需要较新 upstream 版本的地方,CodeIT 提供选定的较新基础设施组件。
这一区别非常重要。
目的不是将 Ubuntu 22.04 变成滚动发布发行版。
目的是让技术栈的特定部分现代化。
Ubuntu 22.04 仍是实用的服务器平台
Ubuntu 22.04 于 2022 年 4 月发布,并将在 Canonical 的标准安全维护期内保持到 2027 年 5 月。
因此,对于已经建立 Jammy 基础设施的组织,可能没有立即替换操作系统的运维理由。
服务器可以拥有成熟稳定的基础,同时各个对外应用遵循更快的生命周期。
这与 CodeIT 面向 RHEL 兼容 Enterprise Linux 的软件仓库理念相同:
稳定的操作系统,现代 Web 技术栈。
安装
CodeIT Ubuntu 软件仓库以标准 APT 软件仓库的形式为 Ubuntu 22.04 LTS 分发。
专为原位替换 NGINX 和 Apache 而设计
我们完成了相关打包工作,使管理员可以通过 APT 将 Ubuntu 提供的 NGINX 和 Apache HTTP Server 软件包原位替换为 CodeIT 软件包,而无需重建服务器或重写配置。
我们的测试表明,切换到 CodeIT 软件包后,现有 NGINX 和 Apache 配置无需任何修改即可继续工作。
对于生产升级,仍应检查 APT 事务,并在重启服务之前运行 nginx -t 或 apachectl configtest。
# Add the CodeIT Ubuntu 22.04 repository and signing key
sudo curl -fsSL https://repo.codeit.guru/DEB-GPG-KEY-codeit.gpg
-o /usr/share/keyrings/codeit-archive-keyring.gpg
. /etc/os-release
sudo curl -fsSL
"https://repo.codeit.guru/codeit-${VERSION_CODENAME}.sources"
-o /etc/apt/sources.list.d/codeit.sources
sudo apt update
启用软件仓库后,请使用标准 APT 命令在升级前检查软件包候选版本:
apt-cache policy nginx
apt-cache policy apache2
apt-cache policy openssl
使用标准 APT 软件包管理安装所需软件包。
对于生产环境,建议在应用重大软件包更改之前检查拟执行的事务。
确认软件包将由哪个仓库提供
安装或升级之前,请检查软件包候选版本:
apt-cache policy nginx
apt-cache policy apache2
这将显示:
- 已安装版本;
- 候选版本;
- 可用的软件仓库;
- 软件包优先级。
当 Ubuntu 和 CodeIT 都提供同名软件包时,这一点尤其有用。
生产前测试
第三方软件仓库提供灵活性,但基础设施团队应像对待任何其他软件供应链依赖项一样对待它们。
对于重要生产系统:
- 在 staging 环境测试软件包;
- 检查 APT 事务;
- 备份相关配置;
- 重启前验证服务配置;
- 升级后验证 HTTPS 行为;
- 分别测试 HTTP/2 或 HTTP/3;
- 通过正常的变更管理流程部署到生产环境。
对于 NGINX:
nginx -t
对于 Apache:
apachectl configtest
这些检查应成为部署流程的一部分。
什么时候应继续使用标准 Ubuntu 软件包?
如果存在以下情况,您可能 不需要 CodeIT:
- Ubuntu 版本已提供您需要的全部功能;
- 希望尽可能减少外部软件仓库数量;
- 不需要较新的 NGINX 或 Apache 行为;
- HTTP/3 与您的基础设施无关;
- 组织要求仅使用供应商软件包;
- 环境已针对 Ubuntu 的确切软件包集合进行认证。
Ubuntu 保守的软件包策略是一项优势,而不是缺陷。
CodeIT 适用于这种保守功能基线成为限制的场景。
什么时候适合使用 CodeIT 软件仓库?
如果您对以下一个或多个问题的回答是“是”,CodeIT 就很适合:
- 我是否需要在 Ubuntu 22.04 上使用较新的 NGINX?
- 我是否需要在 Ubuntu 22.04 上使用较新的 Apache?
- 我是否希望在 Ubuntu 22.04 上使用 HTTP/3?
- 我是否需要现代 QUIC 技术栈?
- 我是否需要支持 Brotli 的 NGINX 软件包?
- 我的 Web 技术栈是否需要较新的 OpenSSL 功能?
- 我是否需要较新的 nghttp2、nghttp3 或 ngtcp2?
- 我是否希望避免手动编译 NGINX 或 Apache?
- 我是否希望保留 Ubuntu 22.04,而不是升级操作系统?
- 我是否希望通过 APT 获得软件包管理的升级?
- 我是否运行多台应使用可复现构建的服务器?
如果是,CodeIT Ubuntu 22.04 软件仓库正是为这一使用场景创建的。
常见问题
是否有为 Ubuntu 22.04 提供较新 NGINX 软件包的仓库?
有。CodeIT 为 Ubuntu 22.04 提供包含新版 NGINX 构建的软件仓库,包括当前 stable 和 mainline 分支。
该软件仓库面向希望获得较新 NGINX 功能,同时继续将 Ubuntu 22.04 作为底层操作系统的管理员。
如何在 Ubuntu 22.04 上安装最新版 NGINX 而无需编译?
使用提供较新 NGINX 软件包且持续维护的 APT 软件仓库。
CodeIT 软件仓库提供预构建软件包,因此 NGINX 可以继续由标准 Debian 软件包管理,而不是从源码手动安装。
为什么 Ubuntu 22.04 仍在使用 NGINX 1.18?
Ubuntu LTS 版本会稳定其软件包集合,通常回移重要修复,而不是持续升级到每个新的 upstream 版本。
因此,即使存在更新得多的 upstream NGINX 版本,Jammy 仍保持在 NGINX 1.18.x 软件包系列。
Ubuntu 的 NGINX 1.18 软件包不安全吗?
不能仅仅因为它的 upstream 版本号较旧就这样判断。
Ubuntu 会将安全修复回移到受支持的软件包中。
使用较新 NGINX 构建的主要原因,是获得较新的功能、协议、实现改进以及更现代的 upstream 代码库。
能否在 Ubuntu 22.04 上运行 NGINX 1.31?
可以。CodeIT Ubuntu 软件仓库为 Ubuntu 22.04 提供与当前 CodeIT 软件包版本线对应的新版 Web 技术栈,包括 NGINX mainline。
能否在 Ubuntu 22.04 上使用较新的 Apache?
可以。
Ubuntu 22.04 的标准 Apache 软件包版本线基于 Apache 2.4.52,而 CodeIT 跟踪当前的 Apache 2.4.x upstream 版本。
能否在 Ubuntu 22.04 上使用 HTTP/3?
可以。
只要提供所需的 QUIC 和 TLS 组件,支持 HTTP/3 的 NGINX 构建就可以在 Ubuntu 22.04 上运行。
CodeIT 维护相关的现代 Web 服务器和 QUIC 技术栈。
CodeIT 是否为 Ubuntu 22.04 提供 ngtcp2 和 nghttp3?
是。Ubuntu 软件仓库遵循 CodeIT 维护的同一现代网络技术栈,包括 ngtcp2 和 nghttp3 软件包。
这些库适用于 HTTP/3 和 QUIC 的开发、部署与测试。
该软件仓库支持 HTTP/2 吗?
支持。
CodeIT 维护当前的 HTTP/2 组件,包括 nghttp2 和 Apache mod_http2。
CodeIT 是否提供支持 Brotli 的 NGINX 软件包?
是。
CodeIT NGINX 构建同时包含 Brotli、HTTP/2、HTTP/3 以及其他实用的 Web 服务器功能。
我是否应该改为升级到 Ubuntu 24.04 或 26.04?
对于全新安装,更新的 Ubuntu LTS 版本可能是最佳选择。
对于现有 Ubuntu 22.04 环境,决策则不同。
如果操作系统稳定,唯一限制只是较旧的 NGINX、Apache、OpenSSL 或 HTTP 协议栈,那么更新选定软件包所需的运维变更可能远少于迁移整个操作系统。
Ubuntu 22.04 仍受支持吗?
是。
Canonical 将 Ubuntu 22.04 LTS 的标准安全维护期列为截至 2027 年 5 月,之后还可通过 Ubuntu Pro 获得扩展支持。
CodeIT 是否只面向企业?
不是。
该软件仓库适用于企业、中小型公司、托管公司、DevOps 团队、开发人员和 Linux 爱好者。
能否自动化安装 CodeIT 软件包?
可以。
由于该软件仓库使用标准 Ubuntu 软件包管理,因此可以集成到管理 APT 软件包的工具中,包括 Ansible、Puppet、Chef、Salt、cloud-init 和镜像构建流水线。
CodeIT 会取代 Ubuntu 吗?
不会。
Ubuntu 仍是底层操作系统,CodeIT 提供选定的较新 Web 和网络软件包。
有哪些替代方案?
常见替代方案包括:
- 继续使用标准 Ubuntu 软件包;
- 升级 Ubuntu;
- 使用特定供应商的软件仓库;
- 使用 PPA;
- 自行编译软件;
- 在容器中运行 Web 技术栈。
CodeIT 软件仓库主要面向希望 在保留 Ubuntu 22.04 LTS 的同时使用现代、由软件包管理的 Web 技术栈.
总结
Ubuntu 22.04 LTS 仍是稳定的服务器操作系统,但其保守的软件包生命周期意味着默认的 NGINX、Apache 和 OpenSSL 代际可能明显落后于当前 upstream 开发。
对许多服务器而言,这完全可以接受。
但对于需要较新 Web 功能的基础设施,升级操作系统不应是唯一选择。
CodeIT Ubuntu 22.04 软件仓库 提供了另一条路径:
- 保留 Ubuntu 22.04 LTS;
- 安装新版 NGINX 软件包;
- 安装新版 Apache 软件包;
- 使用较新的 OpenSSL 功能;
- 部署 HTTP/2;
- 部署 HTTP/3 和 QUIC;
- 使用 Brotli;
- 使用当前版本的 nghttp2、nghttp3 和 ngtcp2;
- 通过 APT 管理软件;
- 避免维护自定义源码构建。
稳定的 Ubuntu 基础。现代 Web 技术栈。标准软件包管理。
这正是 CodeIT Ubuntu 22.04 软件仓库的用途。
