java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot项目部署方式

SpringBoot项目部署的四种方式详解

作者:青衫码上行

本文详细介绍了SpringBoot项目的四种部署方式,包括原始命令部署、宝塔Linux可视化部署、Docker容器化部署和Docker容器平台托管,每种方式都有其特点和适用场景,需要的朋友可以参考下

Spring Boot项目四种部署方式

项目开发完成后,部署是实现代码落地可用的关键环节,有以下四种方式,其中前三种详细讲解。
原始命令部署
宝塔Linux可视化部署
Docker容器化部署
Docker容器平台托管

一、部署前通用准备

无论选择哪种部署方式,以下基础准备工作必不可少:

1.1 服务器与本地环境

服务器:我使用的是腾讯云轻量应用服务器(2核2G+5M带宽),操作系统选择CentOS 7/8或OpenCloudOS。

本地环境:项目无编译错误,可通过mvn clean package成功打包;安装远程连接工具(Xshell / FinalShell)并连接,我这里使用的是Xshell。(使用 free -h可以查看你的服务器信息)

其中,连接的账户和密码在此处查看【不管是不是宝塔Linux部署方式,都是在这】:

核心信息:记录服务器公网IP、登录密码,提前准备生产环境配置文件(application-prod.yml)。

1.2 必备环境依赖

前端 部署需要的 web 服务器:nginx 、apachetomcat

后端 部署需要的 javamavengit 【以上都需要自行在连接了服务器的Linux上安装】

1.3 项目打包

  1. 配置application-prod.yml生产环境参数:
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/yupi?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: 数据库用户名
    password: 数据库密码
server:
  port: 8080
  servlet:
    context-path: /api
  1. 执行Maven打包命令(跳过测试类)/ 或使用Idea中的图形化按钮:
mvn clean package -Dmaven.test.skip=true
  1. 打包成功后,在target目录获取Jar包(如user-center-0.0.1-SNAPSHOT.jar)。

二、方式一:原始命令部署(无可视化,纯命令行)

适合熟悉Linux命令、追求轻量化部署的场景,无需额外安装面板工具,直接通过命令行操作。

2.1 服务器环境搭建

  1. 远程连接服务器,安装JDK 1.8:
# 安装JDK
yum install -y java-1.8.0-openjdk-devel
# 验证安装
java -version
  1. 安装MySQL 8.0(参考官方文档或执行一键安装脚本),启动并设置开机自启:
systemctl start mysqld
systemctl enable mysqld

2.2 项目上传与启动

  1. 创建项目目录并上传Jar包(后端):

方式一:使用Linux命令

# 创建目录
mkdir -p /www/wwwroot/user-center-backend
# 将本地打包好的后端 Jar 包上传到服务器指定目录(可通过scp命令或FTP工具) 
scp 本地Jar包路径 root@服务器公网IP:/www/wwwroot/user-center-backend

方式二:使用git直接上传到服务器,然后自行转移位置,再使用maven打包构建
 

方式三:直接在Idea中用maven生成jar包后直接拖进Linux里面就行

  1. 启动项目(两种方式可选):
java -jar /www/wwwroot/user-center-backend/user-center-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
nohup java -jar user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod &

这样就部署成功了:

1. 临时启动:

2.后台启动

  1. 验证启动:查看日志或端口占用:
# 查看日志
tail -f app.log
# 查看8080端口
netstat -ntlp | grep 8080

2.3 项目维护

# 查找进程PID
ps -ef | grep java
# 终止进程
kill -9 进程PID

2.4 优缺点

三、方式二:宝塔Linux部署(可视化,新手友好)

通过宝塔面板简化服务器操作,无需复杂命令,点击鼠标即可完成环境搭建、项目部署,适合新手或追求高效部署的场景。

重装系统,方式一用的是CentOS系统,这次用宝塔Linux系统

3.1 使用宝塔面板

我们可以安装宝塔Linux,也可以选择使用腾讯云服务器自带的宝塔Linux。【这里我使用服务器自带的】

  1. 在防火墙中可以添加自己的ip地址,仅限自己访问(端口默认8888

输入账号和密码登录进去:

3.2 搭建基础环境

  1. 在宝塔面板左下的 软件商店 搜索安装:

3.3 项目部署与启动

前端部署:

去添加站点,域名暂时是自己的公网(宝塔左上角那个地址)

打开新建的站点,把里面的文件全删掉,再把自己的前端dist里的文件全选拖进去上传

启动项目

后端部署:

上传Jar包:「文件」→ 进入/www/wwwroot,创建user-center-backend目录(自行创建存放后端文件的目录),上传本地Jar包。

在站点添加java项目,特别注意端口。(我们项目的运行端口是8080,这里如果显示8080被占用,可能是Tomcat,去软件商店停止他)

启动项目:点击「启动」

记得在服务器放行8080端口,不然是无法成功启动的

查看状态变为「运行中」,并且有CPU占用(刚启动可能会很高,过一会就会降下来了)

3.4 优缺点

四、方式三:Docker容器化部署(标准化,可移植性强)

通过Docker容器封装项目及依赖环境,实现“一次构建、到处运行”,解决环境不一致问题,适合多环境部署、集群化场景。

4.1 服务器安装Docker

远程连接服务器,安装Docker / 或使用宝塔Linux的服务商店下载Docker
这里我使用宝塔下载:

4.2 构建Docker镜像

制作镜像
Dockerfile 用于指定构建 Docker 镜像的方法,Dockerfile 一般情况下不需要完全从 0 自己写,建议去 github、gitee 等托管平台参考同类项目(比如 springboot)

Dockerfile 编写内容总览:
 ● FROM 依赖的基础镜像
 ● WORKDIR 工作目录
 ● COPY 从本机复制文件
 ● RUN 执行命令
 ● CMD / ENTRYPOINT(附加额外参数)指定运行容器时默认执行的命令

  1. 在后端项目根目录创建Dockerfile文件(本地创建后上传到服务器项目目录):
# 基础镜像(JDK 1.8)
FROM openjdk:8-jdk-alpine
# 作者信息
LABEL maintainer="your-name"
# 复制Jar包到容器
COPY target/user-center-0.0.1-SNAPSHOT.jar app.jar
# 暴露端口
EXPOSE 8080
# 启动命令
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod"]
  1. 上传Dockerfile(我使用git上传),然后构建镜像:
cd user-center-backend
docker build -t user-center-backend:v1.0 .
  1. 查看镜像:
docker images

前端:前端的dockerFilenginx.conf,这些也是需要上传到git仓库里,然后clone过去就行,构建镜像命令:先进入上传的前端项目目录中cd user-center-frontend,再构建docker build -t user-center-frontend:v0.0.1 .(跟后端的操作都大差不差)

在Docker管理器里也可以看到制作成功的docker镜像:

4.3 启动Docker容器

  1. 直接启动容器:
后端:docker run -p 8080:8080 user-center-backend:v0.0.1
前端:docker run -p 80:80 -d user-center-frontend:v0.0.1

若启动后端时出现这这个报错的话(因运存不足无法给进程分配更多的文件句柄数而异常退出):

[root@VM-0-5-opencloudos user-center-frontend]# docker run -p 8080:8080 user-center-backend    v1.0
Unable to find image 'user-center-backend:latest' locally

我们可以改为执行:

docker run --ulimit nofile=1024 -p 8080:8080 user-center-backend:v1.0

4.4 优缺点

五、三种部署方式对比

部署方式核心优势适用场景操作难度
原始命令部署轻量化、无额外依赖熟悉Linux命令、小型项目难+麻烦
宝塔Linux部署可视化、新手友好、部署高效新手、快速部署需求、中小型项目
Docker容器部署环境隔离、可移植性强、支持集群多环境部署、大型项目、集群化场景

补充:Docker容器平台托管

额外提一嘴:还有一种 Docker容器平台托管 的方式(如微信云托管):

特点:傻瓜式部署,只需上传对应的文件即可(平台帮忙部署),巨方便。(这里就不展开了)

以上就是SpringBoot项目部署的四种方式详解的详细内容,更多关于SpringBoot项目部署方式的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文