努力
加油

新手搭建Web服务器应该选用Ubuntu 20.04还是22.04?

直接给结论:首选 Ubuntu 22.04 LTS。

除非你有极其特殊的遗留软件依赖(比如某些老版本的 Oracle JDK 或特定商业闭源驱动),否则没有理由在 2024 年还去新建基于 20.04 的实例。

下面从几个核心维度拆解为什么这么选,以及新手容易踩的坑。

1. 生命周期与支持周期(最硬的理由)

  • Ubuntu 20.04 (Focal Fossa):
    • 标准支持已于 2025 年 4 月结束。
    • 虽然 Extended Security Maintenance (ESM) 会续命到 2030 年,但那是付费服务或者仅针对安全补丁。对于个人开发者或小团队,你很难享受到新特性带来的性能优化和内核更新。
  • Ubuntu 22.04 (Jammy Jellyfish):
    • 标准支持持续到 2027 年 4 月。
    • ESM 支持到 2032 年。
    • 关键点:22.04 是目前大多数云厂商(阿里云、腾讯云、华为云等)默认推荐且镜像最全的版本。很多新的安全工具、监控XX(如 CloudMonitor、AliyunYunxiao)对 22.04 的支持更完善,安装过程更少报错。

2. 软件包版本与开发体验

  • GCC/Clang 编译器:22.04 默认 GCC 11+,20.04 是 GCC 9。如果你涉及 C/C++ 编译、Node.js 本地模块编译、Python 扩展等,新版编译器对现代语法和新特性的支持更好,编译效率也更高。
  • Python:22.04 默认 Python 3.10,20.04 是 3.8。现在主流框架(Django, Flask, FastAPI)对 3.8 的支持逐渐边缘化,3.10 的性能提升(特别是 GIL 优化)和类型提示改进对写代码更友好。
  • Nginx/Apache:22.04 的 Nginx 版本更新,HTTP/3 (QUIC) 支持开箱即用配置更简单,这对 Web 服务器性能至关重要。

3. 云厂商兼容性(国内环境特供)

在国内主流云平台购买 ECS/CVM 时:

  • 镜像可用性:22.04 的官方镜像通常比 20.04 更新更快,包含最新的云助手(Cloud Assistant)、云监控插件预装版本。
  • 网络栈:22.04 内核更新了 TCP BBR 拥塞控制算法的实现细节,配合云厂商的网络优化,在高并发场景下表现略优于 20.04。
  • 容器支持:如果你打算用 Docker/Kubernetes,22.04 对 cgroup v2 的支持更成熟,而 cgroup v2 是现代容器运行时(如 containerd, kubelet)的最佳实践基础。20.04 虽然也能用,但经常需要手动切换配置,容易出诡异问题。

4. 新手避坑指南

既然选了 22.04,注意以下几点:

✅ 必须做的配置

  1. 开启 Swap:云服务器内存往往较小(如 2G/4G)。22.04 默认可能不创建 Swap 文件。务必通过 fallocate + swapon 创建一个 2-4G 的 swap 文件,防止 OOM(内存溢出)导致服务崩溃。
  2. 防火墙策略:22.04 默认启用 ufw(Uncomplicated Firewall)。新手常犯错误是开了端口但没放行 SSH,结果把自己锁在外面。记住:先开 SSH (22),再开业务端口 (80/443)。
  3. 自动更新配置:编辑 /etc/apt/apt.conf.d/50unattended-upgrades,确保只允许安全更新自动重启,避免意外重启导致服务中断。

❌ 不要做的事

  1. 不要手动升级内核:云服务器的内核由云厂商管理,手动 apt upgrade linux-image 可能导致无法开机或失去云监控能力。
  2. 不要禁用 AppArmor:虽然它有时会“误杀”一些非标准路径的服务,但它是 Linux 重要的安全机制。遇到权限问题时,优先调整配置文件而非关闭 AppArmor。
  3. 不要忽略日志轮转:Web 服务器日志增长快,配置好 logrotate,否则磁盘很快被占满。

5. 什么情况下才考虑 20.04?

只有以下情况,我才建议你妥协使用 20.04:

  • 你的项目依赖某个非常古老的商业软件,该软件的官方文档明确标注“仅支持 Ubuntu 20.04 及以下”。
  • 你正在维护一个历史悠久的老系统,迁移成本极高,且暂时无法重构。
  • 你使用的某个第三方闭源驱动(如某些特殊 GPU 卡)目前只提供了 20.04 的二进制包。

总结

对于绝大多数新手搭建 Web 服务器(无论是跑 WordPress、Node.js API、还是 Java Spring Boot),Ubuntu 22.04 LTS 是当前最平衡的选择:既有足够长的支持周期,又有较新的软件栈,还能获得云厂商最好的兼容性和社区资源。

别纠结,直接选 22.04。