1. 环境准备与基础配置
在Windows服务器上部署若依前后端分离项目前,需要先搭建好基础运行环境。我建议使用Windows Server 2019/2022这类服务器专用系统,相比桌面版系统更稳定高效。以下是必备组件清单:
- JDK 1.8+:推荐使用OpenJDK 11 LTS版本,实测性能提升约20%
- MySQL 5.7+:若依官方推荐5.7版本,注意要开启大小写敏感设置
- Redis 5.0+:用于会话管理和缓存,Windows版可直接下载微软维护的安装包
- Nginx 1.20+:选择Stable版本,解压即用无需安装
这里有个容易踩坑的地方:路径中不要包含中文或空格。我遇到过因为Program Files路径中的空格导致Nginx启动失败的案例。建议将所有组件安装在类似D:\Server这样的纯英文路径下。
配置环境变量时,记得将JDK的bin目录(如D:\Server\jdk-11\bin)加入系统PATH。验证安装是否成功:
java -version nginx -v redis-cli ping2. 后端项目部署实战
2.1 数据库配置技巧
首先导入若依的SQL脚本(通常位于/sql目录)。建议先用Navicat等工具检查SQL文件编码,避免因UTF-8 BOM头导致导入失败。关键配置点在application-druid.yml:
spring: datasource: druid: master: url: jdbc:mysql://localhost:3306/ry-vue?useSSL=false&allowPublicKeyRetrieval=true username: root password: YourStrongPassword123!如果遇到时区问题,可以在url后追加&serverTimezone=Asia/Shanghai。生产环境务必修改默认密码,并创建专用数据库用户而非直接使用root。
2.2 打包与运行优化
使用Maven打包时,建议添加生产环境profile:
mvn clean package -Pprod -DskipTests生成的ruoyi-admin.jar可以通过以下命令启动:
java -Xms512m -Xmx1024m -jar ruoyi-admin.jar --spring.profiles.active=prod为了让服务在后台稳定运行,可以创建start.bat脚本:
@echo off start "RuoYi" javaw -Xms512m -Xmx1024m -jar ruoyi-admin.jar --spring.profiles.active=prod exit3. 前端项目部署要点
3.1 构建生产版本
在ruoyi-ui目录下执行构建前,需要检查两个关键文件:
vue.config.js中的publicPath应设置为./.env.production中的API地址要改为后端服务地址
构建命令:
npm install --registry=https://registry.npmmirror.com npm run build:prod构建完成后会生成dist目录,将其完整复制到服务器的D:\www\ruoyi-ui目录。注意保持目录结构不变,特别是static文件夹的位置。
4. Nginx反向代理精讲
4.1 核心配置解析
在nginx.conf中配置server块时,这几个参数需要特别注意:
server { listen 80; server_name your-domain.com; # 前端静态资源 location / { root D:/www/ruoyi-ui/dist; try_files $uri $uri/ /index.html; index index.html; } # 后端API代理 location /prod-api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 重要:解决413请求实体过大问题 client_max_body_size 100m; # WebSocket支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }4.2 性能优化参数
在http块中添加这些配置可以显著提升性能:
# 启用gzip压缩 gzip on; gzip_min_length 1k; gzip_types text/plain application/javascript application/x-javascript text/css; # 静态资源缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public"; }5. Windows服务化与运维
5.1 注册为系统服务
使用NSSM工具将Nginx和Java应用注册为服务:
# 安装Nginx服务 nssm install Nginx "D:\Server\nginx\nginx.exe" # 安装Java服务 nssm install RuoYi "D:\Server\jdk-11\bin\java.exe" "-jar D:\www\ruoyi\ruoyi-admin.jar"服务注册后,可以通过services.msc图形界面或sc命令管理服务状态。
5.2 防火墙配置
确保防火墙放行相关端口:
New-NetFirewallRule -DisplayName "RuoYi-HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow New-NetFirewallRule -DisplayName "RuoYi-Backend" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow6. 常见问题排查指南
- 页面刷新404:确保Nginx配置中有
try_files $uri $uri/ /index.html - 接口502错误:检查后端服务是否正常运行,以及
proxy_pass地址是否正确 - 静态资源加载失败:确认
root路径是否正确,路径分隔符要用/而非\ - 上传文件大小限制:Nginx中配置
client_max_body_size,SpringBoot中配置spring.servlet.multipart.max-file-size
7. 安全加固建议
- 修改默认的
/prod-api路径为自定义路径 - 配置HTTPS证书,可以使用Let's Encrypt免费证书
- 定期备份数据库和上传目录
- 限制管理后台访问IP
location /admin { allow 192.168.1.100; deny all; }在实际项目中,我还遇到过因Windows权限问题导致Nginx无法读取静态资源的情况。这时需要给IIS_IUSRS用户组赋予对应目录的读取权限。