在生产环境部署 Ubuntu LTS(Long Term Support,长期支持版)几乎是国内互联网和传统企业上云的标准动作。无论是跑在阿里云 ECS、腾讯云 CVM 还是自建机房,Ubuntu 20.04/22.04/24.04 都是主力选手。
但“能用”和“好用且稳定”是两回事。很多新手踩坑,往往不是因为系统装不上,而是因为对 Linux 内核机制、包管理逻辑以及云厂商特性理解不够深。以下是我在实际运维和架构设计中总结的几个关键维度,建议按顺序排查:
1. 版本选择的陷阱:LTS vs 非 LTS
首先明确一点:生产环境严禁使用非 LTS 版本(如 21.10, 23.04)。
- 支持周期:LTS 版本提供 5 年标准支持,付费后可延至 10 年。非 LTS 只有 9 个月。
- 兼容性:大多数商业软件(如 Oracle DB, SAP, 某些监控 Agent)只认证 LTS 版本。
- 现状:目前主流是 22.04 (Jammy) 和 24.04 (Noble)。如果业务依赖较老的技术栈(如旧版 Java EE),20.04 可能更稳妥;如果是新容器化微服务,直接上 22.04 或 24.04。注意:升级路径通常是相邻 LTS 间升级(20.04 -> 22.04),跨大版本升级风险极高,需提前测试。
2. 内核与 HWE(Hardware Enablement)
这是最容易忽视的坑。Ubuntu 默认安装的是 HWE Kernel。
- 什么是 HWE? 为了在新硬件上获得更好的驱动支持(特别是网卡、GPU、NVMe SSD),Ubuntu 会定期推送更新的内核版本,即使主版本(如 22.04)的内核仍是 5.15。
- 生产隐患:
- 稳定性波动:新内核可能引入回归 Bug(Regression)。
- 闭源模块失效:如果你使用了 NVIDIA 驱动、VMware Tools 或某些专有存储驱动,它们通常编译绑定到特定内核头文件。内核自动更新后,这些模块会加载失败,导致显卡无法识别或磁盘挂载异常。
- 建议:
- 对于云服务器(EC2/ECS/CVM),底层虚拟化层已经做了大量优化,固定内核版本往往比追求最新内核更安全。
- 通过
sudo apt install --install-recommends linux-generic-hwe-22.04可以手动控制 HWE 状态。 - 如果使用专有驱动,建议在
/etc/default/grub中锁定内核版本,禁止自动更新内核,仅允许安全补丁更新。
3. 包管理与 APT 缓存清理
Ubuntu 的 apt 非常强大,但也容易留下垃圾。
- 自动更新风险:默认情况下,Ubuntu Server 不会自动重启,但可能会自动安装安全补丁。确保配置了
unattended-upgrades,并设置白名单,避免意外重启关键服务。 - 磁盘空间爆炸:
/var/cache/apt/archives/会堆积.deb安装包。生产服务器磁盘小,务必配置 cron job 定期执行apt-get clean。 - PPA 污染:严禁随意添加第三方 PPA(Personal Package Archives)。它们不受 Canonical 官方支持,依赖关系混乱,极易导致
dpkg锁死或库版本冲突。尽量使用官方仓库或 Docker 容器隔离应用。
4. 网络配置与 Netplan
从 18.04 开始,Ubuntu 用 Netplan 替代了传统的 ifupdown。
- YAML 格式敏感:Netplan 配置文件是 YAML 格式,缩进错误会导致网络不通,且报错信息晦涩难懂。
- 云厂商适配:在阿里云、腾讯云等平台上,推荐使用
netplan配合networkd后端。确保 DHCP 客户端正确配置,静态 IP 设置时注意网关和 DNS 的正确性。 - IPv6 问题:国内部分云厂商 IPv6 支持不完善,若业务不需要,建议在
/etc/sysctl.conf中禁用 IPv6,避免某些老旧应用因 IPv6 解析超时而卡死。
5. 安全基线:SSH 与 UFW
- SSH 加固:
- 禁用 root 直接登录(
PermitRootLogin no)。 - 强制使用密钥认证(
PasswordAuthentication no)。 - 更改默认端口(可选,但能减少暴力破解日志噪音)。
- 启用 Fail2ban 或云厂商的安全组策略,限制 SSH 访问 IP 段。
- 禁用 root 直接登录(
- 防火墙(UFW):
- Ubuntu 预装
ufw,但默认未启用。生产环境必须启用:sudo ufw enable。 - 遵循最小权限原则:只开放必要端口(如 80, 443, 自定义应用端口)。
- 注意:如果在云主机上,云安全组(Security Group)优先于主机防火墙。先配好云厂商的安全组规则,再在主机内用 UFW 做第二道防线。
- Ubuntu 预装
6. 时间同步与 NTP
分布式系统中,时间偏差是致命伤。
- Ubuntu 默认使用
systemd-timesyncd。 - 在中国大陆,NTP 服务器连接可能不稳定或被干扰。建议配置国内可信的时间源,如阿里云 NTP(
ntp1.aliyun.com)、腾讯云 NTP 或华为云 NTP。 - 检查命令:
timedatectl status和ntpq -p。确保System clock synchronized: yes。
7. 资源监控与日志管理
- Swap 分区:云服务器内存通常较大,但 Swap 仍需配置。建议设置为物理内存的 10%-20%,或使用
zram压缩交换,提升性能。 - 日志轮转(Logrotate):默认配置下,
/var/log/syslog和/var/log/auth.log可能迅速膨胀。检查/etc/logrotate.d/配置,确保日志被压缩和归档,避免磁盘写满。 - 审计日志:启用
auditd,记录关键文件访问和特权命令执行,满足合规要求(如等保 2.0)。
8. 云厂商特定注意事项
- 阿里云 ECS:注意
cloud-init的配置,它会在首次启动时设置 hostname、SSH key 和用户密码。如果重复初始化可能导致冲突。 - 腾讯云 CVM:类似,注意
cloud-init和网络配置脚本。腾讯云的镜像有时自带了一些优化脚本,手动修改时需小心覆盖。 - 华为云 ECS:推荐安装
huawei-cloud-tools,以便更好地集成元数据服务(Metadata Service),获取实例信息。
9. 备份与快照
- 不要只依赖文件系统备份:使用云厂商的快照(Snapshot)功能。定期创建系统盘和数据盘的快照,保留至少 3-5 个历史快照。
- 测试恢复:每季度尝试从一个快照恢复一台测试机,验证备份有效性。这是最后防线。
总结 checklist:
- [ ] 确认使用 LTS 版本(22.04/24.04)。
- [ ] 锁定内核版本,避免 HWE 自动更新破坏驱动。
- [ ] 配置国内 NTP 时间源。
- [ ] 启用 UFW 防火墙,配合云安全组。
- [ ] 禁用 root 远程登录,启用密钥认证。
- [ ] 配置 logrotate,防止日志占满磁盘。
- [ ] 设置定期快照备份策略。
- [ ] 清理不必要的服务和自启动项。
Ubuntu 是一个优秀的操作系统,但其“开箱即用”的特性在某些场景下会掩盖潜在风险。生产环境的精髓在于可控、可预测、可恢复。做好上述细节,你的 Ubuntu 服务器就能稳稳当当地承载业务流量。
云技术博客