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

Rocky Linux 9.5上保姆级部署若依RuoYi-Vue 3.9.0:三台虚拟机从零到访问的完整避坑记录

Rocky Linux 9.5三机集群部署若依RuoYi-Vue 3.9.0全流程实战指南

当我们需要在企业内网环境部署一套完整的前后端分离管理系统时,若依(RuoYi)框架因其开箱即用的权限管理和代码生成功能成为热门选择。本文将基于Rocky Linux 9.5操作系统,通过三台独立虚拟机(前端服务器、后端服务器、数据库服务器)的集群部署方式,手把手带你完成RuoYi-Vue 3.9.0版本的完整部署过程,特别针对MySQL 8.0连接、Redis密码配置等易错环节提供详细解决方案。

1. 环境规划与准备

在开始部署前,我们需要明确各服务器的角色和软件配置。建议使用至少2核4G配置的虚拟机,三台机器网络互通且能互相解析主机名。

服务器角色分配表

服务器类型必需软件推荐配置
前端服务器Nginx 1.20+2核/2GB
后端服务器JDK 1.8、Maven 3.8+、Node 162核/4GB
数据库服务器MySQL 8.0、Redis 6.2+2核/4GB

提示:生产环境建议将MySQL和Redis分开部署,本文为演示采用单机部署方式

首先在所有服务器执行基础环境配置:

# 关闭SELinux(所有服务器) sudo setenforce 0 sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 关闭防火墙(内网环境建议操作) sudo systemctl stop firewalld sudo systemctl disable firewalld # 设置主机名解析(所有服务器) sudo hostnamectl set-hostname frontend # 前端服务器执行 sudo hostnamectl set-hostname backend # 后端服务器执行 sudo hostnamectl set-hostname db # 数据库服务器执行

2. 数据库服务器部署

数据库服务器需要安装MySQL 8.0和Redis 6.2,这是若依系统运行的核心依赖。

2.1 MySQL 8.0安装与配置

# 安装MySQL官方仓库 sudo yum -y install https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm # 安装MySQL服务器(注意禁用8.4 LTS仓库) sudo yum --enablerepo mysql80-community --disablerepo mysql-8.4-lts-community -y install mysql-community-server # 启动服务并设置开机自启 sudo systemctl enable --now mysqld

获取初始密码并修改:

# 获取临时密码 temp_pass=$(sudo awk '/A temporary password/{print $NF}' /var/log/mysqld.log) # 修改root密码(建议使用复杂密码) mysqladmin -uroot -p"$temp_pass" password 'RuoYi@DB123!'

创建若依专用数据库和用户:

-- 登录MySQL mysql -uroot -p'RuoYi@DB123!' -- 执行以下SQL语句 CREATE DATABASE ruoyi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'ruoyi'@'%' IDENTIFIED BY 'RuoYi@User123!'; GRANT ALL PRIVILEGES ON ruoyi.* TO 'ruoyi'@'%'; FLUSH PRIVILEGES;

2.2 Redis安装与安全配置

# 安装Redis sudo yum -y install redis # 编辑配置文件 sudo vi /etc/redis/redis.conf

需要修改的关键配置项:

bind 0.0.0.0 requirepass RuoYi@Redis123! protected-mode yes

启动并验证Redis服务:

sudo systemctl enable --now redis redis-cli -a 'RuoYi@Redis123!' ping # 应返回PONG

3. 后端服务器部署

后端服务器需要安装JDK、Maven、Node.js等开发环境,并编译部署若依的后端Java代码。

3.1 基础环境安装

# 安装OpenJDK 8 sudo yum -y install java-1.8.0-openjdk-devel # 安装Git sudo yum -y install git # 下载并安装Maven wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz sudo tar -xzf apache-maven-3.8.8-bin.tar.gz -C /usr/local/ sudo ln -s /usr/local/apache-maven-3.8.8 /usr/local/maven # 下载并安装Node.js 16 wget https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xz sudo tar -xJf node-v16.20.2-linux-x64.tar.xz -C /usr/local/ sudo ln -s /usr/local/node-v16.20.2-linux-x64 /usr/local/node

配置环境变量:

echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export MAVEN_HOME=/usr/local/maven export NODE_HOME=/usr/local/node export PATH=$PATH:$MAVEN_HOME/bin:$NODE_HOME/bin' | sudo tee /etc/profile.d/ruoyi.sh source /etc/profile.d/ruoyi.sh

验证安装:

java -version # 应显示1.8.x mvn -v # 应显示Apache Maven 3.8.8 node -v # 应显示v16.20.2 npm -v # 应显示对应版本号

3.2 若依后端部署

克隆若依项目代码并配置:

git clone https://gitee.com/y_project/RuoYi-Vue.git cd RuoYi-Vue

修改数据库连接配置:

vi ruoyi-admin/src/main/resources/application-druid.yml

关键配置项修改:

master: url: jdbc:mysql://db:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true username: ruoyi password: RuoYi@User123!

修改Redis配置:

vi ruoyi-admin/src/main/resources/application.yml

找到redis部分修改为:

redis: host: db port: 6379 password: RuoYi@Redis123! timeout: 10s

编译打包后端项目:

mvn clean package -DskipTests

启动后端服务:

cd ruoyi-admin/target/ nohup java -jar ruoyi-admin.jar > ruoyi.log 2>&1 &

验证后端是否启动成功:

curl http://localhost:8080 # 应返回HTML内容或404页面(说明服务已运行)

4. 前端服务器部署

前端服务器主要负责托管静态资源和反向代理后端API请求。

4.1 Nginx安装与配置

# 安装Nginx sudo yum -y install nginx # 启动服务 sudo systemctl enable --now nginx

配置Nginx作为前端代理:

sudo vi /etc/nginx/nginx.conf

替换为以下内容(保留最外层的http块):

server { listen 80; server_name localhost; location / { root /usr/share/nginx/html/ruoyi; index index.html; try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_pass http://backend: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; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }

4.2 前端项目部署

在后端服务器上编译前端项目:

cd RuoYi-Vue/ruoyi-ui npm install --registry http://registry.npmmirror.com npm run build:prod

将编译好的前端文件传输到前端服务器:

scp -r dist/* root@frontend:/usr/share/nginx/html/ruoyi

在前端服务器上创建目录并设置权限:

sudo mkdir -p /usr/share/nginx/html/ruoyi sudo chown -R nginx:nginx /usr/share/nginx/html/ruoyi

重启Nginx服务:

sudo systemctl restart nginx

5. 系统初始化与访问测试

在数据库服务器导入若依的初始化SQL文件:

# 从后端服务器传输SQL文件 scp RuoYi-Vue/sql/*.sql root@db:/tmp/ # 在数据库服务器执行导入 mysql -uroot -p'RuoYi@DB123!' ruoyi < /tmp/ry_20250522.sql mysql -uroot -p'RuoYi@DB123!' ruoyi < /tmp/quartz.sql

访问测试:

  1. 打开浏览器访问前端服务器IP地址
  2. 使用默认账号登录:
    • 用户名:admin
    • 密码:admin123

常见问题排查:

  • 如果前端显示但接口报错,检查Nginx的/prod-api/代理配置
  • 如果登录失败,检查后端日志查看具体错误
  • 如果数据库连接失败,验证MySQL用户权限和密码

6. 生产环境优化建议

  1. 安全加固

    • 为MySQL和Redis配置适当的防火墙规则
    • 考虑使用SSL加密前端与后端的通信
    • 定期轮换数据库密码
  2. 性能调优

    # Nginx工作进程优化 worker_processes auto; worker_connections 1024; # Java应用JVM参数调整 java -Xms512m -Xmx1024m -jar ruoyi-admin.jar
  3. 高可用方案

    • 后端服务使用systemd托管并配置自动重启
    • 考虑使用Nginx负载均衡多个后端实例
    • 对重要数据配置定期备份任务
  4. 监控方案

    # 简易监控脚本示例 while true; do if ! curl -s http://localhost:8080 >/dev/null; then systemctl restart ruoyi fi sleep 30 done

部署完成后,建议立即修改默认管理员密码,并根据实际需求配置系统参数。若依框架提供了完善的代码生成功能,可以快速开发业务模块,大幅提升开发效率。

http://www.jsqmd.com/news/583622/

相关文章:

  • 基于MATLAB的激光光斑尺寸计算与光束质量M²因子拟合实践
  • 基于stm32的老人生理状态监护系统设计
  • Python 3.11.6 + Oracle 11g​开发环境配置 - yi
  • 竞技游戏设计实战:从核心机制到玩家体验的全面解析
  • 如何评估外贸网站SEO优化的效果_外贸网站SEO优化的最佳实践有哪些
  • Edge/Chrome用户必看:3种免费工具批量清理失效书签(2023实测)
  • DAMA数据管理框架实战指南:从理论到企业级应用
  • 西门子的S7-1200PLC物流分拣程序的系统设计,基于西门 西门子的S7-1200PLC物流...
  • Xilinx JTAG to AXI实战:如何在Vivado中快速搭建调试环境(附TCL命令大全)
  • 国内大模型托管平台推荐:四大平台选型指南
  • KKT条件实战:用Python手把手教你求解带约束的最优化问题
  • 直流升压斩波电路设计——含Simulink仿真文件和说明Word文件参考
  • AD 2024 激活与汉化实战:从破解文件到中文界面的完整指南
  • 并联型有源电力滤波器APF的三相三线制模型及其Simulink仿真研究——基于瞬时无功功率理论...
  • STM32G030C8T6多通道ADC采集避坑指南:从时钟配置到采样周期,新手常犯的5个错误
  • 从坦克到机器人:手把手拆解履带底盘悬挂的‘克里斯蒂’与‘马蒂尔达’(附专利图)
  • 告别AI编程的‘玄学’:用Qwen Coder的PRP框架,手把手教你写出靠谱的提示词
  • HC32F460引脚复用避坑指南:如何正确释放SWDIO/SWCLK做普通IO
  • 使用 SEO 搜索引擎营销工具需要多长时间见效
  • Unity URP SRP Batcher 完全指南 URP/HDRP 下的核心批处理机制,大幅降低 CPU 开销
  • 手把手教你用Dio调用极光推送API,实现Flutter应用的后台消息管理
  • 如何利用爬虫技术快速精准地抓取目标数据?
  • 高德地图JS API报错10009?手把手教你解决USERKEY_PLAT_NOMATCH问题
  • TikTok直播卡顿、发布失败?可能是你的动态IP池没调好(附IPIPD轮询策略设置)
  • Res-Unet实战:在医学图像分割任务中,为什么以及如何用ResNet50替换普通卷积层?
  • Ubuntu系统DNS解析故障排查与修复指南
  • 语音识别性能评估:从准确率到实时性的全面解析
  • 乙炔气瓶采购,先看用气节奏和现场配套,别只盯单瓶价格 - 广州矩阵架构科技公司
  • Transformer位置编码层代码详解:从正弦公式到PyTorch实现(附避坑指南)
  • 4.1——经纬恒润