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

若依前后端分离系统生产环境部署实战指南

1. 环境准备:搭建部署的基石

部署若依前后端分离系统到生产环境,第一步就是做好环境准备。这就像盖房子前要打地基一样,基础不牢后续所有工作都可能白费。我在实际项目中遇到过不少因为环境问题导致的部署失败案例,所以这部分内容我会结合踩坑经验详细说明。

服务器端需要安装四个核心组件:JDK、MySQL、Redis和Nginx。对于JDK版本,强烈建议使用1.8版本,虽然新版本也能运行,但1.8的兼容性最好。安装完成后记得配置JAVA_HOME环境变量,这个经常被新手忽略。MySQL推荐使用8.0版本,安装时要注意设置字符集为utf8mb4,否则中文内容可能会出现乱码。Redis我习惯用5.0.4版本,这个版本稳定性和性能都不错。Nginx建议选择LTS长期支持版本,避免使用太新的测试版。

本地开发环境需要准备两个工具:Node.js和Vue.js插件。Node.js版本建议选择16.x LTS版本,太老的版本可能不支持某些新特性,太新的版本又可能有不兼容问题。在IDEA中安装Vue.js插件时,要注意插件版本与IDEA版本的兼容性,我遇到过因为版本不匹配导致的前端编译问题。

提示:所有软件安装完成后,建议先做个简单的功能测试,确认基本功能正常后再进行后续步骤。

2. 数据库配置与数据导入

数据库是系统的核心,配置不当会导致各种奇怪的问题。首先要在MySQL中创建一个新数据库,字符集一定要选utf8mb4,排序规则用utf8mb4_general_ci。创建数据库用户时,要确保该用户有远程连接权限,这个权限经常被忘记设置。

数据导入有两种方式:SQL文件导入和使用Navicat等工具导入。我更喜欢用命令行导入,虽然看起来复杂但更可靠。具体命令是:

mysql -u用户名 -p密码 数据库名 < ruoyi.sql

在application-druid.yml中配置数据库连接时,有几个关键参数需要注意:

  • useSSL=false:除非你配置了SSL证书,否则一定要设为false
  • serverTimezone=Asia/Shanghai:MySQL 8.0必须设置时区
  • characterEncoding=utf8:确保字符编码正确

我曾经遇到过因为时区设置不对导致的时间字段值错误的问题,调试了很久才发现是这个原因。所以这些细节配置一定要检查再三。

3. 前后端配置修改详解

3.1 后端配置调整

后端主要有两个配置文件需要修改:application.yml和application-druid.yml。在application.yml中,除了修改server.port端口号外,还有一些生产环境特有的配置需要注意:

spring: profiles: active: prod # 必须设置为prod servlet: multipart: max-file-size: 10MB max-request-size: 100MB

文件上传大小限制要根据实际需求调整。如果系统需要处理大文件上传,这两个值要相应增大。但要注意,Nginx中也有对应的client_max_body_size配置需要同步修改。

3.2 前端配置调整

前端配置主要在vue.config.js文件中。这里需要修改三个关键配置:

  1. devServer.port:开发服务器端口
  2. devServer.proxy:API代理配置
  3. publicPath:静态资源路径

生产环境配置示例:

module.exports = { publicPath: '/', devServer: { port: 9393, proxy: { '/prod-api': { target: 'http://your-server-ip:19393', changeOrigin: true, pathRewrite: { '^/prod-api': '' } } } } }

特别注意proxy配置中的target地址要和后端实际地址一致,pathRewrite规则也要正确设置,否则会出现404错误。

4. 项目打包与优化

4.1 后端打包技巧

后端使用Maven打包时,建议先执行clean再package,避免缓存导致的问题:

mvn clean package -DskipTests

打包完成后,可以在ruoyi-admin/target目录下找到生成的jar包。我习惯在打包前先运行测试用例,确保没有明显问题。但在生产环境打包时加上-DskipTests参数可以跳过测试,加快打包速度。

4.2 前端打包优化

前端打包有几个优化点可以提高性能:

  1. 开启Gzip压缩
  2. 配置CDN加速
  3. 启用production模式

在vue.config.js中添加如下配置:

configureWebpack: { externals: { 'vue': 'Vue', 'vue-router': 'VueRouter', 'axios': 'axios' } }

这样可以将这些常用库从打包文件中排除,通过CDN引入,显著减小打包体积。实测下来,优化后的包体积可以减少30%以上。

5. 服务器部署实战

5.1 文件上传与目录规划

将打包好的文件上传到服务器时,建议建立规范的目录结构。我通常这样组织:

/usr/local/project/ ├── ruoyi │ ├── backend # 存放后端jar包 │ ├── frontend # 存放前端静态文件 │ └── logs # 存放日志文件

使用scp命令上传文件:

scp ruoyi-admin.jar user@server:/usr/local/project/ruoyi/backend/ scp -r dist/* user@server:/usr/local/project/ruoyi/frontend/

5.2 Nginx配置详解

Nginx配置是前后端分离部署的关键。下面是一个完整的生产环境配置示例:

server { listen 80; server_name your-domain.com; # 前端静态文件 location / { root /usr/local/project/ruoyi/frontend; try_files $uri $uri/ /index.html; expires 30d; } # 后端API代理 location /prod-api/ { proxy_pass http://127.0.0.1:19393/; 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; } # 静态资源缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 365d; access_log off; } }

这个配置做了几点优化:

  1. 静态资源长期缓存
  2. API请求超时时间延长
  3. 开启gzip压缩
  4. 禁用静态资源访问日志

6. 系统启动与监控

6.1 后端服务启动

生产环境建议使用systemd管理后端服务。创建/etc/systemd/system/ruoyi.service文件:

[Unit] Description=RuoYi Service After=syslog.target network.target [Service] User=www Group=www ExecStart=/usr/bin/java -jar /usr/local/project/ruoyi/backend/ruoyi-admin.jar SuccessExitStatus=143 Restart=always RestartSec=30 [Install] WantedBy=multi-user.target

然后执行:

systemctl daemon-reload systemctl start ruoyi systemctl enable ruoyi

这种方式比直接nohup启动更可靠,可以自动重启崩溃的服务,还能方便地查看日志。

6.2 日志监控配置

生产环境必须配置完善的日志监控。在application-prod.yml中添加:

logging: file: name: /usr/local/project/ruoyi/logs/ruoyi.log level: root: info org.springframework: warn com.ruoyi: debug

建议使用logrotate管理日志文件,防止日志文件过大。创建/etc/logrotate.d/ruoyi配置文件:

/usr/local/project/ruoyi/logs/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 www www }

7. 常见问题排查

部署过程中难免会遇到各种问题,这里分享几个常见问题的解决方法:

  1. 端口冲突问题:使用netstat -tunlp查看端口占用情况
  2. 数据库连接失败:检查MySQL用户权限和防火墙设置
  3. 前端资源404:检查Nginx root配置和文件权限
  4. 跨域问题:确保Nginx代理配置正确

一个实用的排查流程是:

  1. 查看后端日志:tail -f /usr/local/project/ruoyi/logs/ruoyi.log
  2. 检查Nginx访问日志:tail -f /var/log/nginx/access.log
  3. 检查Nginx错误日志:tail -f /var/log/nginx/error.log
  4. 使用curl测试API接口:curl -v http://localhost:19393/

我在实际部署中遇到过前端能访问但所有API请求都返回404的情况,最后发现是Nginx的proxy_pass后面少了个斜杠。这种细节问题往往最难排查,所以一定要仔细检查每个配置项。

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

相关文章:

  • 终极指南:彻底解决Catppuccin Tmux主题的字体缓存问题
  • EasyVtuber终极面捕输入配置:iFacialMocap vs OpenSeeFace对比评测
  • rasterizeHTML.js 终极指南:跨浏览器HTML到Canvas渲染完整教程
  • Java字符串相似度计算:10大算法库终极指南
  • Flutter Riverpod 2.5.1 保姆级避坑指南:从购物车实战到异步状态刷新,手把手教你避开那些文档里没写的坑
  • 智能家居中枢:OpenClaw+gemma-3-12b-it解析自然语言控制指令
  • DSI3协议实战入门:从理论到波形调试的完整指南
  • Cursor AI伴侣配置避坑指南:DeepSeek官方API vs 硅基流动,哪个更适合你?
  • 别再只调参了!深入对比改进A*与DWA融合前后,你的机器人路径规划效果差在哪?
  • 避坑指南:解决Xcode中‘multiple commands produce PrivacyInfo.xcprivacy’编译错误
  • prompt技巧:如何让AI写出我想要的风格的verilog代码?
  • 自动驾驶多传感器融合第一步:手把手教你标定激光雷达与摄像头(附代码思路)
  • cv_unet_image-colorization步骤详解:上传→分析→上色→对比,全流程可视化操作
  • 毕业设计论文写作指导——本科软件系统实现类
  • 告别串口助手!用VOFA+和STM32的DMA串口实现高刷波形监控(附完整工程)
  • 机械识图:第一角投影
  • OpenClaw备份方案:Phi-3-mini自动归档重要文件
  • OpenClaw人人养虾:对话模式
  • OpenClaw人人养虾:iOS Node App
  • 2026年公文降AI工具哪个好?职场人实测3款告诉你选哪个
  • FPGA从入门到精通(5) - 进位链的优化策略与实战应用
  • WuliArt Qwen-Image Turbo代码实例:Gradio自定义UI集成LoRA风格选择器
  • 前端 AI 工程化:Agent Skill 打造项目专属智能助手
  • AI驱动的软件文档闭环:从代码提交到API文档/PRD/测试用例自动生成(实测准确率92.6%,已交付37个生产系统)
  • 书匠策AI:解锁课程论文新境界,让学术创作如虎添翼!
  • 如何压缩 RAR 文件?新手也能秒会的方法
  • 文本三剑客命令手册
  • ArcGIS JS 基础教程(1):地图初始化(含AMD/ESM两种引入方式)
  • hybrid实验
  • 电视盒子刷游戏系统emuelec 辣娃娃战神系统4.7.1-57g-最终版-V2.1(2026更新)