记录一次服务器部署 SpringBoot 项目的过程
本文最后更新于 2024年5月20日 16:47
我毕业设计做的是 SpringBoot
前后端结合项目,项目开发完成后,需要将项目部署到服务器上,以便在公网访问。我想尝试一下真正的项目部署流程,即使毕设并没有要求我部署到服务器上。
不同于以往相对严谨的科普教程,本文偏向于整理一个大概的 SpringBoot 项目部署流程框架,内容也会随意些。如有谬误之处,欢迎指正。
1. 准备工作
1.1 开发环境
开发环境:
开发系统环境:Archlinux
服务器系统:Debian-12.5
开发工具:
开发软件:IntelliJ IDEA 2024.1
图形化数据库管理工具:Beekeeper-studio v4.2.9
开发框架:
Java 环境:OpenJDK version 21.0.2
Springboot 版本:3.2.4
MariaDB 数据库:11.3.2
1.2 备份数据库
这里我直接将开发时使用的数据库备份导入到服务器上,方便省事。
MariaDB 数据库备份命令:
1 |
|
上述命令执行完毕,我们就可以在目录下找到备份好的 bak.sql
文件了。
1.3 打包图片资源
项目需要使用一些图片资源,要打包上传到服务器上。
执行以下命令:
1 |
|
这里我使用了 zstd
压缩算法,是一种压缩效率很高、压缩速度也很快的算法。压缩后的文件名为 compress.tar.zst
。
-caf
压缩指定文件或文件夹,自动选择压缩算法images
要压缩的文件夹images.tar.zst
压缩后的文件名
2. 打包 SpringBoot 项目
在 IntelliJ IDEA
中,点击右侧栏的 Maven
展开找到 Lifecycle
,先双击执行 clean
,再执行 package
进行打包。
当然,你也可以在终端中执行 mvn clean package
命令来打包,这和在 IDEA
中执行的效果是一样的。
执行完毕后我们就可以在项目的 target
目录下找到打包好的 jar
包了。
3. 上传到服务器
现在开始把 数据库备份文件、jar
包、图片资源压缩包 上传到服务器上。我是通过 1Panel
面板上传的。
你也可以通过 scp
命令上传文件到服务器上。
1 |
|
-P
指定端口/path/to/local/file
本地文件路径username
服务器用户名server
服务器地址/path/to/remote/file
服务器文件路径
4. 服务器配置
既然要在服务器上运行项目,那么服务器就要安装并配置和本地开发环境一样的运行环境。
4.1 安装 Java 环境
值得一提的是 OpenJDK 21
正式版于 2023/09/19
发布[1],距今(2024/04/17
)已经半年多了。但 Debian 这个老顽固 stable
源迟迟未能更新至 OpenJDK 21
,至今还在 testing
源中测试。stable
源目前仅提供 OpenJDK 17
。
不禁想起一个笑话:Debian stable = Debian stale
[2]
为了项目运行,我只能开启 testing
源来安装 OpenJDK 21
.
输入以下命令,修改 /etc/apt/sources.list
文件,将 testing
加到源中:
1 |
|
我们会看到 bookworm
, bookworm-security
, bookworm-updates
三个源,但只需要修改 bookworm
源即可,bookworm
是 Debian 12 的开发代号,你可以根据你的系统版本修改。
找到
1 |
|
在 bookworm
前面加上 testing
,变成:
1 |
|
4.2 安装 MariaDB 数据库
一开始项目启动时我甚至还忘记装 mariadb
。一看报错:无法连接数据库数据库,我才想起来。
所以切记要先安装数据库再启动项目。
输入以下命令安装 mariadb
数据库:
1 |
|
4.3 配置数据库
输入以下命令配置数据库:
1 |
|
这里的具体配置参考我往期文章:在 Archlinux 上安装使用 MariaDB.
数据库密码注意要修改为 Springboot 项目配置 application.yml
中对应的密码。
4.3 导入数据库
输入以下命令连接数据库:
1 |
|
创建数据库,这里的 database_name
要和 application.yml
中配置的数据库名一致:
1 |
|
导入数据库:
1 |
|
4.4 解压图片资源
解压我们上传的图片资源到 application.yml
配置的路径下:
1 |
|
-xf
解压文件images.tar.zst
压缩包-C
指定解压路径
5. 启动项目
Springboot 打包好后可以通过 java -jar xxx.jar
命令启动项目。但是这样启动的项目会随着终端关闭而停止,所以我们可以通过 nohup
命令让项目在后台运行。
输入以下命令启动项目:
1 |
|
nohup
命令可以让程序在后台运行,不占用当前终端,不会因为终端关闭而停止。>> nohup.out 2>&1
将输出重定向到nohup.out
文件中,这样我们可以查看项目的输出日志。
6. 反向代理与 SSL 证书申请
我用了 1Panel
比较方便地配置了反向代理和申请了 SSL 证书。这里就不过多赘述了。感兴趣的可以看我往期文章:1Panel 安装配置教程
反向代理与 SSL 证书申请 配置好后,我们就可以通过域名访问我们的项目了,整个部署流程就结束了。过程虽然不难,但有很多细节需要注意,一不小心就会出错。
7. 测试项目
在项目进行本地开发阶段时,务必进行全面的测试,确保各项功能稳定可靠。当项目部署完成后,亦不可掉以轻心,仍需进行相应的测试,以防因环境配置不当(特别是数据库部分)而引发报错。一切准备就绪后,项目就可以正式上线了。
参考资料: