当前位置: 首页 > news >正文

甲方只给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,caption

1.2 必备软件安装

不同于Linux的包管理器,Windows需要手动安装一些基础工具:

  1. Java环境:推荐JDK 11或17(LTS版本)

    • 下载地址:华为云镜像站
    • 安装后配置环境变量:
      setx JAVA_HOME "C:\Program Files\Java\jdk-17.0.1" setx PATH "%PATH%;%JAVA_HOME%\bin"
  2. Node.js:用于前端构建(Vue项目)

    • 下载LTS版本并安装
    • 验证安装:
      node -v npm -v
  3. Git:可选,用于代码版本控制

2. 中间件部署与配置

2.1 MySQL数据库安装

Windows下的MySQL安装与Linux有显著不同:

配置项Linux常见方式Windows推荐方式
安装方式包管理器/二进制MSI安装包
服务管理systemctlWindows服务管理器
配置文件位置/etc/my.cnfC:\ProgramData\MySQL\

关键步骤

  1. 下载MySQL Community Server的Windows版本
  2. 运行安装向导,选择"Server only"模式
  3. 设置root密码时,建议勾选"Add firewall exception for this port"
  4. 安装完成后,配置环境变量:
    setx PATH "%PATH%;C:\Program Files\MySQL\MySQL Server 8.0\bin"

注意:如果项目需要MySQL 5.7,Windows上也完全兼容,无需担心版本问题。

2.2 Redis部署优化

Windows版的Redis与Linux版在性能上有差异,但通过合理配置可以满足生产需求:

  1. 下载Windows版Redis(推荐Microsoft维护的版本)
  2. 修改redis.windows.conf关键参数:
    # 允许远程连接 bind 0.0.0.0 protected-mode no # 内存限制 maxmemory 2GB maxmemory-policy allkeys-lru
  3. 启动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"

访问控制配置

  1. 修改默认端口(如果需要)
  2. 设置MINIO_ROOT_USER和MINIO_ROOT_PASSWORD环境变量
  3. 配置防火墙规则允许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上的部署流程:

  1. 构建生产版本:
    npm run build
  2. 配置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; } }
  3. 启动Nginx:
    cd C:\nginx-1.25.3 start nginx

4. 高级配置与优化

4.1 防火墙与端口管理

Windows防火墙配置是部署中最常见的坑点:

  1. 开放必要端口:
    New-NetFirewallRule -DisplayName "MySQL" -Direction Inbound -LocalPort 3306 -Protocol TCP -Action Allow New-NetFirewallRule -DisplayName "Redis" -Direction Inbound -LocalPort 6379 -Protocol TCP -Action Allow
  2. 检查端口监听状态:
    netstat -ano | findstr "3306"

4.2 开机自启动方案

确保所有服务在服务器重启后自动恢复:

  1. 中间件服务:配置为Windows服务
    sc create "MinIO" binPath= "C:\minio\minio.exe server C:\minio\data" start= auto
  2. 应用服务:使用任务计划程序
  3. 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.com

5. 监控与维护

5.1 基础监控方案

即使没有专业的监控系统,也可以通过以下方式保持服务稳定:

  • 任务管理器:监控CPU、内存使用率
  • 资源监视器:查看磁盘I/O和网络流量
  • 自定义脚本:定期检查服务状态
    # 检查Java进程 Get-Process java | Select-Object Id, CPU, PM # 检查端口监听 Test-NetConnection -ComputerName localhost -Port 3306

5.2 日志管理技巧

Windows下的日志管理建议:

  1. 使用Logback或Log4j2的SizeBasedTriggeringPolicy
  2. 配置定期日志清理任务:
    # 删除超过30天的日志 Get-ChildItem "C:\logs\*.log" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Remove-Item
  3. 对于关键服务,考虑使用Windows事件日志

在实际项目中,我发现将Nginx日志和Java应用日志统一存放到特定目录,并配置每日轮转,能极大简化故障排查过程。一个简单的bat脚本配合Windows任务计划程序,就能实现自动日志归档和清理。

http://www.cnnetsun.cn/news/2143659.html

相关文章:

  • 告别C盘爆满!手把手教你自定义Rust安装目录到D盘(附MinGW配置避坑指南)
  • TrueNAS-SCALE存储池避坑指南:从12块硬盘实战聊聊RAID-Z、缓存和数据集权限那些事儿
  • 保姆级教程:用Livox MID-360和ROS1实现无人机前方避障(附完整代码)
  • 别再傻等!OpenCV-Python安装卡在Building wheel?3个提速技巧实测有效
  • H3C防火墙固定IP配置避坑指南:安全策略和DHCP这些细节别忽略
  • 别再死记命令了!通过eNSP搭建AAA认证实验,深入理解Telnet远程管理的安全逻辑
  • 3步掌握抖音下载器:免费解锁无水印批量下载
  • 如何用abqpy实现Abaqus脚本开发的终极效率革命:3个简单步骤告别繁琐操作
  • 别再死记硬背了!用Arduino和面包板5分钟搞懂NPN与PNP三极管的区别
  • 告别网页版!用mmWave Demo Visualizer 3.1本地版玩转TI xWR1642雷达数据可视化
  • PowerToys中文汉化版:彻底解决Windows效率痛点的终极方案
  • Platinum-MD终极指南:解锁NetMD设备跨平台无损音乐传输
  • MCP插件安全沙箱设计揭秘(VS Code 1.90 Beta内测文档节选):3级权限隔离模型+动态Capability注入机制,规避98.3%的插件越权风险
  • 突破AI编码助手工具调用限制:高效人机协作策略与实践
  • 从“对话者”到“执行者”:AI Agent 产品设计与系统架构深度研究
  • 浏览器P2P文件传输终极指南:5分钟掌握FilePizza完整解决方案
  • layerdivider:5分钟掌握AI智能图像分层终极指南
  • 数据结构:八种数据结构大全
  • 前端收藏:AI时代如何转型AI全栈,小白也能轻松入门!
  • 从理论到代码:拆解ORB-SLAM中‘关键帧’与‘地图点’管理的那些精妙设计
  • JianYingApi:企业级剪映自动化视频处理架构解决方案
  • 相对完整 laravel 扩展包开发过程
  • C++三大默认成员函数详解
  • TMD Matlab Toolbox v2.5:潮汐模型驱动的技术深度解析与架构剖析
  • Awesome Free Software的许可证解析:MIT、GPL、Apache的完整对比
  • c->c++(二):class
  • 看AI如何“火眼金睛”:实时口罩检测-通用模型案例效果图集
  • ROS2机器人实战:如何为你的奥比中光AstraPro相机选择合适的3D建图方案(rtabmap vs. 其他)
  • 终极指南:简单三步永久免费使用Cursor Pro的完整解决方案
  • 互联网大厂 Java 求职面试:音视频应用的技术挑战