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

若依前后端分离系统生产环境部署:从零到上线的保姆级教程

若依前后端分离系统生产环境部署实战指南引言为什么选择若依框架对于刚接触企业级开发的新手来说若依(RuoYi)框架无疑是一个绝佳的起点。这个基于Spring Boot和Vue.js的前后端分离架构不仅提供了完善的权限管理、代码生成等基础功能模块更以其清晰的文档和活跃的社区支持著称。但很多开发者在本地开发测试后往往在生产环境部署环节遇到各种水土不服的问题——从环境配置冲突到Nginx转发规则设置每一步都可能成为拦路虎。本文将带你从零开始用最接地气的方式完成若依系统在生产环境(Linux服务器)的完整部署。不同于简单的步骤罗列我会重点讲解每个环节的技术原理和避坑要点比如为什么MySQL 8.0必须设置时区参数如何正确处理前后端跨域问题Nginx配置中那些容易被忽略的性能调优参数生产环境日志管理的正确姿势无论你是刚接触Linux的开发者还是需要快速搭建内部管理系统的技术负责人这篇指南都能提供可直接复用的解决方案。让我们跳过那些华而不实的理论直接进入实战环节。1. 生产环境基础搭建1.1 服务器环境准备在开始部署前我们需要确保服务器具备以下基础环境以CentOS 7为例# 更新系统包 sudo yum update -y # 安装常用工具 sudo yum install -y wget curl vim git unzip关键组件版本要求组件最低版本推荐版本安装方式建议JDK1.811yum安装OpenJDKMySQL5.78.0官方二进制包安装Redis4.06.2yum安装Nginx1.181.22官方仓库安装Node.js12.x16.xnvm管理多版本提示生产环境强烈建议使用LTS(Long-Term Support)版本的软件避免使用最新非稳定版本1.2 数据库配置优化MySQL安装后需要进行针对性优化-- 创建专用数据库用户 CREATE USER ruoyi% IDENTIFIED BY StrongPassword123!; GRANT ALL PRIVILEGES ON ry-vue.* TO ruoyi%; FLUSH PRIVILEGES; -- 重要配置项修改my.cnf [mysqld] default-time-zone 8:00 # 必须设置时区 character-set-server utf8mb4 collation-server utf8mb4_general_ci常见问题排查连接数不足max_connections500内存溢出合理设置innodb_buffer_pool_size时区错误确保JDBC URL包含serverTimezoneAsia/Shanghai2. 若依系统配置调整2.1 后端工程关键配置修改ruoyi-admin模块中的配置文件application-druid.yml- 数据库连接池配置spring: datasource: druid: url: jdbc:mysql://db-server:3306/ry-vue?useSSLfalsecharacterEncodingutf8 username: ruoyi password: StrongPassword123! initialSize: 5 # 初始连接数 maxActive: 20 # 最大连接数 minIdle: 5 # 最小空闲连接application.yml- 服务端配置server: port: 19393 servlet: context-path: / tomcat: max-threads: 200 # 线程池大小 max-connections: 1000 # 最大连接数 # 生产环境日志级别调整为INFO logging: level: root: info com.ruoyi: debug2.2 前端工程适配修改在ruoyi-ui中调整Vue配置vue.config.js- 代理和打包设置module.exports { devServer: { port: 80, proxy: { /prod-api: { target: http://backend-server:19393, changeOrigin: true, pathRewrite: { ^/prod-api: } } } }, publicPath: ./, // 关键生产环境静态资源路径 outputDir: dist, assetsDir: static, productionSourceMap: false // 关闭sourcemap提升安全性 }环境变量配置.env.productionVUE_APP_BASE_API /prod-api VUE_APP_ENV production3. 构建与部署流程3.1 后端打包与优化使用Maven进行生产环境打包# 跳过测试并启用生产配置 mvn clean package -DskipTests -Pprod # 生成的jar包路径 ls ruoyi-admin/target/ruoyi-admin.jar启动脚本示例startup.sh#!/bin/bash # 设置JVM参数 JAVA_OPTS-server -Xms512m -Xmx1024m -XX:MetaspaceSize128m -XX:MaxMetaspaceSize512m # 启动应用 nohup java ${JAVA_OPTS} -jar ruoyi-admin.jar app.log 21 # 监控日志 tail -f app.log | grep --color -E ERROR|WARN|INFO3.2 前端资源构建使用npm构建生产环境包# 安装依赖 npm install --registryhttps://registry.npmmirror.com # 构建生产包 npm run build:prod # 构建结果位于dist目录 ls dist构建优化技巧使用--modern模式构建现代浏览器包添加BROWSERLIST环境变量控制兼容范围配置CDN加速静态资源加载4. Nginx高级配置4.1 完整配置示例worker_processes auto; # 自动匹配CPU核心数 events { worker_connections 1024; use epoll; multi_accept on; } http { include mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; keepalive_timeout 65; gzip on; gzip_min_length 1k; gzip_types text/plain application/javascript application/x-javascript text/css; server { listen 80; server_name your-domain.com; root /var/www/ruoyi/dist; # 前端路由处理 location / { try_files $uri $uri/ /index.html; add_header Cache-Control no-cache; } # 后端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|woff2)$ { expires 365d; access_log off; } } }4.2 性能调优关键点连接池优化worker_processes: CPU核心数worker_connections: 每个worker最大连接数缓存策略静态资源设置长期缓存HTML文件禁用缓存安全加固隐藏Nginx版本信息限制HTTP方法配置CSP策略5. 系统监控与维护5.1 服务健康检查使用Spring Boot Actuator进行健康监控# application.yml添加 management: endpoints: web: exposure: include: health,info,metrics endpoint: health: show-details: always通过Nginx暴露监控端点location /actuator/ { proxy_pass http://127.0.0.1:19393/actuator/; auth_basic Restricted; auth_basic_user_file /etc/nginx/.htpasswd; }5.2 日志管理方案日志收集架构Filebeat收集日志Logstash进行过滤处理Elasticsearch存储索引Kibana可视化展示关键日志路径应用日志nohup.out或app.logNginx访问日志/var/log/nginx/access.logNginx错误日志/var/log/nginx/error.log5.3 自动化部署进阶使用Shell脚本实现一键部署#!/bin/bash # 停止现有服务 PID$(ps -ef | grep ruoyi-admin.jar | grep -v grep | awk {print $2}) if [ -n $PID ]; then kill -9 $PID fi # 备份旧版本 TIMESTAMP$(date %Y%m%d%H%M%S) mv /opt/ruoyi/ruoyi-admin.jar /opt/ruoyi/backup/ruoyi-admin-$TIMESTAMP.jar # 部署新版本 cp target/ruoyi-admin.jar /opt/ruoyi/ nohup java -jar /opt/ruoyi/ruoyi-admin.jar /opt/ruoyi/logs/app.log 21 对于更复杂的场景可以考虑使用Jenkins实现CI/CD流水线通过Docker容器化部署采用Kubernetes进行集群管理

相关文章:

若依前后端分离系统生产环境部署:从零到上线的保姆级教程

若依前后端分离系统生产环境部署实战指南 引言:为什么选择若依框架? 对于刚接触企业级开发的新手来说,若依(RuoYi)框架无疑是一个绝佳的起点。这个基于Spring Boot和Vue.js的前后端分离架构,不仅提供了完善的权限管理、代码生成等…...

从音乐均衡器到语音降噪:深入浅出玩转数字谐振器设计与MATLAB仿真

从音乐均衡器到语音降噪:深入浅出玩转数字谐振器设计与MATLAB仿真 你是否曾在调整音乐播放器的均衡器时好奇——那些滑动条如何精确控制特定频段的声音强弱?这背后隐藏的数字信号处理魔法,正是我们今天要探索的数字谐振器技术。无论是提取语音…...

保姆级教程:在Jeecg-Vue3项目中快速集成SuperQuery高级查询组件(含完整配置代码)

Jeecg-Vue3项目实战:SuperQuery高级查询组件深度集成指南 在后台管理系统开发中,高效的数据筛选功能直接影响用户体验和操作效率。Jeecg-Vue3作为企业级快速开发框架,其内置的SuperQuery组件能够帮助开发者快速构建复杂的多条件查询面板。本文…...

Windows系统下Python 3.11环境配置全攻略

1. Python 3.11环境配置前的准备工作 在开始安装Python 3.11之前,我们需要做一些准备工作。首先确认你的Windows系统版本,右键点击"此电脑"选择"属性",在系统类型中查看是32位还是64位系统。Python 3.11官方已经停止对32…...

IOMMU性能调优全攻略:从基础原理到实战技巧

IOMMU性能调优全攻略:从基础原理到实战技巧 在数据中心和云计算环境中,IOMMU(输入输出内存管理单元)作为硬件辅助虚拟化的关键技术组件,其性能表现直接影响着整个系统的吞吐量和延迟。对于需要处理高并发I/O负载的场景…...

三步修复Windows安全防护:零基础系统工具恢复指南

三步修复Windows安全防护:零基础系统工具恢复指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirrors/wi/wind…...

直流电机选型避坑指南:STM32项目为什么推荐TB6612而不是L298N?

STM32直流电机驱动芯片深度对比:TB6612与L298N实战选型指南 在嵌入式开发领域,直流电机驱动方案的选择往往决定了整个项目的稳定性和能效表现。面对市面上众多的驱动芯片,如何根据项目需求做出最优选择?本文将基于实测数据&#x…...

【数据结构与算法】最小生成树Kruskal

1.#include <iostream> #include <algorithm> #include <vector> using namespace std;struct Edge {int u, v, w; // 起点&#xff0c;终点&#xff0c;边权 };vector<Edge> edges; vector<int> parent;// 比较函数&#xff1a;按边权升序排列…...

如何用PortProxyGUI简化Windows端口转发配置

如何用PortProxyGUI简化Windows端口转发配置 【免费下载链接】PortProxyGUI A manager of netsh interface portproxy which is to evaluate TCP/IP port redirect on windows. 项目地址: https://gitcode.com/gh_mirrors/po/PortProxyGUI PortProxyGUI是一款专为Window…...

STM32上如何用串口BREAK中断优雅处理DMX与RDM协议(附完整代码)

STM32串口BREAK中断实现DMX/RDM协议双模通信实战指南 舞台灯光控制系统对实时性和可靠性有着近乎苛刻的要求。作为行业标准的DMX512协议及其扩展协议RDM&#xff0c;承载着数以万计舞台灯具的控制指令。传统基于STM32的软件轮询检测方案常面临响应延迟、误触发等问题&#xff0…...

在 React 中,useRef、ref 属性以及 forwardRef 是处理“引用”(访问 DOM 节点或组件实例)的核心概念

在 React 中&#xff0c;useRef、ref 属性以及 forwardRef 是处理“引用”&#xff08;访问 DOM 节点或组件实例&#xff09;的核心概念。它们经常一起使用&#xff0c;但职责完全不同。以下是它们的核心区别、使用方法及组合示例&#xff1a;1. 核心概念与区别特性ref (属性)u…...

MCP开发环境搭建全攻略(VS Code插件安装避坑白皮书·2024官方认证版)

第一章&#xff1a;MCP开发环境搭建全攻略&#xff08;VS Code插件安装避坑白皮书2024官方认证版&#xff09;前置依赖检查与系统准备 在安装任何 MCP 相关插件前&#xff0c;请确保已安装以下基础组件&#xff1a;VS Code 1.85&#xff08;推荐 1.87.2&#xff09;、Node.js 1…...

GNSS数据处理效率翻倍:FileZilla+crx2rnx自动化脚本一键下载转换RINEX观测值

GNSS数据处理效率革命&#xff1a;构建全自动RINEX观测值处理流水线 凌晨三点的实验室里&#xff0c;李工程师盯着屏幕上堆积如山的.crx文件叹了口气——这已经是本周第三次通宵处理GNSS观测数据了。对于需要处理多站点、长时间序列GNSS数据的科研人员和工程师而言&#xff0c;…...

Python实现简易可信度推理引擎:用20行代码复现经典CF模型

Python实现简易可信度推理引擎&#xff1a;用20行代码复现经典CF模型 在金融风控领域&#xff0c;规则引擎的可信度评估直接影响着决策的准确性。想象一下&#xff0c;当系统需要同时处理多条相互矛盾的交易警报时&#xff0c;如何量化每条证据的可信程度&#xff1f;这正是可…...

AHT20传感器数据漂移?STM32硬件I2C与软件模拟的稳定性对比测试

STM32硬件I2C与软件模拟I2C在AHT20传感器应用中的稳定性深度解析 工业级环境监测系统对温湿度数据的可靠性有着严苛要求。AHT20作为一款高精度温湿度传感器&#xff0c;其数据采集的稳定性直接关系到整个系统的可信度。本文将深入探讨STM32平台下硬件I2C与GPIO模拟I2C两种实现方…...

NetGen:高质量网格生成的科学计算解决方案

NetGen&#xff1a;高质量网格生成的科学计算解决方案 【免费下载链接】netgen netgen: 是一个自动的3D四面体网格生成器&#xff0c;适用于从构造实体几何&#xff08;CSG&#xff09;或STL文件格式的边界表示&#xff08;BRep&#xff09;生成网格。 项目地址: https://git…...

华为AR路由器VRRP配置实战:从单点故障到流量黑洞,一个实验全搞定

华为AR路由器VRRP高可用实战&#xff1a;规避单点故障与流量黑洞的深度解析 在现网架构中&#xff0c;网关设备的可靠性直接决定了整个网络的稳定性。想象一下这样的场景&#xff1a;当核心网关突然宕机&#xff0c;整个办公区的网络瞬间瘫痪&#xff0c;业务系统中断&#xff…...

告别Transformer!用PyTorch从零实现MLP-Mixer图像分类(附完整代码与调参技巧)

告别Transformer&#xff01;用PyTorch从零实现MLP-Mixer图像分类&#xff08;附完整代码与调参技巧&#xff09; 在计算机视觉领域&#xff0c;Transformer架构近年来风头无两&#xff0c;但你是否想过——仅用多层感知机&#xff08;MLP&#xff09;也能构建高性能视觉模型&a…...

图像处理小技巧:如何用Photoshop和Python模拟近红外摄影效果

图像处理小技巧&#xff1a;如何用Photoshop和Python模拟近红外摄影效果 近红外摄影以其独特的视觉效果在艺术创作和科学分析领域广受欢迎。传统的近红外摄影需要特殊滤镜和改装相机&#xff0c;但通过数字图像处理技术&#xff0c;我们完全可以在不改变硬件设备的情况下&#…...

给CUDA新手的3DGS代码导读:从forward.cu到backward.cu,一步步拆解渲染流程

给CUDA新手的3DGS代码导读&#xff1a;从forward.cu到backward.cu&#xff0c;一步步拆解渲染流程 第一次看到3D Gaussian Splatting&#xff08;3DGS&#xff09;的CUDA代码时&#xff0c;我盯着那些复杂的核函数和内存操作发了半小时呆。作为从PyTorch转型过来的研究者&#…...

ArcSWAT实战避坑指南 | 从数据库配置到模型运行,详解常见报错与高效解决方案

1. ArcSWAT入门避坑&#xff1a;从安装到首次运行的关键准备 第一次接触ArcSWAT的水文研究者&#xff0c;往往会在安装环节就踩坑。我见过太多人因为版本兼容性问题&#xff0c;导致后续模型根本无法启动。这里分享几个血泪教训&#xff1a; ArcGIS版本选择是首要关键。虽然官方…...

WPF图片处理避坑指南:Image控件Stretch属性的4种模式详解(含效果对比图)

WPF图片处理避坑指南&#xff1a;Image控件Stretch属性的4种模式详解 刚接触WPF开发的工程师们&#xff0c;是否经常遇到图片显示变形、比例失调的困扰&#xff1f;Image控件的Stretch属性看似简单&#xff0c;却藏着不少设计哲学。今天我们就来彻底拆解这个影响图片显示效果的…...

Next AI Draw.io:从自然语言到专业图表,AI如何重塑技术绘图工作流

1. 当技术绘图遇上AI&#xff1a;一场效率革命 上周三凌晨两点&#xff0c;我还在为一个客户紧急赶制系统架构图。传统绘图工具里反复拖拽调整的机械操作&#xff0c;让我的咖啡消耗量达到了平日的三倍。直到偶然发现Next AI Draw.io这个神器——用一句"生成包含负载均衡和…...

一文讲透|一键生成论文工具:2026年最新测评与推荐大全

2026年真正好用的一键生成论文工具&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。…...

告别低效写作:盘点2026年标杆级的AI论文网站

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文网站&#xff0c;覆盖选题构思、文献整理、内容生成、格式排版全流程&#xff0c;帮你高效搞定论文写作。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首选&#xff…...

数字中国新引擎:产业经济大脑的全景式解构与深度洞察(PPT)

“中国经济高质量发展的核心命题&#xff0c;已从‘有没有’转向‘好不好’。而要回答‘好不好’&#xff0c;就必须构建一套能看清、看准、看远的‘经济慧眼’。”在数字经济成为国家战略主战场的今天&#xff0c;地方政府正面临着前所未有的治理挑战&#xff1a;宏观政策如何…...

从零构建一个轻量级WebSocket服务器:基于libwebsockets的实战与事件循环剖析

从零构建一个轻量级WebSocket服务器&#xff1a;基于libwebsockets的实战与事件循环剖析 在当今实时应用盛行的时代&#xff0c;WebSocket技术已成为构建即时通讯、实时数据推送等功能的基石。不同于传统的HTTP请求-响应模式&#xff0c;WebSocket提供了全双工通信能力&#xf…...

Win11Debloat系统优化工具:从问题诊断到长效维护的完整实践指南

Win11Debloat系统优化工具&#xff1a;从问题诊断到长效维护的完整实践指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改…...

FPGA设计避坑指南:手把手教你搞定跨时钟域信号同步(附Verilog代码)

FPGA设计避坑指南&#xff1a;跨时钟域信号同步的工程实践与Verilog实现 在FPGA开发中&#xff0c;跨时钟域信号同步问题就像电路设计中的"暗礁"&#xff0c;稍有不慎就会导致整个系统崩溃。想象一下这样的场景&#xff1a;你的设计在仿真阶段完美运行&#xff0c;但…...

从Kinect到奥比中光:为什么我的深度学习项目选了Gemini 2L?附Python SDK踩坑实录

从Kinect到奥比中光&#xff1a;为什么我的深度学习项目选了Gemini 2L&#xff1f;附Python SDK踩坑实录 深度视觉技术正在重塑人机交互的边界。当我的团队启动一个需要实时三维重建的农业机器人项目时&#xff0c;我们面临着一个关键抉择&#xff1a;在众多深度相机品牌中&…...