在轻量服务器(如阿里云、腾讯云等提供的轻量应用服务器)上部署 Spring Boot 项目时,选择合适的镜像可以显著简化部署流程。以下是推荐的几种镜像类型及其适用场景:
✅ 推荐首选:Ubuntu / CentOS + 手动安装 JDK + 运行 JAR 包
这是最常见、最灵活且便于控制的方式。
镜像选择:
- Ubuntu Server 20.04 LTS 或 22.04 LTS
- CentOS 7 或 CentOS Stream 8/9
优点:
- 系统干净,资源占用低。
- 可自由安装指定版本的 JDK(如 OpenJDK 11 / 17,Spring Boot 推荐版本)。
- 易于使用
systemd管理 Spring Boot 应用(作为服务运行)。 - 支持使用 Nginx 做反向X_X、防火墙配置等。
部署步骤简述:
- 登录服务器,更新系统:
sudo apt update && sudo apt upgrade -y # Ubuntu sudo yum update -y # CentOS - 安装 OpenJDK(以 OpenJDK 17 为例):
sudo apt install openjdk-17-jdk -y # Ubuntu sudo yum install java-17-openjdk-devel -y # CentOS - 上传你的 Spring Boot 打包好的
app.jar文件(可通过scp或 FTP)。 - 启动应用:
nohup java -jar app.jar --server.port=8080 > app.log 2>&1 & - (可选)配置为系统服务,实现开机自启。
✅ 替代方案:Docker 镜像(适合熟悉 Docker 的用户)
如果你希望更方便地管理环境和依赖,可以选择支持 Docker 的镜像。
镜像选择:
- Ubuntu with Docker(部分云厂商提供预装 Docker 的镜像)
- 或普通 Ubuntu/CentOS,自行安装 Docker
步骤简述:
- 安装 Docker:
curl -fsSL https://get.docker.com | bash sudo usermod -aG docker $USER - 编写
Dockerfile:FROM openjdk:17-jre-slim COPY app.jar /app.jar CMD ["java", "-jar", "/app.jar"] - 构建并运行:
docker build -t my-spring-app . docker run -d -p 8080:8080 my-spring-app
优点:
- 环境隔离,易于迁移。
- 可结合
docker-compose管理数据库、Redis 等依赖。
❌ 不推荐:LAMP / LNMP 类镜像
虽然有些轻量服务器提供“LNMP”、“WordPress”等一键镜像,但这些:
- 预装了不必要的服务(如 Apache、MySQL),浪费资源。
- 不利于 Java 应用部署。
- 安全性可能较低(开放端口多)。
✅ 最佳实践建议:
| 项目 | 推荐 |
|---|---|
| 操作系统镜像 | Ubuntu 22.04 LTS(软件源丰富,社区支持好) |
| JDK 版本 | OpenJDK 11 或 17(LTS,Spring Boot 官方推荐) |
| 部署方式 | JAR 包 + systemd 服务 或 Docker |
| 外部访问 | 使用 Nginx 反向X_X + 配置域名和 HTTPS |
示例:将 Spring Boot 应用注册为系统服务(Ubuntu)
创建服务文件:
sudo nano /etc/systemd/system/springboot-app.service
内容:
[Unit]
Description=My Spring Boot Application
After=network.target
[Service]
Type=simple
User=ubuntu
ExecStart=/usr/bin/java -jar /home/ubuntu/app.jar
Restart=always
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reexec
sudo systemctl enable springboot-app
sudo systemctl start springboot-app
总结
在轻量服务器上运行 Spring Boot 项目,推荐选择 Ubuntu 22.04 LTS 或 CentOS 7+ 镜像,然后手动安装 JDK 并运行 JAR 包,或使用 Docker 部署。这种方式简单、可控、高效,适合生产环境。
如有 CI/CD 需求,可进一步结合 Jenkins、GitHub Actions 自动部署。
云小栈