直接给结论:首选 Linux 发行版,推荐 Ubuntu 22.04 LTS 或 Debian 12。
除非你有极特殊的理由(比如团队全员只懂 CentOS 且代码强依赖旧版 glibc),否则不要选 CentOS。CentOS 8 已停止维护,CentOS Stream 的定位也不适合生产环境的稳定性需求。Windows Server 镜像仅在你必须运行 .NET Framework 老项目或特定 Windows 独占软件时才考虑,对于 Spring Boot 这种跨语言框架,Linux 在性能、资源占用和运维成本上都是碾压级的优势。
下面从实战角度拆解为什么这么选,以及具体的坑怎么避。
1. 为什么是 Ubuntu/Debian?
- 社区生态最强:Spring Boot 依赖的 Java 环境、Nginx、Docker、Redis 等中间件,在 Ubuntu/Debian 上的文档最全,报错解决方案最多。你在 StackOverflow 或 GitHub Issues 里搜到的答案,大部分是基于 Debian 系的命令。
- 软件包更新及时:Ubuntu 22.04 LTS 自带较新的内核和库文件,兼容性更好。Debian 12 则更追求稳定,适合不喜欢频繁升级的系统管理员。
- 阿里云官方优化:阿里云对 Ubuntu 的驱动支持(如 ENI 网卡、云盘 IO 优化)做得非常成熟,初始化脚本也针对这些系统做了适配。
2. 具体选型建议
| 系统镜像 | 适用场景 | 推荐理由 |
|---|---|---|
| Ubuntu 22.04 LTS | 绝大多数个人开发者、中小企业、新项目 | 平衡了新特性和长期支持(5年)。界面友好,教程多,遇到问题容易解决。 |
| Debian 12 | 追求极致稳定、资源敏感型应用 | 比 Ubuntu 更轻量,后台服务更少,内存占用略低。适合小配置服务器跑高并发。 |
| Alibaba Cloud Linux 3 | 大型互联网企业、对内核深度调优有需求 | 阿里自研,基于 CentOS/RHEL 体系但进行了深度优化,启动速度更快,网络栈更强。如果你是大厂运维团队,这是最佳选择,但对新手有一定门槛。 |
| CentOS 7/8 | 不推荐 | 生命周期结束,安全补丁停止,新软件源难找。除非维护遗留系统,否则新建项目别碰。 |
3. 部署前的关键检查清单
选好镜像只是第一步,真正影响上线体验的是以下几点:
A. Java 版本匹配
Spring Boot 3.x 要求 Java 17+;Spring Boot 2.x 支持 Java 8-11。
- 不要手动编译 JDK:直接用
apt install openjdk-17-jdk安装即可。阿里云镜像通常预装基础工具,但建议登录后先执行sudo apt update && sudo apt upgrade -y确保系统包最新。 - 注意时区:很多线上 Bug 源于时区不一致。登录服务器后,检查
timedatectl,确保时区是Asia/Shanghai。
B. 安全组配置
阿里云默认只开放 SSH (22) 端口。你需要手动添加:
- TCP 80/443:如果前端通过 Nginx 反向X_X访问。
- TCP 你的应用端口:如果直接暴露 Jar 包端口(不推荐,但常见于测试环境)。
- ICMP:允许 ping,方便排查网络连通性。
C. 防火墙策略
- Ubuntu/Debian 默认使用
ufw或无防火墙。建议启用ufw并设置默认拒绝入站,只放行必要端口。 - 或者直接使用阿里云安全组作为第一道防线,服务器内部关闭防火墙(
systemctl stop firewalld或ufw disable),减少复杂度。两者选一即可,避免规则冲突。
D. 部署方式选择
- 简单粗暴:
nohup java -jar app.jar &。适合临时测试,不适合生产。 - 标准做法:使用 Systemd 管理进程。创建
/etc/systemd/system/myapp.service文件,配置自动重启、日志输出、用户权限。这样服务崩溃可自动拉起,开机自启。 - 进阶做法:使用 Docker。镜像隔离,环境一致,迁移方便。阿里云容器镜像服务(ACR)配合 ECS 使用,是目前最主流的生产级方案。
4. 避坑指南
- 不要用 root 直接运行应用:创建一个普通用户(如
appuser),用该用户运行 Java 进程,提高安全性。 - 磁盘空间监控:阿里云 EBS 云盘默认不会自动扩容。定期清理
/var/log下的日志,或使用logrotate轮转日志。 - 备份快照:在部署前,对系统盘和数据盘打一个自定义镜像快照。一旦部署失败,一键回滚,省时省力。
- JVM 参数调优:根据服务器内存大小设置
-Xms和-Xmx。例如,2G 内存的服务器,JVM 堆内存设为 1G-1.5G,留出足够内存给操作系统和其他进程。
总结
- 新手/通用场景:选 Ubuntu 22.04 LTS。
- 追求稳定/轻量:选 Debian 12。
- 大厂/高性能需求:选 Alibaba Cloud Linux 3。
- 绝对避开:CentOS 7/8。
部署完成后,务必进行压力测试和安全扫描,再正式对外提供服务。
云计算HECS