Rocky Linux 9上三台虚拟机部署若依Vue版:从源码下载到Nginx配置的保姆级避坑实录

张开发
2026/4/11 2:15:10 15 分钟阅读

分享文章

Rocky Linux 9上三台虚拟机部署若依Vue版:从源码下载到Nginx配置的保姆级避坑实录
Rocky Linux 9三机集群部署若依Vue版全栈指南架构设计与排错实战在分布式系统成为主流的今天生产环境部署往往需要将服务拆分到不同主机。本文将带您完成若依Vue 3.9.0在Rocky Linux 9三节点集群前端、后端、数据库上的专业级部署重点解决多机环境特有的网络通信、服务协同等核心问题。1. 环境规划与基础配置1.1 服务器角色划分建议准备三台配置相同的Rocky Linux 9服务器最小化安装网络采用桥接模式确保互通主机角色推荐配置必需软件前端服务器2核4GNginx 1.20、Node.js 16后端服务器4核8GJDK 8、Maven 3.8、Git数据库服务器4核8GMySQL 8.0、Redis 6.2提示使用hostnamectl set-hostname命令为每台主机设置易识别的名称如frontend、backend、db1.2 系统级准备工作在所有节点执行以下基础安全配置# 关闭SELinux需重启生效 sudo sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config sudo setenforce 0 # 防火墙放行必要端口根据角色调整 sudo firewall-cmd --permanent --add-port{80,8080,3306,6379}/tcp sudo firewall-cmd --reload关键检查点使用ping测试三机网络连通性通过telnet IP 端口验证防火墙配置记录各节点IP地址到本地文档2. 数据库服务器深度配置2.1 MySQL 8.0安全安装# 添加官方仓库 sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm # 安装时禁用新版本仓库避免冲突 sudo dnf install -y mysql-community-server --enablerepo mysql80-community \ --disablerepo mysql-8.4-lts-community # 启动服务并获取临时密码 sudo systemctl start mysqld temp_pass$(sudo grep A temporary password /var/log/mysqld.log | awk {print $NF})密码安全策略修改建议-- 登录后执行 ALTER USER rootlocalhost IDENTIFIED BY YourStrongPass!; SET GLOBAL validate_password.policyLOW;2.2 数据库初始化创建专有用户并导入若依数据CREATE DATABASE ruoyi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER ruoyi% IDENTIFIED BY RuoYi123; GRANT ALL PRIVILEGES ON ruoyi.* TO ruoyi%; FLUSH PRIVILEGES;使用SCP传输SQL文件时注意权限问题# 在后端服务器执行 scp ~/RuoYi-Vue/sql/*.sql root数据库服务器IP:/tmp/2.3 Redis高可用配置修改/etc/redis/redis.conf关键参数bind 0.0.0.0 requirepass YourRedisPass123 maxmemory 1gb maxmemory-policy allkeys-lru验证连接redis-cli -h 数据库服务器IP -a YourRedisPass123 ping3. 后端服务部署实战3.1 开发环境精准安装# 安装OpenJDK 8 sudo dnf install -y java-1.8.0-openjdk-devel # Maven特殊版本安装官方仓库可能版本滞后 wget https://archive.apache.org/dist/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz sudo tar xf apache-maven-3.8.8-bin.tar.gz -C /opt/ sudo ln -s /opt/apache-maven-3.8.8 /opt/maven环境变量配置示例/etc/profile.d/ruoyi.shexport JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export MAVEN_HOME/opt/maven export PATH$PATH:$MAVEN_HOME/bin3.2 源码编译与配置调优克隆仓库后需重点修改两个配置文件ruoyi-admin/src/main/resources/application-druid.ymlmaster: url: jdbc:mysql://数据库服务器IP:3306/ruoyi?useSSLfalseallowPublicKeyRetrievaltrue username: ruoyi password: RuoYi123ruoyi-admin/src/main/resources/application.ymlredis: host: 数据库服务器IP password: YourRedisPass123编译打包时建议跳过测试mvn clean package -Dmaven.test.skiptrue3.3 服务启动与守护使用systemd管理服务/etc/systemd/system/ruoyi.service[Unit] DescriptionRuoYi Backend Service Afternetwork.target [Service] Userroot ExecStart/usr/bin/java -jar /root/RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar Restartalways [Install] WantedBymulti-user.target启动后检查日志确认无异常journalctl -u ruoyi -f4. 前端服务专业部署4.1 Node.js环境搭建# 安装NodeSource仓库 curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash - sudo dnf install -y nodejs # 验证安装 node -v # 应输出v16.x npm -v配置淘宝镜像加速npm config set registry https://registry.npmmirror.com4.2 前端构建优化在ruoyi-ui目录下执行# 解决常见依赖问题 npm install --legacy-peer-deps # 生产环境构建内存不足时可添加--max_old_space_size参数 npm run build:prod构建产物位于dist目录需完整传输到前端服务器rsync -avz ./dist/* root前端服务器IP:/usr/share/nginx/html/ruoyi4.3 Nginx高级配置示例配置/etc/nginx/nginx.confupstream backend { server 后端服务器IP:8080 weight5 max_fails3 fail_timeout30s; } server { listen 80; server_name your-domain.com; location / { root /usr/share/nginx/html/ruoyi; try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_pass http://backend/; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 60s; } # 静态资源缓存 location ~* \.(js|css|png)$ { expires 365d; } }重载配置前测试语法nginx -t systemctl reload nginx5. 跨服务问题排查指南5.1 数据库连接故障常见错误现象及解决方案错误信息可能原因解决方案Access denied for user权限配置错误GRANT语句重新授权Public Key Retrieval is not allowedMySQL驱动版本问题连接串添加allowPublicKeyRetrievaltrueToo many connections连接池配置不合理调整Druid连接池参数5.2 前端API请求异常Chrome开发者工具排查要点检查Network标签中API请求状态码确认请求URL是否拼接正确查看响应内容是否包含CORS头典型跨域问题解决方案# 在Nginx配置中添加 add_header Access-Control-Allow-Origin $http_origin; add_header Access-Control-Allow-Methods GET, POST, OPTIONS; add_header Access-Control-Allow-Headers DNT,User-Agent,X-Requested-With,Content-Type;5.3 服务启动顺序建议为避免依赖服务未就绪导致的问题建议按以下顺序启动数据库服务器MySQL → Redis后端服务器若依主服务前端服务器Nginx可使用nc命令检查端口是否开放nc -zv 数据库服务器IP 33066. 性能调优与安全加固6.1 JVM参数优化在启动脚本中添加示例4核8G配置java -server -Xms4g -Xmx4g -XX:MaxMetaspaceSize512m \ -XX:UseG1GC -XX:MaxGCPauseMillis200 \ -jar ruoyi-admin.jar关键监控命令top -H -p $(pgrep -f ruoyi-admin) # 查看线程资源占用 jstat -gcutil $(pgrep -f ruoyi-admin) 1000 # GC情况监控6.2 MySQL性能调整建议修改/etc/my.cnf[mysqld] innodb_buffer_pool_size4G innodb_log_file_size1G max_connections2006.3 安全防护措施为SSH启用密钥认证定期轮换数据库密码配置Nginx限制API访问频率启用HTTPS加密传输Lets Encrypt证书申请示例sudo dnf install certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com

更多文章