1. 环境准备搭建稳定的部署基础部署RuoYi前后端分离项目前环境准备是重中之重。我遇到过不少开发者因为基础环境配置不当导致后续步骤频繁报错。这里分享我经过多次实战验证的标准化环境搭建方案。首先明确软件版本兼容性非常关键。根据官方文档和实际测试推荐以下组合JDK 1.8注意不要使用OpenJDK 11部分类库存在兼容性问题MySQL 5.7比8.0版本更稳定字符集建议统一为utf8mb4Redis 4.0若依的会话管理依赖Redis低版本可能出问题Nginx 1.18需要支持try_files指令处理前端路由Tomcat 8.5注意不要用Tomcat 9部分Servlet API有变动安装完基础软件后需要特别注意三个配置细节MySQL权限设置创建数据库时建议执行set global validate_password_policy0;降低密码复杂度要求Redis内存配置在redis.conf中修改maxmemory 256mb避免内存溢出防火墙设置开放端口时不仅要放行80/8080还需要开放3306(MySQL)和6379(Redis)端口验证环境是否就绪的快速检查命令# 检查Java版本 java -version # 检查MySQL服务状态 systemctl status mysqld # 测试Redis连接 redis-cli ping2. 后端部署从代码修改到服务启动2.1 关键配置修改实战下载代码后需要修改四个核心配置文件。这里分享我总结的最佳实践pom.xml修改要点!-- 修改打包方式为war -- packagingwar/packaging !-- 添加Tomcat依赖作用域 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-tomcat/artifactId scopeprovided/scope /dependencyapplication.yml的避坑配置# 关键修改点 server: servlet: context-path: / port: 8080 tomcat: uri-encoding: UTF-8 # Redis配置要特别注意连接超时设置 redis: host: 127.0.0.1 port: 6379 timeout: 3000ms # 默认值太短会导致连接超时数据库配置的隐藏坑 在application-druid.yml中建议添加以下参数# 连接池关键配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 testWhileIdle: true # 必须开启空闲检测2.2 打包与部署技巧打包时常见两个问题依赖下载失败建议先执行mvn clean install -DskipTestsWar包过大通过exclusions排除不必要的依赖部署到Tomcat时要注意# 先停止旧服务 ./shutdown.sh # 删除旧war包和解压目录 rm -rf ../webapps/ruoyi-admin* # 上传新war包后启动 ./startup.sh # 实时查看日志 tail -f ../logs/catalina.out验证后端是否启动成功的终极方法# 检查端口占用 netstat -tlnp | grep 8080 # 测试接口 curl http://localhost:8080/captchaImage3. 前端部署Nginx配置的艺术3.1 前端打包的隐藏选项使用npm构建时推荐添加参数提高打包成功率# 使用淘宝源加速 npm install --registryhttps://registry.npmmirror.com # 生产环境构建 npm run build:prod -- --modern构建完成后必须在dist目录下创建WEB-INF/web.xml?xml version1.0 encodingUTF-8? web-app error-page error-code404/error-code location/index.html/location /error-page /web-app3.2 Nginx高可用配置方案这是我优化过的nginx.conf配置模板server { listen 80; server_name your-domain.com; # 静态资源配置 location / { root /home/ruoyi/projects/ruoyi-ui; try_files $uri $uri/ /index.html; # 开启gzip压缩 gzip on; gzip_types text/plain application/javascript application/x-javascript text/css; } # 接口代理配置 location /prod-api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60s; # 适当延长超时 proxy_read_timeout 300s; # 解决413请求实体过大问题 client_max_body_size 50m; } # 错误页面处理 error_page 500 502 503 504 /50x.html; }启动Nginx后验证配置的正确方法# 测试配置语法 nginx -t # 平滑重启 nginx -s reload # 查看进程 ps aux | grep nginx4. 避坑指南血泪经验总结4.1 验证码不显示的终极解决方案遇到验证码问题时按这个顺序排查检查Redis连接是否正常验证后端/captchaImage接口是否返回图片流查看浏览器控制台是否有跨域错误确保Nginx配置中/prod-api/路径代理正确常见错误案例Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379解决方案是在application.yml中增加lettuce: pool: max-active: 8 max-wait: -1ms4.2 404错误的深度处理当出现404错误时重点检查三个地方Tomcat的server.xml配置Context docBase/usr/local/tomcat/webapps/ruoyi-admin path/ reloadabletrue/Spring Boot的上下文路径设置server.servlet.context-path/前端axios的baseURL配置// 确保与Nginx配置一致 axios.defaults.baseURL /prod-api4.3 性能优化建议经过压力测试后给出的优化方案Tomcat调优# 在catalina.sh中添加 JAVA_OPTS-server -Xms1024m -Xmx2048m -XX:MaxMetaspaceSize512mMySQL优化-- 为ruoyi-vue的表添加关键索引 ALTER TABLE sys_logininfor ADD INDEX idx_login_time (login_time); ALTER TABLE sys_oper_log ADD INDEX idx_oper_time (oper_time);Redis缓存配置# 在application.yml中增加 spring: cache: type: redis redis: time-to-live: 3600000 # 1小时过期5. 高级部署方案5.1 多环境配置管理推荐使用profile机制管理不同环境# application-dev.yml spring: profiles: active: dev redis: host: dev-redis.example.com # application-prod.yml spring: profiles: active: prod redis: host: 127.0.0.1打包时指定环境mvn package -Pprod5.2 容器化部署方案Docker部署的完整流程构建后端镜像FROM openjdk:8-jdk COPY target/ruoyi-admin.war /app.war ENTRYPOINT [java,-jar,/app.war]前端Nginx配置FROM nginx:1.18 COPY dist/ /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf启动命令docker-compose up -d5.3 监控与维护推荐的监控方案组合Spring Boot Actuatordependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependencyPrometheus监控配置management: endpoints: web: exposure: include: * metrics: tags: application: ruoyi-admin日志收集方案!-- logback-spring.xml配置 -- appender nameELK classnet.logstash.logback.appender.LogstashTcpSocketAppender destination127.0.0.1:5000/destination /appender
RuoYi若依前后端分离版war包部署实战:从环境准备到避坑指南
发布时间:2026/6/29 9:53:30
1. 环境准备搭建稳定的部署基础部署RuoYi前后端分离项目前环境准备是重中之重。我遇到过不少开发者因为基础环境配置不当导致后续步骤频繁报错。这里分享我经过多次实战验证的标准化环境搭建方案。首先明确软件版本兼容性非常关键。根据官方文档和实际测试推荐以下组合JDK 1.8注意不要使用OpenJDK 11部分类库存在兼容性问题MySQL 5.7比8.0版本更稳定字符集建议统一为utf8mb4Redis 4.0若依的会话管理依赖Redis低版本可能出问题Nginx 1.18需要支持try_files指令处理前端路由Tomcat 8.5注意不要用Tomcat 9部分Servlet API有变动安装完基础软件后需要特别注意三个配置细节MySQL权限设置创建数据库时建议执行set global validate_password_policy0;降低密码复杂度要求Redis内存配置在redis.conf中修改maxmemory 256mb避免内存溢出防火墙设置开放端口时不仅要放行80/8080还需要开放3306(MySQL)和6379(Redis)端口验证环境是否就绪的快速检查命令# 检查Java版本 java -version # 检查MySQL服务状态 systemctl status mysqld # 测试Redis连接 redis-cli ping2. 后端部署从代码修改到服务启动2.1 关键配置修改实战下载代码后需要修改四个核心配置文件。这里分享我总结的最佳实践pom.xml修改要点!-- 修改打包方式为war -- packagingwar/packaging !-- 添加Tomcat依赖作用域 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-tomcat/artifactId scopeprovided/scope /dependencyapplication.yml的避坑配置# 关键修改点 server: servlet: context-path: / port: 8080 tomcat: uri-encoding: UTF-8 # Redis配置要特别注意连接超时设置 redis: host: 127.0.0.1 port: 6379 timeout: 3000ms # 默认值太短会导致连接超时数据库配置的隐藏坑 在application-druid.yml中建议添加以下参数# 连接池关键配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 testWhileIdle: true # 必须开启空闲检测2.2 打包与部署技巧打包时常见两个问题依赖下载失败建议先执行mvn clean install -DskipTestsWar包过大通过exclusions排除不必要的依赖部署到Tomcat时要注意# 先停止旧服务 ./shutdown.sh # 删除旧war包和解压目录 rm -rf ../webapps/ruoyi-admin* # 上传新war包后启动 ./startup.sh # 实时查看日志 tail -f ../logs/catalina.out验证后端是否启动成功的终极方法# 检查端口占用 netstat -tlnp | grep 8080 # 测试接口 curl http://localhost:8080/captchaImage3. 前端部署Nginx配置的艺术3.1 前端打包的隐藏选项使用npm构建时推荐添加参数提高打包成功率# 使用淘宝源加速 npm install --registryhttps://registry.npmmirror.com # 生产环境构建 npm run build:prod -- --modern构建完成后必须在dist目录下创建WEB-INF/web.xml?xml version1.0 encodingUTF-8? web-app error-page error-code404/error-code location/index.html/location /error-page /web-app3.2 Nginx高可用配置方案这是我优化过的nginx.conf配置模板server { listen 80; server_name your-domain.com; # 静态资源配置 location / { root /home/ruoyi/projects/ruoyi-ui; try_files $uri $uri/ /index.html; # 开启gzip压缩 gzip on; gzip_types text/plain application/javascript application/x-javascript text/css; } # 接口代理配置 location /prod-api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60s; # 适当延长超时 proxy_read_timeout 300s; # 解决413请求实体过大问题 client_max_body_size 50m; } # 错误页面处理 error_page 500 502 503 504 /50x.html; }启动Nginx后验证配置的正确方法# 测试配置语法 nginx -t # 平滑重启 nginx -s reload # 查看进程 ps aux | grep nginx4. 避坑指南血泪经验总结4.1 验证码不显示的终极解决方案遇到验证码问题时按这个顺序排查检查Redis连接是否正常验证后端/captchaImage接口是否返回图片流查看浏览器控制台是否有跨域错误确保Nginx配置中/prod-api/路径代理正确常见错误案例Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379解决方案是在application.yml中增加lettuce: pool: max-active: 8 max-wait: -1ms4.2 404错误的深度处理当出现404错误时重点检查三个地方Tomcat的server.xml配置Context docBase/usr/local/tomcat/webapps/ruoyi-admin path/ reloadabletrue/Spring Boot的上下文路径设置server.servlet.context-path/前端axios的baseURL配置// 确保与Nginx配置一致 axios.defaults.baseURL /prod-api4.3 性能优化建议经过压力测试后给出的优化方案Tomcat调优# 在catalina.sh中添加 JAVA_OPTS-server -Xms1024m -Xmx2048m -XX:MaxMetaspaceSize512mMySQL优化-- 为ruoyi-vue的表添加关键索引 ALTER TABLE sys_logininfor ADD INDEX idx_login_time (login_time); ALTER TABLE sys_oper_log ADD INDEX idx_oper_time (oper_time);Redis缓存配置# 在application.yml中增加 spring: cache: type: redis redis: time-to-live: 3600000 # 1小时过期5. 高级部署方案5.1 多环境配置管理推荐使用profile机制管理不同环境# application-dev.yml spring: profiles: active: dev redis: host: dev-redis.example.com # application-prod.yml spring: profiles: active: prod redis: host: 127.0.0.1打包时指定环境mvn package -Pprod5.2 容器化部署方案Docker部署的完整流程构建后端镜像FROM openjdk:8-jdk COPY target/ruoyi-admin.war /app.war ENTRYPOINT [java,-jar,/app.war]前端Nginx配置FROM nginx:1.18 COPY dist/ /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf启动命令docker-compose up -d5.3 监控与维护推荐的监控方案组合Spring Boot Actuatordependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependencyPrometheus监控配置management: endpoints: web: exposure: include: * metrics: tags: application: ruoyi-admin日志收集方案!-- logback-spring.xml配置 -- appender nameELK classnet.logstash.logback.appender.LogstashTcpSocketAppender destination127.0.0.1:5000/destination /appender