Spring Boot云服务器部署全流程实战
Spring Boot云服务器部署全流程指南:从开发到上线
在互联网技术持续迭代的当下,使用云服务器部署Spring Boot应用已成为主流方案。本文将结合技术实践,系统梳理全链路部署流程,帮助开发者掌握关键操作节点。
一、环境准备规划
1. 基础环境要求
部署Spring Boot应用前需配置三类核心环境:
- JDK版本:根据项目gradle.properties文件确认OpenJDK版本(建议17+)
- Maven安装:使用
mvn -v
验证版本兼容性,推荐3.8+版本 - 云服务器配置:内存需预留项目运行所需,建议不低于4GB;系统环境优先选择Ubuntu 22.04 LTS
2. 安全性配置
- 关闭服务器端80端口外发流量
- 配置CSRF令牌限制访问源
- 设置Nginx限流规则防暴力破解
二、构建可部署包
1. 项目打包规范
在pom.xml中通过以下配置生成可执行包:
org.springframework.boot
spring-boot-maven-plugin
repackage
使用mvn clean package -DskipTests
命令生成无依赖合并的独立JAR包
2. 包体积优化技巧
- 移除开发依赖
:spring-boot-starter-tomcat
- 使用ProGuard进行代码压缩
- 通过
--repackage
参数实现增量构建
三、服务器部署配置
1. Java运行环境部署
执行以下命令完成JDK安装:
wget https://download.java.net/openjdk/jdk17/ri/openjdk-17_+35/openjdk-17_35-linux-x64.tar.gz
tar -xzvf openjdk-17_35-linux-x64.tar.gz -C /usr/local
echo 'export JAVA_HOME=/usr/local/jdk' >> ~/.bashrc
2. 进程管理方案
使用Systemd代替nohup实现进程守护:
[Unit]
Description=springboot service
After=network.target
[Service]
User=ubuntu
ExecStart=/opt/app/myapp.jar
SuccessExitStatus=143
Restart=on-failure
[Install]
WantedBy=multi-user.target
3. 日志管理策略
- 使用logrotate进行日志分割
- 配置GELF协议对接ELK日志分析系统
- 在application.yml中设置日志采样级别:
logging: level: root: info com.example: debug file: name: /var/log/app.log max-size: 50MB
四、高可用架构设计
1. 负载均衡方案
通过Nginx配置UPSTREAM实现多节点调度:
upstream bakend {
zone backend 64k;
server 10.0.0.1:8080 weight=5;
server 10.0.0.2:8080 weight=3 backup;
fair;
}
2. 蓝绿部署实践
采用二进制替换方式实现无损更新:
- 将原PID写入/min/undeploy目录
- 新版本通过
screen -dmS app java -jar new.jar
启动 - 使用Consul进行服务注册确认
- 渐进式切换流量
五、常见问题解决方案
1. 端口冲突处理
系统启动时提示Address already in use
时:
lsof -i :8080
kill -9
2. 内存溢出诊断
出现OutOfMemoryError:Java heap space
时:
- 使用
-Xms512m -Xmx2g
指定内存参数 - 排查循环引用导致的内存泄漏
- 增加G1收集器参数:
-XX:+UseG1GC
3. 连接超时解决
数据库连接池耗尽时:
spring.datasource.hikari.maximumPoolSize=15
spring.datasource.hikari.idleTimeout=30000
六、部署后验证流程
1. 基本功能验证
使用curl命令执行健康检查:
curl -I http://:/actuator/health
2. 性能基准测试
通过wrk进行压测评估:
wrk -t4 -c100 -d30s http:///api/v1/data
3. 安全加固检查
- 审计OSS跨域配置
- 验证JWT令牌强度
- 关闭Swagger等开发接口
七、运维最佳实践
- 定期自动备份:结合crontab和rsync实现日志归档
- 构建监控体系:Prometheus+Granfana实现内存/CPU可视化
- 灰度发布策略:通过分支路由逐步验证新版本
通过系统化部署流程和深度优化,在云环境可实现Spring Boot应用99.99%的可用性。建议根据业务特点选择Jenkins或GitLab CI进行持续集成,最终构建DevOps标准化运维体系。