1. 项目背景与核心价值
在当前的Java生态中,SpringBoot已经成为构建企业级应用的事实标准框架。而Ubuntu作为最流行的Linux发行版之一,其稳定性和易用性使其成为生产环境部署的首选。将SpringBoot应用部署到Ubuntu服务器,是每个Java开发者必须掌握的实战技能。
我经历过从手动部署到自动化运维的完整演进过程,发现很多团队在部署环节存在以下典型问题:
- 环境配置混乱,依赖项管理不规范
- 部署流程缺乏标准化,每次发布都像开盲盒
- 日志管理和监控体系缺失,问题排查效率低
本文将分享一套经过生产验证的标准化部署方案,涵盖从环境准备到服务监控的全流程。不同于官方文档的简略说明,我会重点讲解实际场景中的决策逻辑和避坑经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 服务器初始配置
新装Ubuntu服务器建议选择LTS版本(如22.04),执行以下基础优化:
bash复制# 更新软件源索引
sudo apt update && sudo apt upgrade -y
# 安装常用工具包
sudo apt install -y vim git htop net-tools
# 时区配置(以上海为例)
sudo timedatectl set-timezone Asia/Shanghai
# 创建专用部署用户
sudo adduser deployer
sudo usermod -aG sudo deployer
关键细节:生产环境务必避免直接使用root账户,通过sudo权限管理更安全。deployer用户后续将用于所有部署操作。
2.2 Java环境安装
推荐使用SDKMAN管理多版本Java环境:
bash复制# 安装SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
# 安装指定JDK版本(以JDK17为例)
sdk install java 17.0.6-tem
# 验证安装
java -version
版本选择建议:
- 新项目直接采用JDK17(LTS版本)
- 历史项目可考虑JDK11(另一个LTS版本)
- 生产环境避免使用非LTS版本
3. 应用打包与传输
3.1 SpringBoot打包优化
标准的Maven打包命令:
bash复制mvn clean package -DskipTests
生产环境打包建议:
- 排除开发工具依赖(如devtools)
- 明确指定打包版本号
- 分离配置文件(使用外部化配置)
xml复制<!-- pom.xml示例配置 -->
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludeDevtools>true</excludeDevtools>
</configuration>
</plugin>
</plugins>
</build>
3.2 安全传输方案
推荐使用rsync进行增量部署:
bash复制# 本地到服务器的同步命令
rsync -avz -e "ssh -p 22" target/your-app.jar deployer@server_ip:/opt/apps/
安全建议:
- 使用SS
