当前位置: 首页 > news >正文

宝塔面板部署 Spring Boot 项目全流程

宝塔面板部署 Spring Boot 项目全流程

一篇面向 Java 开发者的保姆级部署教程。以「智享社区」为例,覆盖文件上传 → 数据库导入 → 项目启动 → 接口验证的全过程。读完你也能把自己的 Spring Boot 项目部署到服务器上。


适用读者

  • 有 Spring Boot 项目要上线,但没用过宝塔面板
  • 习惯本地开发,第一次接触 Linux 服务器部署
  • 需要一份截图完整、照做即成的参考文档

你的项目需要准备什么

开始之前,确保本地已有以下文件(不管项目叫什么,这些是通用的):

文件作用从哪里来
xxx.jarSpring Boot 可执行包mvn package或 Gradle build
application.yml生产环境配置从项目src/main/resources/复制并修改
init.sql建库建表脚本本地导出或手写
fix.sql(可选)上线后补字段/修表开发迭代中积累的 ALTER 语句

本文示例:以「智享社区 (IntelliCommunity)」后端为例,实际命令中的路径、端口、库名请换成你自己的。

本示例项目的环境:

组件版本端口
Spring Boot3.2.xxxxx
MySQL8.0+xxxx
Redis7.xxxxx
JDK17+-

一、上传文件到服务器

宝塔内置了文件管理器,无需额外工具。

操作:宝塔左侧菜单 →文件→ 进入/www/wwwroot/,新建一个以项目命名的目录(如my-project),把上述 3~4 个文件上传进去。

最终目录结构:

/www/wwwroot/<你的项目>/ ├── your-app.jar # Spring Boot JAR ├── application.yml # 生产配置 ├── init.sql # 初始化SQL └── fix.sql # 增量修复SQL(可选)

📸截图1


二、数据库部署

2.1 创建数据库

宝塔左侧 →数据库添加数据库

注意三点:

  • 数据库名application.ymlspring.datasource.url里的库名一致
  • 字符集utf8mb4(支持 emoji)
  • 密码application.yml中的密码一致

📸截图2

2.2 导入初始化 SQL

两种方式都可以:

方式 A:phpMyAdmin(推荐,免命令)

数据库列表 → 点击目标库右边的phpMyAdmin→ 顶部「导入」→ 选择服务器上的init.sql→ 执行。

方式 B:命令行

mysql-uroot-p<数据库名></www/wwwroot/<你的项目>/init.sql

📸截图3

导入成功后,左侧会列出项目中所有的表。核对表数量是否与预期一致。

📸截图4:

2.3 执行增量 SQL(如果有)

开发过程中后加的表字段(deleted 逻辑删除、update_time 等),通过 fix.sql 补齐:

phpMyAdmin → 选中数据库 → 顶部SQL标签 → 粘贴fix.sql全部内容 → 点击「执行」。

📸截图5:SQL 执行成功提示(绿色 ✅)


三、安装 Java 运行环境

3.1 安装插件

宝塔 →软件商店→ 搜索「Java」→ 安装Java 项目一键部署插件。

📸截图6:软件商店中 Java 插件已安装

3.2 确认 JDK 版本

Spring Boot 3.x 要求 JDK 17+。SSH 执行:

java-version# 应输出:openjdk version "17.0.x" 或更高

如果不是 17,在软件商店中切换版本,或手动安装:

# CentOS / Rockyyuminstall-yjava-17-openjdk java-17-openjdk-devel# Ubuntu / Debianaptinstall-yopenjdk-17-jdk

四、部署 Spring Boot 项目

4.1 检查生产配置

application.yml中的数据库连接、Redis 地址、端口等需要与服务器实际情况对齐。重点检查:

server:port:<你的端口># 不要和已有服务冲突spring:datasource:url:jdbc:mysql://<服务器IP>:<MySQL端口>/<数据库名>?...# 库名、端口、密码username:<数据库用户名>password:"<数据库密码>"redis:host:<服务器IP>port:XXXXpassword:<Redis密码,没有就留空>

4.2 宝塔添加 Java 项目

宝塔 →网站Java 项目添加 Java 项目

配置项说明本文示例
项目名称任意,建议和项目一致智享社区
项目路径JAR 所在目录/www/wwwroot/intellicommunity
JDK 版本建议 JDK 17+JDK 17
项目端口与 yml 中server.port一致xxxx
启动命令指定外部配置文件java -jar xxx.jar --spring.config.location=/www/wwwroot/项目/application.yml
运行用户root 即可root

启动命令中--spring.config.location指定了外部配置文件路径,这样可以在不重新打包的情况下修改数据库密码等配置。

📸截图7

点击确定 → 点击启动

4.3 放行端口

两步都要做,缺一不可:

  1. 宝塔防火墙:左侧 →安全→ 添加端口规则(TCP,项目端口)
  2. 云厂商安全组(阿里云/腾讯云等):控制台 → 安全组 → 入方向 → 放行 TCP 项目端口

📸截图9


五、验证部署

5.1 本地 curl 测试

SSH 到服务器执行:

curlhttp://localhost:<端口>/

Spring Boot 默认返回 404 也算正常(说明服务起来了)。更靠谱的做法是调一个实际接口:

curl-XPOST http://localhost:<端口>/api/auth/login\-H"Content-Type: application/json"\-d'{"username":"admin","password":"123456"}'

5.2 外网接口测试

用 Postman、ApiPost 等工具从本地发起请求:

POST http://<服务器公网IP>:<端口>/api/auth/login Content-Type: application/json {"username":"admin","password":"123456"}

📸截图10

5.3 查看运行日志

宝塔 → Java 项目 → 点击项目 →日志。看到Started XXXApplication in X.XXX seconds就说明启动成功。

日志页面也支持实时滚动,排查问题时非常有用。

📸截图11


六、常见问题排查

现象可能原因解决
启动立即崩溃JDK 版本太低Spring Boot 3.x 需要 JDK 17+,升级
Communications link failureMySQL 未启动宝塔首页启动 MySQL,或systemctl start mysqld
Access denied for user数据库密码/用户名不对检查application.yml与宝塔数据库页是否一致
Table 'xxx' doesn't exist未导入 init.sqlphpMyAdmin 重新导入
Redis connection refusedRedis 未启动宝塔软件商店启动 Redis
外网无法访问端口未放行宝塔安全 + 云厂商安全组两层都要放
端口被占用和已有服务冲突application.ymlserver.port
上传文件报 413Nginx 上传大小限制宝塔 Nginx 配置中调大client_max_body_size

七、总结

整个过程就四步,换个项目也一样:

📂 传文件 → 🗄️ 导数据库 → ☕ 启服务 → 🔥 放端口

关键原则:

  1. 配置文件要和生产环境对齐——库名、密码、端口三处一致
  2. 端口放行记两层——宝塔防火墙 + 云安全组
  3. 用外部配置文件——--spring.config.location让你改配置不用重新打包
  4. 不确定就看日志——宝塔 Java 项目的日志面板是排查第一现场

本文截图统一放在screenshots/目录下,按编号命名即可对照。

http://www.jsqmd.com/news/1099882/

相关文章:

  • Python爬虫经典案例018:爬虫性能优化与调优——从慢到快的全面优化指南
  • VisualCppRedist AIO:终极Windows运行库一体化智能管理解决方案深度解析
  • 【open harmony/harmonyos】HarmonyOS 应用中的数据模型分层:以星图节点 Store 为例
  • 2026年论文查重免费网站靠谱吗?这5个平台实测对比
  • 基于STM32单片机智能窗帘窗户光敏定时遥控温湿度语音物联网设计1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 09502黄大年茶思屋榜文95期 第2题 高性能、适用于NPU硬件的Training-free大模型剪枝算法
  • openGauss 还原成功了,用户却喊“数据库里啥也没有“:一个 search_path 坑实录
  • 国家标准起草单位是什么?有什么价值?企业如何申请参与国标制定
  • Claude Code 深度实战指南:从环境配置到 Agent 自动化进阶
  • 开源AI绘画工作台infinite-canvas:本地部署与高效工作流构建指南
  • SIM 卡克隆工具指南:安全移动 SIM 卡数据
  • 上门按摩APP小程序开发公司,获客新思路:酒店渠道为什么值得做
  • 如何在一部手机上实现工作与生活数据的完全隔离?
  • 如何快速构建轻量级多模态AI:3步实现模型融合的终极指南
  • 一键提取爆款短视频文案,批量采集竞品素材
  • Linux生产环境硬盘挂载:为何必须用UUID替代设备名?
  • API受限下15种LLM幻觉抑制创新方法
  • 如何利用多人协作在线表格提升团队效率?告别协作混乱与数据勒索
  • Unreal Engine 5.7 C++ 完整说明(C++ 标准、内置库、第三方库、内存 GC)
  • 微信好友上限是多少?为什么不建议好友加满?
  • VS Code十六进制编辑器终极指南:从二进制分析到专业调试
  • 课堂时间总不够用?这5个环节压缩技巧让教学节奏更从容
  • 主流AI热词总结
  • Gum:让 Shell 脚本拥有交互界面
  • Claude Opus 4.8快速模式集成GitHub Copilot:AI编码响应速度实测与提效指南
  • 2026最新智慧园区厂商挑选指南 国内哪家服务专业更靠谱?
  • 制造企业数字化转型中AI智能体的角色是什么
  • 汇编指令补充
  • 基于STM32单片机智能手环心率血氧体温GPS定位跌倒计步器系统设计1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 哈夫曼树的构造、编码生成与带权路径长度计算——基于C语言的实验实现与分析 P12114068王勇豪