在Windows Server 上部署Vue3 + Spring Boot前后端分離項目的詳細步驟如下:
一、環境準備
-
安裝JDK 17+
-
下載JDK MSI安裝包(如Oracle JDK?或?OpenJDK)
-
雙擊安裝,配置環境變量:
-
JAVA_HOME
:JDK安裝路徑(如?C:\Program Files\Java\jdk-17
) -
添加?
%JAVA_HOME%\bin
?到?Path
-
-
-
安裝Node.js
-
下載Node.js LTS版
-
默認安裝,驗證安裝成功:
bash
復制
下載
node -v npm -v
-
-
安裝Nginx
-
下載Windows版Nginx
-
解壓到目錄(如?
C:\nginx
)
-
二、后端部署(Spring Boot)
-
打包項目
bash
復制
下載
# 在Spring Boot項目根目錄執行 mvn clean package -DskipTests
-
生成?
target/項目名.jar
(如?myapp-0.0.1-SNAPSHOT.jar
)
-
-
上傳文件到服務器
-
將JAR包放到服務器目錄(如?
C:\app\backend
)
-
-
啟動Spring Boot
bash
復制
下載
java -jar C:\app\backend\myapp-0.0.1-SNAPSHOT.jar
-
后臺運行(推薦使用批處理):
batch
復制
下載
@echo off start javaw -jar C:\app\backend\myapp-0.0.1-SNAPSHOT.jar exit
保存為?
run-backend.bat
?并雙擊運行。
-
-
驗證后端
-
訪問?
http://localhost:8080/api/test
(按實際API路徑)
-
三、前端部署(Vue3)
-
打包項目
bash
復制
下載
npm run build
-
生成?
dist
?文件夾(包含靜態文件)
-
-
上傳文件到服務器
-
將?
dist
?文件夾內容放到Nginx目錄(如?C:\nginx\html\frontend
)
-
-
配置Nginx反向代理
-
編輯?
C:\nginx\conf\nginx.conf
:nginx
復制
下載
server {listen 80;server_name your-domain.com; # 替換為域名或IP# 前端靜態資源location / {root html/frontend;index index.html;try_files $uri $uri/ /index.html; # 支持Vue Router history模式}# 后端API代理location /api {proxy_pass http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;} }
-
-
啟動Nginx
bash
復制
下載
# 命令行進入nginx目錄 start nginx
四、防火墻配置
-
開放端口(管理員PowerShell):
powershell
復制
下載
New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow New-NetFirewallRule -DisplayName "Allow Spring Boot" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
五、設置開機自啟動
-
Spring Boot
-
創建批處理文件?
start-backend.bat
(內容同上) -
將快捷方式放入啟動文件夾:
復制
下載
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
-
-
Nginx
-
創建批處理文件?
start-nginx.bat
:batch
復制
下載
@echo off C:\nginx\nginx.exe
-
同樣將快捷方式放入啟動文件夾。
-
六、驗證部署
-
訪問前端頁面:
復制
下載
http://服務器IP或域名/
-
檢查API請求:
-
前端頁面調用?
/api/xxx
?應正常返回后端數據
-
常見問題解決
-
端口沖突:
-
修改Spring Boot端口:
application.properties
?中添加?server.port=9090
-
或關閉占用端口的進程(如IIS默認占用80端口):
bash
復制
下載
net stop http /y
-
-
Nginx代理404:
-
確保?
proxy_pass
?地址與Spring Boot運行地址一致 -
檢查后端API路徑前綴(如?
/api/v1
?需在Nginx中匹配)
-
-
靜態資源加載失敗:
-
檢查Nginx?
root
?路徑是否正確 -
Vue打包時設置公共路徑(
vue.config.js
):js
復制
下載
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? '/frontend/' : '/' }
-
關鍵提示:
生產環境建議使用?PM2?管理Node進程(但Vue是靜態資源無需Node運行時)
數據庫等依賴服務需獨立部署并配置連接信息
使用HTTPS可配置Nginx SSL證書(Let's Encrypt)
通過以上步驟,即可完成全棧項目在Windows Server 的部署。
在同一臺Windows Server 服務器上完全可以同時運行多個JAR包。這是企業級部署的常見場景(如微服務架構)。以下是具體實現方法和注意事項:
? 關鍵實現步驟
1.?端口分配
為每個JAR分配不同端口(避免沖突):
-
修改Spring Boot的?
application.properties
:properties
復制
下載
# 應用1 server.port=8080 # 應用2 server.port=8081
-
或啟動時指定端口:
bash
復制
下載
java -jar app1.jar --server.port=8080 java -jar app2.jar --server.port=8081
2.?獨立目錄部署
為每個應用創建獨立目錄:
復制
下載
C:\apps ├─app1 │ ├─app1.jar │ └─config/ # 配置文件 ├─app2 │ ├─app2.jar │ └─config/
3.?批處理腳本啟動
創建多個啟動腳本(如?start-app1.bat
,?start-app2.bat
):
batch
復制
下載
:: start-app1.bat @echo off cd /d C:\apps\app1 start javaw -Xmx512m -jar app1.jar --spring.config.location=config/application.properties exit
關鍵參數:
javaw
:無控制臺窗口的后臺運行
-Xmx512m
:限制內存用量
--spring.config.location
:指定配置文件路徑
4.?Nginx反向代理配置
統一入口轉發到不同應用:
nginx
復制
下載
server {listen 80;# 應用1代理location /app1 {proxy_pass http://localhost:8080;proxy_set_header Host $host;}# 應用2代理location /app2 {proxy_pass http://localhost:8081;proxy_set_header Host $host;} }
?? 注意事項
1.?資源監控
-
檢查服務器資源占用:
powershell
復制
下載
# 查看內存/CPU使用 Get-Process javaw | Format-Table Name, CPU, WorkingSet
-
建議配置JVM內存限制(避免OOM):
bash
復制
下載
java -Xms256m -Xmx1024m -jar app.jar
2.?進程管理
-
查看所有Java進程:
bash
復制
下載
tasklist | findstr "javaw"
-
停止特定應用:
bash
復制
下載
taskkill /PID <進程ID> /F
3.?日志分離
為每個應用配置獨立日志文件:
properties
復制
下載
# application.properties logging.file.name=logs/app1.log
4.?服務化部署(推薦)
使用?NSSM?將每個JAR注冊為Windows服務:
-
下載?nssm.exe
-
創建服務:
powershell
復制
下載
# 注冊應用1服務 nssm install App1_Service "C:\Program Files\Java\jdk-17\bin\java.exe" nssm set App1_Service AppParameters "-jar C:\apps\app1\app1.jar" nssm set App1_Service AppDirectory "C:\apps\app1"# 啟動服務 nssm start App1_Service
-
服務管理:
services.msc
-
📊 資源分配建議
應用規模 | JVM堆內存 | 建議最大并發應用數 |
---|---|---|
小型應用 | 512MB | 4~6個 |
中型應用 | 1-2GB | 2~3個 |
大型應用 | 4GB+ | 1個(獨占服務器) |
經驗值:預留至少1GB內存給操作系統和Nginx
🔧 故障排查技巧
-
端口沖突:
powershell
復制
下載
netstat -ano | findstr ":8080"
-
查看特定應用日志:
bash
復制
下載
tail -f C:\apps\app1\logs\application.log
-
內存泄漏檢測:
bash
復制
下載
jcmd <PID> GC.heap_info
通過以上方案,您可以穩定運行多個Spring Boot應用。對于生產環境,建議:
-
使用?Docker容器化部署(需Windows Server 2016+)
-
配置?APM監控(如SkyWalking)
-
重要服務配置?集群高可用