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

若依微服务(RuoYi-Cloud)部署上云实战:Linux服务器+Nginx配置全流程与常见问题排查

若依微服务RuoYi-Cloud部署上云实战Linux服务器Nginx配置全流程与常见问题排查当微服务架构的项目开发接近尾声如何将若依微服务全家桶包括多个后端Jar包、前端Vue项目高效、稳定地部署到Linux云服务器成为每个全栈开发者和运维人员必须面对的挑战。本文将从实战角度出发不仅提供标准部署步骤更会深入探讨生产环境中的关键配置细节和典型问题排查思路帮助您避开那些官方文档中未曾提及的坑。1. 环境准备与基础配置部署若依微服务到Linux服务器前需要确保服务器环境满足以下基础要求操作系统推荐使用CentOS 7.x或Ubuntu 18.04 LTS及以上版本Java环境JDK 1.8必须与开发环境版本一致数据库MySQL 5.7建议使用与开发环境相同的版本缓存服务Redis 5.0注册中心Nacos 2.0.3Web服务器Nginx 1.18提示生产环境强烈建议使用版本管理工具如rbenv、nvm等安装Node.js而非直接使用系统包管理器安装以避免权限问题。1.1 关键服务安装与配置Nacos生产环境配置# 下载Nacos 2.0.3 wget https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.tar.gz tar -zxvf nacos-server-2.0.3.tar.gz cd nacos/conf # 修改集群配置单机模式可跳过 vim cluster.conf # 修改应用配置 vim application.properties关键配置项说明配置项推荐值说明server.port8848保持默认端口nacos.core.auth.enabledtrue生产环境必须开启认证db.num1使用外部MySQL数据库db.url.0jdbc:mysql://127.0.0.1:3306/nacos数据库连接地址db.usernacos数据库用户名db.password强密码数据库密码Redis安全配置# 修改Redis配置文件 vim /etc/redis/redis.conf # 关键配置项 requirepass your_strong_password bind 127.0.0.1 protected-mode yes2. 后端服务部署实战2.1 项目打包与优化在项目根目录执行打包命令前需要特别注意# 清理并打包整个项目跳过测试 mvn clean package -Dmaven.test.skiptrue # 单独打包特定模块 mvn clean package -pl ruoyi-auth -am -Dmaven.test.skiptrue打包完成后各模块的Jar文件会生成在对应模块的target目录下。生产环境部署建议优先确保以下核心服务ruoyi-gatewayAPI网关服务ruoyi-auth认证中心ruoyi-system系统模块ruoyi-monitor监控中心2.2 服务启动脚本编写生产环境推荐使用systemd管理服务以下是一个gateway服务的示例配置# /etc/systemd/system/ruoyi-gateway.service [Unit] DescriptionRuoYi Cloud Gateway Service Afternetwork.target [Service] Typesimple Userappuser WorkingDirectory/opt/ruoyi-cloud ExecStart/usr/bin/java -Xms512m -Xmx512m -jar /opt/ruoyi-cloud/ruoyi-gateway.jar SuccessExitStatus143 Restartalways RestartSec10 EnvironmentNACOS_SERVER127.0.0.1:8848 EnvironmentJAVA_OPTS-Dfile.encodingUTF-8 [Install] WantedBymulti-user.target启动并启用服务sudo systemctl daemon-reload sudo systemctl start ruoyi-gateway sudo systemctl enable ruoyi-gateway2.3 日志管理最佳实践生产环境日志管理建议采用以下方案日志目录结构/var/log/ruoyi-cloud/ ├── gateway │ ├── info.log │ └── error.log ├── auth │ ├── info.log │ └── error.log └── system ├── info.log └── error.logLogback配置示例appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender file/var/log/ruoyi-cloud/${spring.application.name}/info.log/file rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy fileNamePattern/var/log/ruoyi-cloud/${spring.application.name}/info.%d{yyyy-MM-dd}.%i.log/fileNamePattern maxFileSize50MB/maxFileSize maxHistory30/maxHistory totalSizeCap1GB/totalSizeCap /rollingPolicy encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern /encoder /appender3. 前端部署与Nginx配置3.1 Vue项目生产构建在前端项目目录(ruoyi-ui)中执行# 安装依赖建议使用yarn yarn install --production # 构建生产环境代码 yarn build:prod构建完成后dist目录将包含所有静态资源。需要特别注意以下配置vue.config.js中的publicPath必须与Nginx配置匹配.env.production中的API地址必须指向网关服务确保静态资源路径正确避免404错误3.2 Nginx高级配置完整的生产环境Nginx配置示例upstream ruoyi-gateway { server 127.0.0.1:8080; keepalive 64; } server { listen 80; server_name yourdomain.com; # 前端静态资源 location / { root /opt/ruoyi-cloud/dist; index index.html; try_files $uri $uri/ /index.html; } # API代理配置 location /prod-api/ { proxy_pass http://ruoyi-gateway/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 重要WebSocket支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; # 超时设置 proxy_connect_timeout 60s; proxy_read_timeout 600s; proxy_send_timeout 600s; } # 静态资源缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ { root /opt/ruoyi-cloud/dist; expires 365d; access_log off; } # 禁止访问隐藏文件 location ~ /\. { deny all; } }4. 常见问题排查指南4.1 服务启动失败排查流程当某个微服务无法启动时可按以下步骤排查检查日志首先查看服务日志通常位于/var/log/ruoyi-cloud/目录下验证依赖服务# 检查Nacos是否健康 curl http://127.0.0.1:8848/nacos/v1/ns/health/instance?serviceNameruoyi-gateway # 检查Redis连接 redis-cli -h 127.0.0.1 -p 6379 -a yourpassword ping验证端口占用netstat -tulnp | grep 8080检查JVM参数确保内存设置合理避免OOM4.2 前端访问常见问题问题1页面加载但接口请求失败检查浏览器开发者工具中的Network面板确认API请求地址是否正确验证Nginx的/prod-api/路径是否代理到正确的网关地址检查网关服务是否正常运行问题2静态资源404错误确认Nginx配置中的root路径是否正确指向dist目录检查文件权限chown -R nginx:nginx /opt/ruoyi-cloud/dist验证vue.config.js中的publicPath配置4.3 性能优化建议数据库连接池配置# application-prod.yml spring: datasource: druid: initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: falseJVM调优参数# 生产环境推荐配置 java -server -Xms2g -Xmx2g -XX:MetaspaceSize256m \ -XX:MaxMetaspaceSize512m -XX:UseG1GC \ -XX:MaxGCPauseMillis200 -XX:ParallelGCThreads8 \ -XX:ConcGCThreads4 -XX:InitiatingHeapOccupancyPercent70 \ -jar your-application.jarRedis缓存优化合理设置缓存过期时间避免内存溢出对大对象考虑使用压缩// RedisTemplate配置 redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());对热点数据启用本地缓存Caffeine作为二级缓存在实际部署过程中我们发现Nacos的配置管理是最容易出问题的环节。特别是在多环境部署时一定要严格区分dev、test、prod等不同环境的配置。曾经遇到过一个案例测试环境的Redis配置意外覆盖了生产环境导致系统间歇性故障。因此建议在Nacos中为不同环境创建完全独立的命名空间并在服务启动时明确指定-Dspring.cloud.nacos.config.namespaceprod-environment-id

相关文章:

若依微服务(RuoYi-Cloud)部署上云实战:Linux服务器+Nginx配置全流程与常见问题排查

若依微服务(RuoYi-Cloud)部署上云实战:Linux服务器Nginx配置全流程与常见问题排查 当微服务架构的项目开发接近尾声,如何将若依微服务全家桶(包括多个后端Jar包、前端Vue项目)高效、稳定地部署到Linux云服务…...

超级千问语音世界新手指南:如何用自然语言描述生成理想语音

超级千问语音世界新手指南:如何用自然语言描述生成理想语音 1. 引言:开启语音合成新体验 想象一下,你正在为一款独立游戏寻找配音演员。传统方式需要联系配音工作室、试音、反复修改,整个过程耗时耗力。现在,有了超级…...

腾讯文档AI隐藏玩法:用PDF智能阅读功能快速啃完英文论文(实测避坑指南)

腾讯文档AI学术实战:用PDF智能阅读攻克英文文献的高效方法论 第一次接触英文文献时,我被满屏的专业术语和复杂句式彻底击垮——直到发现腾讯文档AI的PDF智能阅读功能。这个看似简单的工具背后,藏着学术工作者梦寐以求的三阶文献处理法&#x…...

GME多模态向量-Qwen2-VL-2B嵌入式应用实战:STM32F103C8T6图像识别系统集成

GME多模态向量-Qwen2-VL-2B嵌入式应用实战:STM32F103C8T6图像识别系统集成 1. 引言 想象一下,一个只有指甲盖大小的电路板,能够看懂摄像头拍下的画面,识别出眼前的物体是猫还是狗,或者判断流水线上的零件是否合格。这…...

2025年IDM激活脚本使用指南:告别试用期烦恼的3种方法

2025年IDM激活脚本使用指南:告别试用期烦恼的3种方法 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager试用期到期而烦…...

零基础玩转Qwen2.5-7B微调:10分钟教会AI说“我是CSDN助手”

零基础玩转Qwen2.5-7B微调:10分钟教会AI说"我是CSDN助手" 1. 前言:为什么要微调大模型? 想象一下,你刚买了一个智能音箱,但它只会说"我是XX公司生产的设备"。如果你想让它在回答"你是谁&qu…...

Tinkercad新手必看:用键盘快捷键搞定移动、旋转和缩放,效率翻倍!

Tinkercad键盘流:用快捷键实现精准建模的20个高阶技巧 刚接触Tinkercad的设计师常陷入"鼠标依赖症"——反复点击工具栏、拖拽控制点、调整参数面板...这种操作方式不仅效率低下,更会打断创作思路。实际上,Tinkercad隐藏着一套完整的…...

Qwen3-4B-Instruct-2507保姆级部署教程:3步在电脑上跑通AI对话

Qwen3-4B-Instruct-2507保姆级部署教程:3步在电脑上跑通AI对话 1. 引言:为什么选择Qwen3-4B-Instruct-2507 如果你正在寻找一个能在个人电脑上流畅运行的AI对话模型,Qwen3-4B-Instruct-2507绝对值得考虑。这个由阿里开源的大模型虽然只有40…...

ard2pmod:Arduino与PMOD硬件解耦的固件适配中间件

1. 项目概述 ard2pmod 是一个面向 Arduino 生态与 Digilent PMOD 标准硬件接口的轻量级固件适配库,其原始基础为 Maxim Integrated(现属 Analog Devices)官方发布的 MAXREFDES72# 参考设计固件。该参考设计原本专为 MAX32625PICO 开发板定制…...

WPF+VLC实战:手把手教你打造无边框媒体播放器(附拖拽事件避坑指南)

WPF与LibVLCSharp深度整合:打造极致沉浸式媒体播放器的工程实践 在当今数字媒体消费时代,用户对播放器体验的要求越来越高——他们渴望完全沉浸于内容本身,不被任何界面元素分散注意力。作为.NET开发者,我们如何利用WPF的灵活布局…...

实测Z-Image-Turbo镜像:仅需9步推理,生成高清图像效果惊艳,附完整代码

实测Z-Image-Turbo镜像:仅需9步推理,生成高清图像效果惊艳,附完整代码 1. 引言:极速文生图新体验 想象一下,你只需要输入一段文字描述,等待不到3秒钟,就能得到一张1024x1024分辨率的高清图片。…...

手把手教你静态分析Linux服务器取证:从check-system.sh到绕过密码自毁机制

Linux服务器静态取证实战:绕过密码自毁机制的技术解剖 当你面对一台设置了密码自毁机制的Linux服务器时,那种如履薄冰的感觉我深有体会。去年在一次企业安全演练中,我们团队就遇到过类似场景——某台关键服务器在三次密码错误尝试后会触发全盘…...

《苍穹外卖》套餐管理核心业务代码精讲【从零到一实战解析】

1. 从零理解《苍穹外卖》套餐管理架构 第一次接触《苍穹外卖》项目时,最让我头疼的就是套餐管理模块的业务逻辑。这个模块看似简单,实际涉及Controller、Service、Mapper三层协作,还有复杂的菜品关联关系。经过三个版本的迭代优化&#xff0c…...

基于51单片机的毕设实战:从传感器采集到低功耗通信的完整链路实现

最近在帮学弟学妹们看基于51单片机的毕业设计,发现一个挺普遍的现象:大家能把各个模块(比如传感器、显示屏、蓝牙)单独调通,但一旦组合起来,系统就变得不稳定,要么功耗飙升,要么数据…...

BGRL实战:用GAT编码器在ogbn-arXiv数据集上刷到SOTA的保姆级教程

BGRL实战:用GAT编码器在ogbn-arXiv数据集上刷到SOTA的保姆级教程 在自监督图表示学习领域,BGRL(Bootstrapped Graph Latents)正迅速成为研究者们的新宠。这个无需负样本的框架不仅突破了传统对比学习的计算瓶颈,更在多…...

为什么92%的Dify评估系统上线后准确率低于68%?——4个被官方文档隐藏的配置陷阱与修复方案

第一章:Dify自动化评估系统(LLM-as-a-judge)配置全景概览Dify 的自动化评估系统基于 LLM-as-a-judge 范式,允许开发者将大语言模型作为评判者,对提示工程效果、RAG 输出质量、对话连贯性等维度进行结构化打分。该能力内…...

SOLIDWORKS新手必看:IGS文件导入后的5个常见修复技巧(附迪威模型网对比)

SOLIDWORKS新手必看:IGS文件导入后的5个常见修复技巧(附迪威模型网对比) 当你第一次将IGS文件导入SOLIDWORKS时,可能会遇到各种令人头疼的问题——模型表面出现破洞、曲面无法缝合、实体转换失败...这些问题对于刚接触CAD软件的新…...

Phi-3-mini-128k-instruct解析VLOOKUP等Excel函数:跨表匹配与公式优化

Phi-3-mini-128k-instruct解析VLOOKUP等Excel函数:跨表匹配与公式优化 你是不是也经常被Excel里的数据匹配搞得头大?尤其是当数据分散在不同表格里,需要手动一个个去核对的时候,那种感觉真是既费时又容易出错。我见过不少同事&am…...

jsontop.cn 介绍 - 一站式开发者工具集,JSON 格式化之外的全能助手

作为开发者,日常工作中总会遇到各种琐碎的开发需求:JSON 数据格式化校验、Base64 编码转换、时间戳解析、正则表达式测试…… 如果每一个需求都要找对应的在线工具,不仅要记忆大量网址,还会频繁切换页面,大幅降低工作效…...

公考图形推理实战:从基础规律到快速解题技巧

1. 图形推理基础规律全解析 图形推理作为公考判断推理的必考题型,考察的是考生对图形特征的敏感度和规律提取能力。我刚开始备考时经常被各种图形绕晕,后来发现只要掌握核心规律体系,80%的题目都能快速破解。下面就把我实战总结的六大基础规律…...

Lingyuxiu MXJ LoRA部署教程:SDXL底座兼容性验证与LoRA冲突排查

Lingyuxiu MXJ LoRA部署教程:SDXL底座兼容性验证与LoRA冲突排查 1. 为什么需要专门验证MXJ LoRA与SDXL的兼容性? 很多人以为“LoRA能跑通就是兼容”,结果在实际生成中频繁遇到五官错位、光影崩坏、皮肤质感发灰、人物比例失真等问题——这些…...

OpenClaw多模型切换:Qwen3-VL:30B与CodeLlama飞书双助手

OpenClaw多模型切换:Qwen3-VL:30B与CodeLlama飞书双助手 1. 为什么需要多模型切换? 去年我在团队内部推广AI助手时遇到一个典型问题:当同事发送一张产品截图问"这个UI组件的React代码该怎么实现"时,通用模型要么只回答…...

即席查询框架大比拼:Druid、Kylin、Presto等7种工具如何选?

即席查询技术全景解析:7大框架深度对比与选型指南 在数据驱动的商业环境中,即席查询能力已成为企业数据团队的核心竞争力。当业务部门突然提出"上个月华东地区电子品类中哪些子类目在周末销量异常?"这类非预设问题时,传…...

永磁同步电机转动惯量与阻尼系数辨识:带遗忘因子递推最小二乘法实战

带遗忘因子的递推最小二乘法参数辨识,永磁同步电机转动惯量辨识,阻尼系数辨识,采用s函数编写,也有m函数。 有相关文档。在永磁同步电机(PMSM)的控制领域中,准确辨识转动惯量和阻尼系数对于优化电…...

Keil调试器不为人知的秘密:用Command窗口实现自动化测试

Keil调试器不为人知的秘密:用Command窗口实现自动化测试 在嵌入式开发领域,Keil MDK作为一款广受欢迎的集成开发环境,其调试功能一直被工程师们频繁使用。然而,大多数开发者仅停留在基础断点调试的层面,对Command窗口这…...

Axis1.4远程命令执行漏洞复现:从环境搭建到漏洞利用的全流程指南

Axis1.4远程命令执行漏洞深度剖析与实战复现指南 在Web应用安全研究领域,历史遗留系统的漏洞分析始终保持着独特的价值。Axis1.4作为早期广泛使用的Web服务框架,其远程命令执行漏洞(CVE-2019-0227)的复现过程不仅是一次技术演练&a…...

Opencv实战:中值滤波(cv2.medianBlur)在图像去噪中的高效应用

1. 为什么中值滤波是图像去噪的"神器"? 第一次接触图像处理时,我对着满是椒盐噪声的图片发愁。试过各种线性滤波方法,结果要么噪声没去掉,要么图片糊得像打了马赛克。直到遇到中值滤波,才明白什么叫"对…...

GitHub打不开的备选方案:本地部署Lingbot-Depth-Pretrain-ViTL-14进行模型研究与开发

GitHub打不开的备选方案:本地部署Lingbot-Depth-Pretrain-ViTL-14进行模型研究与开发 最近不少做AI开发的朋友都在抱怨,GitHub又抽风了,模型代码下不来,依赖包装不上,项目进度直接卡住。特别是当你急需复现某个前沿模…...

Asian Beauty Z-Image Turbo作品展示:不同年龄层(少女/青年/中年)东方人物建模能力

Asian Beauty Z-Image Turbo作品展示:不同年龄层(少女/青年/中年)东方人物建模能力 1. 工具简介 Asian Beauty Z-Image Turbo是一款专注于东方美学风格的本地化图像生成工具,基于通义千问Tongyi-MAI Z-Image底座模型&#xff0c…...

从汽车减震到建筑抗震:阻尼比ξ如何影响你的日常生活?

从汽车减震到建筑抗震:阻尼比ξ如何影响你的日常生活? 开车经过减速带时,你是否注意过不同车辆的颠簸程度差异?高层建筑遭遇强风时,为什么有些楼宇摇晃明显而另一些却稳如磐石?这些现象背后都隐藏着一个关键…...