SpringBoot 项目的服务器部署
Java 项目的打包产物有两种形式:
- war 包:依赖 Web 服务器。部署 war 包的常见服务器有 Tomcat 和 Jetty。
- 内嵌 Web 服务器的可直接运行的 jar 包。比如 SpringBoot 框架开发的项目打包产物。
本地运行 SpringBoot 程序
由 SpringBoot 框架开发的项目打包之后得到的是 jar 包,里面内置了 Tomcat 等 Web 服务器。我们通常只需要一行命令启动 jar 包即可:
1 | java -jar app.jar --spring.profiles.active=prod # 指定环境为 prod |
如果想在后台运行 jar 包,那就给命令开头补充 nohup ,结尾补充 & 。
关于多环境的更多内容详看:站内文章多环境部署项目。
Linux+Nginx 原始方式
Nginx 的安装与反向代理配置详看:站内文章Nginx 的安装与反向代理配置。
首先检查服务器 Java 有没有正确安装:
1 | java --version |
我们可以在服务器上安装好 Maven,然后拉取代码,在服务器上进行打包构建:
1 | git clone https://xxxxx/xxxx.git # 拉取代码 |
也可以在本地用 Maven 打好 jar 包,再上传到服务器中,这样服务器就不用安装 Maven 了。比如假设我扔在这个目录中:/var/www/temp_test。必要时给予权限:
1 | chmod a+x my-backend-0.0.1-SNAPSHOT.jar |
在服务器中运行这行命令即可后台启动项目,跟本地运行 SpringBoot 项目的方法一致:
1 | 注意 jar 包的权限是否可执行 |
关于
nohup命令的更多信息,详看文章:站内文章Linux 使用 nohup 后台运行程序。
我们可以通过一些命令查看 Java 程序是否启动:
1 | jobs # 查看运行程序 |
Nginx 配置文件示例:
1 | server{ |
Docker 容器技术
Docker 是一种容器技术,可以将项目的环境(比如 Java、Nginx)和项目的代码一起打包成镜像,所有具有权限的用户都能下载镜像,更容易分发和移植。使用 Docker 容器技术,理论上可以封装任何环境和应用,对于后端 Java 项目来说,把 Java 环境、Maven 和 jar 包封装成一个镜像就好了。
启动项目时不需要敲更多的命令,而是通过下载镜像、启动镜像即可。
安装 Docker
自行下载安装 Docker,检查 Docker 安装是否成功:
1 | docker --version |
编写 Dockerfile
Dockerfile 记录了项目的打包构建流程,我们可以通过编写这个文件指定构建 Docker 镜像的方法。一般情况下,Dockerfile 不需要自己写,可以直接在网上找。
Dockerfile 一般放置在项目的根目录中:
FROM:依赖的基础镜像WORKDIR:工作目录COPY:从本机复制文件RUN:执行命令CMD/ENTRYPOINT:指定运行容器时默认执行的命令,ENTRYPOINT可以附加额外参数
方式 1:在服务器中进行 Maven 打包
下面是一份使用了 Maven 打包工具在服务器中进行打包的 Dockerfile:
1 | # Docker 镜像构建 |
因为上面的 Dockerfile 中我们交给容器执行 maven 的打包命令,但是容器中 maven 仓库源为默认地址,下载速度极慢。我们需要配置 Maven 的下载源更换为阿里的镜像仓库。在项目主目录加上 settings.xml 文件,文件内容为:
1 | <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" |
更多 Docker 镜像源切换参考:Docker镜像加速指南:手把手教你配置国内镜像源-阿里云开发者社区。
方式 2:直接运行本地打包好的 jar 包
为了节省时间,提高构建速度,下面的这个 Dockerfile 忽略了 Maven 打包的过程,直接运行 jar 包:
1 | # 使用官方的 Java 21 基础镜像 |
我们在服务器合适的位置,上传这个 Dockerfile 和我们在本地已经打包好的 jar 包:

镜像的构建与运行
当你通过以上两种方式编写好 Dockerfile 后,可在存在 Dockerfile 的目录下,执行镜像构建:
1 | -t 打标签,"."表示使用当前的目录的Dockerfile构建镜像 |
运行镜像,指定端口以及重启策略:
1 | -d 表示后台运行 |
部署在阿里云服务器的,记得在云安全组中开发所需的端口。
接下来弄好 站内文章Nginx 反向代理配置,就可以进行测试了。
宝塔 Linux 部署
宝塔是一款 Linux 运维面板软件。可以更方便管理服务器软件或部署项目。
官网下载:宝塔面板下载,免费全能的服务器运维软件 (bt.cn)
建议在纯新系统安装宝塔面板,不支持已经部署项目/环境的系统进行安装。
容器托管平台的部署
容器平台:
- 云服务商的容器平台(腾讯云、阿里云)
- 面向某个领域的容器平台(前端 / 后端微信云托管)
使用容器平台的优点:
- 不需要购买云服务器
- 不用输命令来操作,更方便省事
- 不用在控制台操作,更傻瓜式、更简单
- 大厂运维,比自己运维更省心
- 额外的能力,比如监控、告警、其他(存储、负载均衡、自动扩缩容、流水线)
微信云托管:微信云托管 (qq.com)
本文参考
- 知识星球·编程导航 - 用户中心项目
- 如何部署网站?来比比谁的方法多 - 哔哩哔哩 (bilibili.com)
- 宝塔面板下载,免费全能的服务器运维软件 (bt.cn)
- Linux安装和jdk教程和更换jdk版本教程_linux jdk升级-CSDN博客
- 解决centos8下安装docker提示“为 repo ‘docker-ce-stable‘ 下载元数据失败“的问题_error: 为仓库 ‘docker-ce-stable’ 下载元数据失败 : cannot dow-CSDN博客
- dockerfile构建镜像报错 ERROR [internal] load metadata for docker.io/library/php:7.4-apache_=> error [internal] load metadata for registry.cn–CSDN博客
- Docker官方2024.6停服后可用国内镜像地址更新 - Z科技 - 博客园 (cnblogs.com)
- 将Maven的Docker镜像修改为国内源_docker mvn 换源-CSDN博客
- 在dockerfile中把maven的下载源更换为阿里的镜像仓库 - 简书 (jianshu.com)
- 如何部署网站?来比比谁的方法多 - 哔哩哔哩
更多参考——其他应用的部署方式:
- Hexo 博客部署:站内文章部署 Hexo 个人博客框架到服务器
- 简单 HTML+CSS+JavaScript 网页应用托管:站内文章GitHub Action 与 Vercel 简单应用:脚本定时执行 + 文件的读写和发布
- Ant Design Pro 前端项目的本地、Nginx 以及 Docker 部署:站内文章Ant Design Pro 前端项目初始化到部署上线
- 第三方应用部署:



