在云服务器(如阿里云、腾讯云、华为云、AWS、Azure 等)上部署 Spring Boot 项目时,推荐选择预装 OpenJDK(非 Oracle JDK)的官方/主流 Linux 镜像,并明确指定与你的 Spring Boot 版本兼容的 Java 版本。以下是具体建议和最佳实践:
✅ 首选推荐:
Ubuntu 22.04 LTS / 24.04 LTS 或 CentOS Stream 9 / Rocky Linux 9 / AlmaLinux 9
预装 OpenJDK 17(LTS)或 OpenJDK 21(LTS)
✅ 为什么推荐 Java 17 或 21?
| Spring Boot 版本 | 推荐最低 Java 版本 | 官方支持的 Java LTS 版本 | 说明 |
|---|---|---|---|
| Spring Boot 3.0+ | Java 17+(强制要求) | ✅ Java 17(LTS)、Java 21(LTS) | SB3 基于 Jakarta EE 9+,不支持 Java 8/11 运行时 |
| Spring Boot 2.7.x(EOL) | Java 8–17(推荐 17) | ✅ Java 17(最后支持的 LTS) | 已停止维护,不建议新项目使用 |
| Spring Boot 2.6.x 及更早 | Java 8+(但已过时) | ❌ Java 8/11 不再推荐(安全 & 性能风险) | 缺乏长期安全更新,且无法利用现代 JVM 优化 |
🔔 重要提醒:Spring Boot 3.x 完全放弃对 Java 8/11 的支持,若强行用低版本 JDK 启动会直接报错(如
Unsupported class file major version)。
🐧 推荐镜像选择(按云厂商举例):
| 云厂商 | 推荐镜像(控制台中搜索) | 说明 |
|---|---|---|
| 阿里云 ECS | Ubuntu 22.04 64位 或 Alibaba Cloud Linux 3(自带 OpenJDK 17) |
Alibaba Cloud Linux 3 默认预装 OpenJDK 17,深度优化,强烈推荐 |
| 腾讯云 CVM | Ubuntu Server 22.04 LTS 或 TencentOS Server 3.2(含 OpenJDK 17) |
TencentOS 3.x 基于 CentOS Stream,稳定且预装 JDK 17 |
| 华为云 ECS | EulerOS 22.03 LTS 或 Ubuntu 22.04 |
EulerOS 22.03 自带 OpenJDK 17,国产信创友好 |
| AWS EC2 | Amazon Linux 2023(默认 OpenJDK 17)或 Ubuntu 22.04 |
AL2023 是新一代默认镜像,安全更新及时 |
| 通用建议 | 避免选择“预装 Java 8”或“CentOS 7”镜像 | CentOS 7 已 EOL(2024-06),OpenJDK 8 无安全更新,存在严重风险 |
⚙️ 部署前自查清单:
- ✅ 查看
pom.xml或build.gradle中的spring-boot-starter-parent版本 → 确定所需 JDK<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.7</version> <!-- → 要求 JDK 17+ --> </parent> - ✅ 登录服务器后验证 JDK:
java -version # 应输出类似:openjdk version "17.0.10" ... javac -version echo $JAVA_HOME # 建议设为 /usr/lib/jvm/java-17-openjdk-amd64(Ubuntu)或 /usr/lib/jvm/java-17-openjdk(RHEL系) - ✅ 若镜像未预装合适 JDK,一键安装(以 Ubuntu 为例):
sudo apt update && sudo apt install -y openjdk-17-jdk sudo update-alternatives --config java # 设为默认
🚫 不推荐的镜像(避坑):
- ❌ “CentOS 7 + Java 8” 镜像(EOL、无安全补丁、不兼容 SB3)
- ❌ “Windows Server + JDK”(Spring Boot 生产环境强烈建议 Linux,资源占用低、稳定性高、运维成熟)
- ❌ “Oracle JDK 预装镜像”(需商业授权,存在法律风险;OpenJDK 完全免费且功能等价)
✅ Bonus:生产环境增强建议
- 使用
systemd托管 Spring Boot 应用(而非裸java -jar),实现开机自启、日志管理、崩溃重启; - 通过
application-prod.yml配置外置化参数(数据库、Redis 地址等); - 添加 JVM 参数提升稳定性(示例):
java -Xms512m -Xmx1024m -XX:+UseG1GC -Dfile.encoding=UTF-8 -jar app.jar
如你告知具体使用的 云厂商 + Spring Boot 版本号 + 是否已有镜像名称,我可以为你定制化推荐最匹配的镜像 ID 或安装命令 👇
需要我帮你生成一份 systemd 服务配置模板或 JVM 优化参数脚本吗?
云服务器