Spring Boot:项目服务器完整部署教程(零基础可直接实操)

本地写好的 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/springboot

3.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 java

5.2 停止项目

先查询 PID,再 kill 进程:

复制代码
# 优雅停止
kill -9 进程PID

5.3 重启项目(部署更新必用)

1、停止旧进程

2、上传新 Jar 包

3、重新执行后台启动命令

5.4 查看运行日志

复制代码
# 实时查看日志
tail -f log.out

六、配置服务器开机自启(项目永久在线)

实现服务器重启后,项目自动启动,无需手动操作。

6.1 创建系统服务文件

复制代码
vim /etc/systemd/system/springboot.service

6.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.target

6.3 生效自启配置

复制代码
# 重新加载配置
systemctl daemon-reload

# 设置开机自启
systemctl enable springboot

# 启动项目
systemctl start springboot

# 查看状态
systemctl status springboot

6.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 项目最主流的线上部署方式。

相关推荐
李昊哲小课1 小时前
咖啡工坊 · FastAPI 22 章教程合集
服务器·人工智能·python·fastapi
十八岁牛爷爷1 小时前
Linux 进程与进程状态・三层级深度解析
linux·运维·服务器
卷无止境2 小时前
Python 异常处理:从入门到工程实践
后端·python
AINative软件工程2 小时前
LLM 应用的熔断降级工程实践:Circuit Breaker 不只是重试的升级版
后端·llm·ai编程
不会就选b2 小时前
linux之进程管理(二)--替换
linux·运维·服务器
程序员爱钓鱼2 小时前
Go 开发环境安装(Windows、macOS、Linux)
后端·面试·go
倔强的石头1062 小时前
【Linux指南】动静态库系列(二):从源码复用到目标文件复用:为什么需要把 .o 打包成库
linux·运维·服务器
程序员爱钓鱼2 小时前
Rust String 与 &str 详解:字符串所有权、借用与转换
前端·后端·rust
万亿少女的梦1682 小时前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐