甲方只给Windows服务器?别慌!手把手教你搞定SpringBoot+Vue微服务部署(含MySQL/Redis/MinIO配置)
甲方只给Windows服务器?别慌!手把手教你搞定SpringBoot+Vue微服务部署(含MySQL/Redis/MinIO配置)
当你面对甲方坚持使用Windows Server的环境要求时,是否感到无从下手?别担心,这篇文章将带你从零开始,在Windows环境下部署一套完整的SpringBoot+Vue微服务架构。不同于常见的Linux部署方案,我们将聚焦Windows特有的配置技巧和避坑指南,让你即使在不熟悉的环境中也能游刃有余。
1. 环境准备与基础配置
1.1 Windows Server基础环境检查
在开始部署前,我们需要确保Windows Server满足基本要求:
- 操作系统版本:Windows Server 2016或更高版本
- 内存:建议至少8GB(运行多个中间件时可能需要更多)
- 磁盘空间:至少50GB可用空间
- 用户权限:确保拥有管理员权限
重要检查项:
# 检查系统版本 systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" # 检查内存 systeminfo | findstr /C:"物理内存总量" # 检查磁盘空间 wmic logicaldisk get size,freespace,caption1.2 必备软件安装
不同于Linux的包管理器,Windows需要手动安装一些基础工具:
Java环境:推荐JDK 11或17(LTS版本)
- 下载地址:华为云镜像站
- 安装后配置环境变量:
setx JAVA_HOME "C:\Program Files\Java\jdk-17.0.1" setx PATH "%PATH%;%JAVA_HOME%\bin"
Node.js:用于前端构建(Vue项目)
- 下载LTS版本并安装
- 验证安装:
node -v npm -v
Git:可选,用于代码版本控制
2. 中间件部署与配置
2.1 MySQL数据库安装
Windows下的MySQL安装与Linux有显著不同:
| 配置项 | Linux常见方式 | Windows推荐方式 |
|---|---|---|
| 安装方式 | 包管理器/二进制 | MSI安装包 |
| 服务管理 | systemctl | Windows服务管理器 |
| 配置文件位置 | /etc/my.cnf | C:\ProgramData\MySQL\ |
关键步骤:
- 下载MySQL Community Server的Windows版本
- 运行安装向导,选择"Server only"模式
- 设置root密码时,建议勾选"Add firewall exception for this port"
- 安装完成后,配置环境变量:
setx PATH "%PATH%;C:\Program Files\MySQL\MySQL Server 8.0\bin"
注意:如果项目需要MySQL 5.7,Windows上也完全兼容,无需担心版本问题。
2.2 Redis部署优化
Windows版的Redis与Linux版在性能上有差异,但通过合理配置可以满足生产需求:
- 下载Windows版Redis(推荐Microsoft维护的版本)
- 修改redis.windows.conf关键参数:
# 允许远程连接 bind 0.0.0.0 protected-mode no # 内存限制 maxmemory 2GB maxmemory-policy allkeys-lru - 启动Redis(建议作为Windows服务运行):
redis-server --service-install redis.windows.conf --loglevel verbose redis-server --service-start
2.3 MinIO对象存储配置
MinIO在Windows上的部署相对简单:
# 下载MinIO Windows版 wget https://dl.min.io/server/minio/release/windows-amd64/minio.exe -OutFile minio.exe # 启动MinIO(数据目录设为D:\minio\data) .\minio.exe server D:\minio\data --console-address ":9001"访问控制配置:
- 修改默认端口(如果需要)
- 设置MINIO_ROOT_USER和MINIO_ROOT_PASSWORD环境变量
- 配置防火墙规则允许9000和9001端口
3. 应用部署实战
3.1 SpringBoot应用部署
Windows下运行SpringBoot jar包需要注意:
- 路径问题:Windows使用反斜杠,确保配置文件中路径正确
- 服务化:建议使用WinSW将jar包转为Windows服务
- 日志管理:配置日志轮转,避免磁盘空间耗尽
典型启动脚本:
@echo off set JAVA_OPTS=-Xmx1024m -Xms512m -Dfile.encoding=UTF-8 set SPRING_CONFIG=--spring.config.location=C:\app\config\application-prod.yml java %JAVA_OPTS% -jar your-application.jar %SPRING_CONFIG%3.2 Vue前端部署
Vue项目在Windows上的部署流程:
- 构建生产版本:
npm run build - 配置Nginx:
server { listen 80; server_name localhost; location / { root C:/app/dist; index index.html; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; } } - 启动Nginx:
cd C:\nginx-1.25.3 start nginx
4. 高级配置与优化
4.1 防火墙与端口管理
Windows防火墙配置是部署中最常见的坑点:
- 开放必要端口:
New-NetFirewallRule -DisplayName "MySQL" -Direction Inbound -LocalPort 3306 -Protocol TCP -Action Allow New-NetFirewallRule -DisplayName "Redis" -Direction Inbound -LocalPort 6379 -Protocol TCP -Action Allow - 检查端口监听状态:
netstat -ano | findstr "3306"
4.2 开机自启动方案
确保所有服务在服务器重启后自动恢复:
- 中间件服务:配置为Windows服务
sc create "MinIO" binPath= "C:\minio\minio.exe server C:\minio\data" start= auto - 应用服务:使用任务计划程序
- Nginx:通过启动脚本实现
4.3 内网穿透方案比较
当需要从外网访问时,几种常见方案对比:
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 花生壳 | 配置简单 | 速度慢,需付费 | 临时演示 |
| frp | 开源,可自建服务器 | 需要额外服务器 | 长期使用 |
| 路由器映射 | 性能好 | 需要公网IP | 企业固定办公环境 |
frp基础配置示例:
# frpc.ini [common] server_addr = your_frp_server.com server_port = 7000 [web] type = http local_port = 80 custom_domains = yourdomain.com5. 监控与维护
5.1 基础监控方案
即使没有专业的监控系统,也可以通过以下方式保持服务稳定:
- 任务管理器:监控CPU、内存使用率
- 资源监视器:查看磁盘I/O和网络流量
- 自定义脚本:定期检查服务状态
# 检查Java进程 Get-Process java | Select-Object Id, CPU, PM # 检查端口监听 Test-NetConnection -ComputerName localhost -Port 3306
5.2 日志管理技巧
Windows下的日志管理建议:
- 使用Logback或Log4j2的SizeBasedTriggeringPolicy
- 配置定期日志清理任务:
# 删除超过30天的日志 Get-ChildItem "C:\logs\*.log" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Remove-Item - 对于关键服务,考虑使用Windows事件日志
在实际项目中,我发现将Nginx日志和Java应用日志统一存放到特定目录,并配置每日轮转,能极大简化故障排查过程。一个简单的bat脚本配合Windows任务计划程序,就能实现自动日志归档和清理。
