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

Windows Server上从零部署RuoYi-Vue:保姆级避坑指南(含Redis、Nginx配置)

Windows Server上从零部署RuoYi-Vue:保姆级避坑指南(含Redis、Nginx配置)

1. 环境准备与基础配置

在开始部署RuoYi-Vue之前,确保你的Windows Server已经完成以下基础环境配置。一台刚安装好的Windows Server 2016/2019/2022系统需要特别注意这些准备工作:

系统要求检查清单

  • 确保系统已安装最新补丁(运行winver检查版本)
  • 关闭Windows Defender实时防护(临时关闭即可)
  • 以管理员身份运行所有安装和配置操作
  • 准备至少8GB内存(RuoYi-Vue运行需要4GB以上)

1.1 JDK安装与配置

RuoYi-Vue要求Java 8或11环境,以下是推荐安装步骤:

  1. 下载AdoptOpenJDK 11 HotSpot版本(推荐使用.msi安装包)
  2. 安装时勾选"Set JAVA_HOME variable"选项
  3. 验证安装:
    java -version javac -version
  4. 手动检查环境变量:
    • JAVA_HOME应指向JDK安装目录(如C:\Program Files\AdoptOpenJDK\jdk-11.0.xx-hotspot
    • Path中应包含%JAVA_HOME%\bin

注意:避免使用Oracle JDK,可能遇到许可问题。如果必须使用,建议配置JVM参数:

-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m

1.2 Maven环境配置

RuoYi-Vue使用Maven进行依赖管理:

  1. 下载Maven 3.6+二进制包(建议使用3.8.6)
  2. 解压到C:\Program Files\apache-maven-3.8.6
  3. 配置环境变量:
    • MAVEN_HOME= 安装目录
    • Path中添加%MAVEN_HOME%\bin
  4. 修改conf/settings.xml
    <mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> </mirrors>

验证配置:

mvn -v

2. Redis服务部署与优化

2.1 Redis安装与配置

不同于简单的解压即用,生产环境需要特别注意以下配置:

  1. 下载Redis 5.0+ Windows版本(推荐使用微软维护的分支)
  2. 解压到C:\Redis(避免路径含空格或中文)
  3. 关键配置修改(redis.windows.conf):
    bind 127.0.0.1 port 6379 maxmemory 1GB maxmemory-policy allkeys-lru requirepass yourStrongPassword
  4. 安装为服务:
    redis-server --service-install redis.windows.conf --loglevel notice --service-name Redis_RuoYi

2.2 服务优化与故障排查

常见问题解决方案

问题现象可能原因解决方案
服务启动后立即停止端口冲突修改port或运行net stop Redis_RuoYi
内存占用过高未设内存限制配置maxmemory参数
连接被拒绝防火墙阻止添加Windows防火墙入站规则

性能优化建议

  • 定期执行内存整理:
    redis-cli --pass yourStrongPassword MEMORY PURGE
  • 监控内存使用:
    redis-cli --pass yourStrongPassword INFO memory

3. 后端项目部署实战

3.1 项目编译与打包

  1. 克隆RuoYi-Vue项目:
    git clone https://gitee.com/y_project/RuoYi-Vue.git
  2. 修改关键配置(ruoyi-admin/src/main/resources/application.yml):
    server: port: 8080 servlet: context-path: / redis: host: 127.0.0.1 port: 6379 password: yourStrongPassword
  3. 执行完整构建:
    cd RuoYi-Vue mvn clean package -DskipTests

3.2 服务化部署方案

方案一:传统BAT脚本启动

  1. 创建启动脚本start.bat
    @echo off set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m java %JAVA_OPTS% -jar ruoyi-admin.jar > console.log 2>&1
  2. 创建停止脚本stop.bat
    @echo off for /f "tokens=5" %%i in ('netstat -ano ^| findstr 8080') do ( taskkill /f /pid %%i )

方案二:Windows服务部署(推荐)

  1. 使用winsw工具创建服务:
    <!-- ruoyi-service.xml --> <service> <id>RuoYiAdmin</id> <name>RuoYi Admin Service</name> <description>RuoYi-Vue后端服务</description> <executable>java</executable> <arguments>-Xms512m -Xmx1024m -jar "C:\deploy\ruoyi-admin.jar"</arguments> <logmode>rotate</logmode> </service>
  2. 安装服务:
    winsw.exe install ruoyi-service.xml

4. 前端部署与Nginx配置

4.1 前端项目构建

  1. 安装Node.js 14+和Yarn
  2. 修改配置(ruoyi-ui/vue.config.js):
    devServer: { port: 80, proxy: { '/prod-api': { target: 'http://localhost:8080', changeOrigin: true, pathRewrite: { '^/prod-api': '' } } } }
  3. 执行构建:
    yarn install yarn build:prod

4.2 Nginx高级配置

完整nginx.conf配置示例

worker_processes auto; events { worker_connections 1024; use epoll; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; gzip on; gzip_types text/plain text/css application/json application/javascript text/xml; server { listen 8800; server_name your-domain.com; # 前端静态资源 location / { root /path/to/ruoyi-ui/dist; index index.html index.htm; try_files $uri $uri/ /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; proxy_connect_timeout 60s; proxy_read_timeout 600s; proxy_send_timeout 600s; } # 静态资源缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; access_log off; } } }

性能优化关键参数

  • worker_processes: 设置为CPU核心数
  • worker_connections: 每个worker的最大连接数
  • gzip: 启用压缩减少传输量
  • proxy_timeout: 调整API超时时间

5. 系统集成与验证

5.1 服务启动顺序

  1. Redis服务
  2. 后端Java服务
  3. Nginx服务

验证命令:

# 检查Redis redis-cli ping # 检查Java进程 jps -l # 检查Nginx tasklist /fi "imagename eq nginx.exe"

5.2 完整测试流程

  1. 验证API接口:
    curl -X GET "http://localhost:8080/captchaImage" -H "accept: */*"
  2. 访问前端页面:
    http://localhost:8800
  3. 登录测试(默认账号admin/admin123)

常见问题排查表

问题检查点解决方案
验证码不显示Redis连接检查密码和端口配置
接口404错误Nginx代理配置确认/prod-api路径匹配
静态资源加载失败文件权限确保IIS或Nginx有目录读取权限

6. 安全加固与维护

6.1 基础安全配置

  1. 修改默认密码:
    • Redis密码
    • 数据库密码(如果使用MySQL)
    • 管理员账号密码
  2. 禁用不必要的接口:
    # application.yml swagger: enabled: false
  3. 配置HTTPS(可选):
    ssl_certificate cert.pem; ssl_certificate_key cert.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m;

6.2 日常维护脚本

日志清理脚本(clean_logs.bat):

@echo off forfiles /p "C:\logs" /m *.log /d -30 /c "cmd /c del @path"

服务监控脚本(check_service.bat):

@echo off sc query Redis_RuoYi | find "RUNNING" > nul if %errorlevel% neq 0 ( echo Redis服务未运行,正在启动... net start Redis_RuoYi )

数据库备份脚本(建议使用Windows任务计划定期执行):

mysqldump -u root -p your_password ruoyi > C:\backup\ruoyi_%date:~0,4%%date:~5,2%%date:~8,2%.sql
http://www.rkmt.cn/news/1418223.html

相关文章:

  • Unity崩了转UE5?一个独立开发者的真实踩坑与避坑全记录
  • 3大核心机制深度解析:BetterNCM-Installer的Rust GUI架构设计与Windows系统集成
  • playwright工具(四)codex的浏览器插件
  • 土地利用模拟避坑指南:为什么你的IDRISI CA-Markov模型精度总是不达标?
  • CANN graph-autofusion 框架——算子自动融合原理与实战
  • 2026年华南地区高品质长款鹅绒服品牌深度解析与选购指南 - 2026年企业资讯
  • 暗影精灵8装Ubuntu双系统,我踩过的坑你别再踩了(Win11+RTX3060保姆级避坑指南)
  • 用JsonUtility在Unity里做个简易存档系统:5分钟搞定角色位置和状态保存
  • Unlock Music终极指南:3分钟掌握浏览器端音乐解锁神器
  • 导热硅脂选型中的热阻与可靠性问题分析
  • 025、Transformer与注意力机制简介
  • Jarvis coding Agent GUI
  • 3大核心技巧:用vim-plug打造极致开发效率的插件管理器生态
  • 你以为ERP只是记账?错过这五个功能每年多花十几万
  • 对比直接使用官方API体验Taotoken在多模型切换与成本上的优势
  • 避坑指南:Allan方差分析陀螺数据的5个常见误区与正确解读方法
  • CentOS 7离线安装Chrome踩坑记:手把手解决libvulkan和字体依赖,附完整离线包下载清单
  • 千万不要做死了么这样的app-----风险太高
  • 026、模型量化基础:浮点与整数量化
  • 告别臃肿GUI:用feh在Linux终端高效管理图片的5个实用技巧
  • 技术项目避坑指南:如何识别并避免需求、方案与团队的错配
  • but this cluster currently has 8000/8000 maxinum shards open:es shard满
  • Unity数智人项目实战:手把手教你用C++源码实现AI语音交互(IL2CPP后端配置)
  • 从光学干涉到代码:用OpenCV理解MTF算法背后的物理原理(保姆级图解)
  • 027、模型剪枝:结构化与非结构化剪枝
  • 别再折腾了!用Ubuntu 20.04的‘附加驱动’工具一键安装NVIDIA显卡驱动
  • 不止于建模:用同元软控MWORKS.Syslab做数据分析和机器学习,一个被低估的科学计算环境
  • 通过Python快速为你的安卓项目接入Taotoken多模型服务
  • 通知文件加Logo抬头怎么才是透明底?logo抠图去底色秒出
  • 别再傻傻分不清了!Linux系统里lib、lib64、lib32文件夹到底有啥用?