SpringBoot項(xiàng)目部署的四種方式詳解
Spring Boot項(xiàng)目四種部署方式
| 項(xiàng)目開發(fā)完成后,部署是實(shí)現(xiàn)代碼落地可用的關(guān)鍵環(huán)節(jié),有以下四種方式,其中前三種詳細(xì)講解。 |
| 原始命令部署 |
| 寶塔Linux可視化部署 |
| Docker容器化部署 |
| Docker容器平臺(tái)托管 |
一、部署前通用準(zhǔn)備
無論選擇哪種部署方式,以下基礎(chǔ)準(zhǔn)備工作必不可少:
1.1 服務(wù)器與本地環(huán)境
服務(wù)器:我使用的是騰訊云輕量應(yīng)用服務(wù)器(2核2G+5M帶寬),操作系統(tǒng)選擇CentOS 7/8或OpenCloudOS。

本地環(huán)境:項(xiàng)目無編譯錯(cuò)誤,可通過mvn clean package成功打包;安裝遠(yuǎn)程連接工具(Xshell / FinalShell)并連接,我這里使用的是Xshell。(使用 free -h可以查看你的服務(wù)器信息)

其中,連接的賬戶和密碼在此處查看【不管是不是寶塔Linux部署方式,都是在這】:

核心信息:記錄服務(wù)器公網(wǎng)IP、登錄密碼,提前準(zhǔn)備生產(chǎn)環(huán)境配置文件(application-prod.yml)。
1.2 必備環(huán)境依賴
前端 部署需要的 web 服務(wù)器:
nginx、apache、tomcat后端 部署需要的
java、maven、git【以上都需要自行在連接了服務(wù)器的Linux上安裝】
- 基礎(chǔ)依賴:JDK 1.8(與本地開發(fā)環(huán)境一致即可)、MySQL 8.0(項(xiàng)目數(shù)據(jù)庫)。
- 端口開放:服務(wù)器防火墻(騰訊云控制臺(tái))和本地安全組開放8080(項(xiàng)目)、3306(MySQL)、8888(寶塔,僅寶塔部署需)端口。
- 數(shù)據(jù)庫配置:創(chuàng)建項(xiàng)目所需數(shù)據(jù)庫(如
yupi),執(zhí)行建表語句(下面的url最后面附帶的是時(shí)區(qū)設(shè)置,不然我的Idea連接會(huì)報(bào)錯(cuò),自己看需要設(shè)置)。
1.3 項(xiàng)目打包
- 配置
application-prod.yml生產(chǎn)環(huán)境參數(shù):
spring:
datasource:
url: jdbc:mysql://localhost:3306/yupi?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: 數(shù)據(jù)庫用戶名
password: 數(shù)據(jù)庫密碼
server:
port: 8080
servlet:
context-path: /api- 執(zhí)行Maven打包命令(跳過測試類)/ 或使用Idea中的圖形化按鈕:
mvn clean package -Dmaven.test.skip=true
- 打包成功后,在
target目錄獲取Jar包(如user-center-0.0.1-SNAPSHOT.jar)。

二、方式一:原始命令部署(無可視化,純命令行)
適合熟悉Linux命令、追求輕量化部署的場景,無需額外安裝面板工具,直接通過命令行操作。
2.1 服務(wù)器環(huán)境搭建
- 遠(yuǎn)程連接服務(wù)器,安裝JDK 1.8:
# 安裝JDK yum install -y java-1.8.0-openjdk-devel # 驗(yàn)證安裝 java -version
- 安裝MySQL 8.0(參考官方文檔或執(zhí)行一鍵安裝腳本),啟動(dòng)并設(shè)置開機(jī)自啟:
systemctl start mysqld systemctl enable mysqld
2.2 項(xiàng)目上傳與啟動(dòng)
- 創(chuàng)建項(xiàng)目目錄并上傳Jar包(后端):
方式一:使用Linux命令
# 創(chuàng)建目錄 mkdir -p /www/wwwroot/user-center-backend # 將本地打包好的后端 Jar 包上傳到服務(wù)器指定目錄(可通過scp命令或FTP工具) scp 本地Jar包路徑 root@服務(wù)器公網(wǎng)IP:/www/wwwroot/user-center-backend
方式二:使用git直接上傳到服務(wù)器,然后自行轉(zhuǎn)移位置,再使用maven打包構(gòu)建

方式三:直接在Idea中用maven生成jar包后直接拖進(jìn)Linux里面就行
- 前端:打開前端項(xiàng)目,build運(yùn)行一下,然后找到
dist文件所在位置,壓縮,之后拖進(jìn)Xshell。
解壓后,挪到存放前端文件夾的位置后。我們需要打開Nginx,cd conf去修改一下nginx.conf的配置(其中可能遇到非常多的問題,比如需要修改權(quán)限然后重新加載nginx -s reload啥的…)
- 啟動(dòng)項(xiàng)目(兩種方式可選):
- 臨時(shí)啟動(dòng)(關(guān)閉終端后項(xiàng)目停止):
java -jar /www/wwwroot/user-center-backend/user-center-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
- 后臺(tái)啟動(dòng)(推薦,不受終端影響,不會(huì)一直占用Linux的命令行,而是后臺(tái)運(yùn)行):
nohup java -jar user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod &
這樣就部署成功了:
1. 臨時(shí)啟動(dòng):

2.后臺(tái)啟動(dòng)

- 驗(yàn)證啟動(dòng):查看日志或端口占用:
# 查看日志 tail -f app.log # 查看8080端口 netstat -ntlp | grep 8080
2.3 項(xiàng)目維護(hù)
- 停止項(xiàng)目:
# 查找進(jìn)程PID ps -ef | grep java # 終止進(jìn)程 kill -9 進(jìn)程PID
- 更新項(xiàng)目:替換舊Jar包后,重復(fù)啟動(dòng)命令即可。
2.4 優(yōu)缺點(diǎn)
- 優(yōu)點(diǎn):輕量化、無額外依賴、操作靈活。
- 缺點(diǎn):無可視化界面,需手動(dòng)輸入命令,非常的麻煩,巨麻煩!?。?!。
三、方式二:寶塔Linux部署(可視化,新手友好)
通過寶塔面板簡化服務(wù)器操作,無需復(fù)雜命令,點(diǎn)擊鼠標(biāo)即可完成環(huán)境搭建、項(xiàng)目部署,適合新手或追求高效部署的場景。
重裝系統(tǒng),方式一用的是CentOS系統(tǒng),這次用寶塔Linux系統(tǒng)

3.1 使用寶塔面板
我們可以安裝寶塔Linux,也可以選擇使用騰訊云服務(wù)器自帶的寶塔Linux?!具@里我使用服務(wù)器自帶的】
- 在防火墻中可以添加自己的ip地址,僅限自己訪問(端口默認(rèn)
8888)

- 訪問對(duì)應(yīng)的網(wǎng)址進(jìn)入寶塔Linux控制面板

輸入賬號(hào)和密碼登錄進(jìn)去:

3.2 搭建基礎(chǔ)環(huán)境
- 在寶塔面板左下的 軟件商店 搜索安裝:
- Tomcat(下載這個(gè)只是為了java,它里面包含java的)
- MySQL 8.0(數(shù)據(jù)庫)
- Nginx

3.3 項(xiàng)目部署與啟動(dòng)
前端部署:
去添加站點(diǎn),域名暫時(shí)是自己的公網(wǎng)(寶塔左上角那個(gè)地址)

打開新建的站點(diǎn),把里面的文件全刪掉,再把自己的前端dist里的文件全選拖進(jìn)去上傳

啟動(dòng)項(xiàng)目

后端部署:
上傳Jar包:「文件」→ 進(jìn)入/www/wwwroot,創(chuàng)建user-center-backend目錄(自行創(chuàng)建存放后端文件的目錄),上傳本地Jar包。
在站點(diǎn)添加java項(xiàng)目,特別注意端口。(我們項(xiàng)目的運(yùn)行端口是8080,這里如果顯示8080被占用,可能是Tomcat,去軟件商店停止他)

啟動(dòng)項(xiàng)目:點(diǎn)擊「啟動(dòng)」
記得在服務(wù)器放行8080端口,不然是無法成功啟動(dòng)的

查看狀態(tài)變?yōu)椤高\(yùn)行中」,并且有CPU占用(剛啟動(dòng)可能會(huì)很高,過一會(huì)就會(huì)降下來了)

3.4 優(yōu)缺點(diǎn)
- 優(yōu)點(diǎn):可視化操作、新手友好(是真的方便)、環(huán)境搭建快、支持進(jìn)程守護(hù)和日志查看。
- 缺點(diǎn):依賴面板工具,占用少量服務(wù)器資源。
四、方式三:Docker容器化部署(標(biāo)準(zhǔn)化,可移植性強(qiáng))
通過Docker容器封裝項(xiàng)目及依賴環(huán)境,實(shí)現(xiàn)“一次構(gòu)建、到處運(yùn)行”,解決環(huán)境不一致問題,適合多環(huán)境部署、集群化場景。
4.1 服務(wù)器安裝Docker
遠(yuǎn)程連接服務(wù)器,安裝Docker / 或使用寶塔Linux的服務(wù)商店下載Docker
這里我使用寶塔下載:

4.2 構(gòu)建Docker鏡像
制作鏡像
Dockerfile 用于指定構(gòu)建 Docker 鏡像的方法,Dockerfile 一般情況下不需要完全從 0 自己寫,建議去 github、gitee 等托管平臺(tái)參考同類項(xiàng)目(比如 springboot)Dockerfile 編寫內(nèi)容總覽:
● FROM 依賴的基礎(chǔ)鏡像
● WORKDIR 工作目錄
● COPY 從本機(jī)復(fù)制文件
● RUN 執(zhí)行命令
● CMD / ENTRYPOINT(附加額外參數(shù))指定運(yùn)行容器時(shí)默認(rèn)執(zhí)行的命令
- 在后端項(xiàng)目根目錄創(chuàng)建
Dockerfile文件(本地創(chuàng)建后上傳到服務(wù)器項(xiàng)目目錄):
# 基礎(chǔ)鏡像(JDK 1.8) FROM openjdk:8-jdk-alpine # 作者信息 LABEL maintainer="your-name" # 復(fù)制Jar包到容器 COPY target/user-center-0.0.1-SNAPSHOT.jar app.jar # 暴露端口 EXPOSE 8080 # 啟動(dòng)命令 ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod"]
- 上傳
Dockerfile(我使用git上傳),然后構(gòu)建鏡像:
cd user-center-backend docker build -t user-center-backend:v1.0 .
- 查看鏡像:
docker images

前端:前端的dockerFile和nginx.conf,這些也是需要上傳到git倉庫里,然后clone過去就行,構(gòu)建鏡像命令:先進(jìn)入上傳的前端項(xiàng)目目錄中cd user-center-frontend,再構(gòu)建docker build -t user-center-frontend:v0.0.1 .(跟后端的操作都大差不差)
在Docker管理器里也可以看到制作成功的docker鏡像:

4.3 啟動(dòng)Docker容器
- 直接啟動(dòng)容器:
后端:docker run -p 8080:8080 user-center-backend:v0.0.1 前端:docker run -p 80:80 -d user-center-frontend:v0.0.1
- 參數(shù)說明:
-d(后臺(tái)運(yùn)行)、-p 8080:8080(端口映射,主機(jī)端口:容器端口)。
若啟動(dòng)后端時(shí)出現(xiàn)這這個(gè)報(bào)錯(cuò)的話(因運(yùn)存不足無法給進(jìn)程分配更多的文件句柄數(shù)而異常退出):
[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
我們可以改為執(zhí)行:
docker run --ulimit nofile=1024 -p 8080:8080 user-center-backend:v1.0
4.4 優(yōu)缺點(diǎn)
- 優(yōu)點(diǎn):環(huán)境隔離、可移植性強(qiáng)、部署標(biāo)準(zhǔn)化、支持集群擴(kuò)展。
- 缺點(diǎn):需學(xué)習(xí)Docker基礎(chǔ)命令,初次配置稍復(fù)雜。
五、三種部署方式對(duì)比
| 部署方式 | 核心優(yōu)勢 | 適用場景 | 操作難度 |
|---|---|---|---|
| 原始命令部署 | 輕量化、無額外依賴 | 熟悉Linux命令、小型項(xiàng)目 | 難+麻煩 |
| 寶塔Linux部署 | 可視化、新手友好、部署高效 | 新手、快速部署需求、中小型項(xiàng)目 | 低 |
| Docker容器部署 | 環(huán)境隔離、可移植性強(qiáng)、支持集群 | 多環(huán)境部署、大型項(xiàng)目、集群化場景 | 中 |
補(bǔ)充:Docker容器平臺(tái)托管
額外提一嘴:還有一種 Docker容器平臺(tái)托管 的方式(如微信云托管):
特點(diǎn):傻瓜式部署,只需上傳對(duì)應(yīng)的文件即可(平臺(tái)幫忙部署),巨方便。(這里就不展開了)

以上就是SpringBoot項(xiàng)目部署的四種方式詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot項(xiàng)目部署方式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java FutureTask解析與實(shí)戰(zhàn)指南
本文解析FutureTask,支持異步執(zhí)行、取消、結(jié)果獲取,結(jié)合ExecutorService實(shí)現(xiàn)高效任務(wù)管理,適用于并發(fā)編程中的響應(yīng)優(yōu)化與進(jìn)度監(jiān)控,感興趣的朋友一起看看吧2025-07-07
Spring @CrossOrigin 注解原理實(shí)現(xiàn)
這篇文章主要介紹了Spring @CrossOrigin 注解原理實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
SpringBoot項(xiàng)目啟動(dòng)健康檢查的操作方法
在現(xiàn)代的微服務(wù)架構(gòu)中,容器化技術(shù)已經(jīng)成為一種主流的部署方式,Docker 作為容器化技術(shù)的代表,提供了一種輕量級(jí)、可移植的解決方案,然而,僅僅將應(yīng)用容器化是不夠的,我們還需要確保這些容器在運(yùn)行時(shí)能夠保持健康狀態(tài),這就是健康檢查發(fā)揮作用的地方2024-12-12
springmvc九大組件之HandlerAdapter詳解
這篇文章主要介紹了springmvc九大組件之HandlerAdapter詳解,RequestMappingHandlerAdapter支持的handler的類型是HandlerMethod,而HandlerMethod是通過解析@RequestMapping注解獲得的,需要的朋友可以參考下2023-11-11
SpringBoot項(xiàng)目開發(fā)常用技術(shù)整合
今天給大家分享springboot項(xiàng)目開發(fā)常用技術(shù)整合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-08-08
Java應(yīng)用服務(wù)器之tomcat會(huì)話復(fù)制集群配置的示例詳解
這篇文章主要介紹了Java應(yīng)用服務(wù)器之tomcat會(huì)話復(fù)制集群配置的相關(guān)知識(shí),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Java POI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出通用方法與樣式處理
Apache POI庫是Java領(lǐng)域處理Microsoft Office文件的關(guān)鍵工具,該項(xiàng)目使用POI 3.17版本實(shí)現(xiàn)Excel文件的讀寫功能,本文介紹Excel導(dǎo)入導(dǎo)出的步驟以及如何添加和維護(hù)樣式,包括字體、顏色、邊框和對(duì)齊等,需要的朋友可以參考下2025-08-08

