本地写好的 Spring Boot 项目,想要让外网所有人访问、线上运行,就需要部署到云服务器(阿里云/腾讯云/华为云等)。Spring Boot 内置 Tomcat,无需单独安装 Tomcat,打包成 Jar 包即可直接运行,是目前最主流、最简单的部署方式。
本文讲解最通用、企业最常用的 Jar 包部署方案,包含:环境安装、打包、上传、运行、后台常驻、开机自启、域名访问、故障排查,全程可直接复刻操作。
一、部署前置准备(服务器必备环境)
主流服务器系统:CentOS 7 / CentOS 8 / Ubuntu,本文以 CentOS 为例。
1.1 安装 JDK(必须)
Spring Boot 项目运行依赖 JDK,推荐 JDK8 / JDK17(适配绝大多数项目)。
CentOS 一键安装命令:
yum install -y java-1.8.0-openjdk-devel安装完成验证:
java -version输出版本号即安装成功。
1.2 服务器放行端口(关键!外网访问必备)
Spring Boot 默认端口 8080,必须在服务器安全组放行端口,否则外网打不开项目。
阿里云/腾讯云后台 → 安全组 → 入站规则
放行端口:8080、80、443(后续域名、HTTPS 使用)
协议:TCP,授权所有IP(0.0.0.0/0)
同时关闭服务器防火墙(或开放端口):
# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld二、本地项目打包(生成可运行 Jar 包)
2.1 确认配置
Spring Boot 项目默认打包方式为 Jar,无需修改配置,保证 pom.xml 中打包方式正确:
<packaging>jar</packaging>2.2 IDEA 一键打包(最简单)
1、打开 IDEA 右侧Maven面板
2、找到当前项目 → Lifecycle
3、依次执行:clean → package
打包成功后,在项目target目录下生成xxx.jar文件,这就是部署包。
命名建议:demo-1.0.jar,简洁无中文、无空格。
或者通过命令
clean:删除target/目录(清空旧的构建产物)
package:编译 → 测试 → 打包成 JAR
-DskipTests:跳过测试(项目没有测试代码,加上这个更快)
// 编译 + 打包
mvn clean package -DskipTests
三、上传 Jar 包到服务器
使用工具:Xshell、FinalShell、WinSCP 均可,推荐 FinalShell(可视化上传)。
3.1 新建部署目录
服务器新建专门存放项目的文件夹,统一管理:
mkdir -p /home/springboot cd /home/springboot3.2 上传文件
将本地 target 下的xxx.jar直接拖拽上传至/home/springboot目录。
四、运行 Spring Boot 项目(两种方式)
4.1 临时运行(测试用,关闭终端项目停止)
// 直接启动 SpringBoot 内置 Tomcat,加载项目、运行端口、启动所有功能。 java -jar demo-1.0.jar看到Started XxxApplication in xxx seconds即启动成功。
缺点:关闭 Xshell 终端,项目直接停止,仅适合测试。
4.2 正式运行(后台常驻,企业生产用)
使用 nohup 让项目后台运行,退出终端不关闭,且自动输出日志:
nohup java -jar demo-1.0.jar > log.out 2>&1命令解释:
nohup:后台运行,忽略终端关闭信号
> log.out:将日志输出到 log.out 文件
2>&1:错误日志统一输出
&:后台常驻进程
五、项目启停、重启常用命令
5.1 查看项目运行状态
# 查看Java进程 ps -ef | grep java5.2 停止项目
先查询 PID,再 kill 进程:
# 优雅停止 kill -9 进程PID5.3 重启项目(部署更新必用)
1、停止旧进程
2、上传新 Jar 包
3、重新执行后台启动命令
5.4 查看运行日志
# 实时查看日志 tail -f log.out六、配置服务器开机自启(项目永久在线)
实现服务器重启后,项目自动启动,无需手动操作。
6.1 创建系统服务文件
vim /etc/systemd/system/springboot.service6.2 写入以下配置(直接复制修改Jar包名)
[Unit] Description=SpringBoot Project After=network.target [Service] Type=simple # 此处替换为你的服务器Jar包绝对路径 ExecStart=/usr/bin/java -jar /home/springboot/demo-1.0.jar Restart=always [Install] WantedBy=multi-user.target6.3 生效自启配置
# 重新加载配置 systemctl daemon-reload # 设置开机自启 systemctl enable springboot # 启动项目 systemctl start springboot # 查看状态 systemctl status springboot6.4 自启常用命令
# 停止项目 systemctl stop springboot # 重启项目 systemctl restart springboot # 取消开机自启 systemctl disable springboot七、外网访问项目
7.1 IP+端口访问
启动成功后,直接通过服务器公网IP+8080端口访问:
示例:
http://120.xx.xx.xx:8080
7.2 域名访问(可选)
1、购买域名,完成备案
2、域名解析:A记录 → 指向服务器公网IP
3、服务器安装 Nginx 反向代理,实现 80 端口直接访问(无需带8080)
Nginx 就是 SpringBoot 项目的外网门面:负责接客、安全防护、简化访问、分担压力,让后端程序只专注处理业务逻辑。
部署方式 | 访问地址 | 安全性 | 企业使用场景 |
|---|---|---|---|
纯 Jar 裸跑(无 Nginx) | 必须带 8080 端口 | 低(后端直接暴露公网) | 本地测试、临时演示 |
Nginx + Jar 部署 | 无需端口,域名直接访问 | 高(隐藏后端服务) | 正式线上生产环境 |
八、常见部署报错排查
报错现象 | 核心原因 | 解决方案 |
|---|---|---|
外网打不开项目 | 安全组/防火墙未放行8080端口 | 云服务器后台放行端口,关闭防火墙 |
端口被占用 | 8080端口已有进程运行 | kill占用进程,或修改项目端口 |
启动瞬间闪退 | JDK未安装、Jar包损坏、配置错误 | 检查java版本,重新打包上传,查看日志 |
数据库连接失败 | 本地数据库地址未改服务器地址 | application.yml 改为服务器数据库IP |
九、部署总结(企业标准流程)
1、服务器安装 JDK8,放行对应端口;
2、本地 Maven 打包生成 Jar 包;
3、上传至服务器指定目录,使用 nohup 后台运行;
4、配置 systemd 开机自启,保证项目稳定在线;
5、通过公网IP+端口外网访问,搭配Nginx实现域名访问。
该方案稳定、零成本、无容器依赖,是中小企业 Spring Boot 项目最主流的线上部署方式。