在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
-
默认安装,验证安装成功:
bash
复制
下载
node -v npm -v
-
安装Nginx
-
解压到目录(如
C:\nginx
)
二、后端部署(Spring Boot)
-
打包项目
bash
复制
下载
# 在Spring Boot项目根目录执行 mvn clean package -DskipTests
- 生成
target/项目名.jar
(如myapp-0.0.1-SNAPSHOT.jar
)
- 生成
-
上传文件到服务器
- 将JAR包放到服务器目录(如
C:\app\backend
)
- 将JAR包放到服务器目录(如
-
启动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)
-
重要服务配置 集群高可用