欢迎光临
我们一直在努力

双机部署若依 (RuoYi‑Vue) 传统环境部署---实战

机器规划

主机 IP

承担服务

10.8.0.28

前端 Nginx + SpringBoot 后端 (ruoyi‑admin)

10.8.0.29

MySQL5.7 + Redis5.x 数据库缓存服务

架构数据流:浏览器 → 10.8.0.28 (Nginx80 端口) → 本机 SpringBoot 8080 → 跨网络访问 10.8.0.29 的 MySQL (3306)、Redis (6379)
注意:两台机器网络互通,防火墙放行端口:

  • 10.8.0.28:放行 80、8080
  • 10.8.0.29:放行 3306、6379 端口,允许 10.8.0.28 访问数据库缓存

整体分工:

1. 10.8.0.29:部署 MySQL5.7、Redis5.x,创建库、授权远程账号

2. 10.8.0.28:部署 JDK8、Maven3.6.3、Node12、Git、Nginx;拉取源码、修改配置指向 10.8.0.29 数据库;前端后端打包;后端 jar 启动;Nginx 部署 dist 静态资源 + 反向代理

一、操作 10.8.0.29(数据库缓存服务器)

1. 安装基础依赖源

yum install -y epel-release
yum install -y wget vim net-tools unzip lrzsz gcc gcc-c++ make

2. 安装 MySQL5.7

# 1. 导入 MySQL5.7 的 yum 源rpm包
rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 2. 【重要】导入GPG密钥(不然会报gpg校验失败,这是5.7常见坑)
rpm –import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 3. 安装mysql5.7服务端
yum install -y mysql-community-server
# 4. 启动 + 设置开机自启
systemctl start mysqld
systemctl enable mysqld

获取初始密码

grep 'temporary password' /var/log/mysqld.log

登录 mysql,修改 root 密码,并开放 10.8.0.28 远程访问权限

mysql -uroot -p

–修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
–允许10.8.0.28这台主机使用root访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.8.0.28' IDENTIFIED BY 'Root@123456';
FLUSH PRIVILEGES;
–创建若依数据库
create database `ry-vue` default character set utf8mb4 collate utf8mb4_general_ci;
exit;

注:数据库名 ry-vue 里面包含横杠 -,属于特殊字符,MySQL 不能直接用单引号 ' ' 包裹,要用反引号 ``(键盘 ESC 下面那个按键)包裹标识符。

⚠️防火墙放行 3306

firewall-cmd –permanent –add-port=3306/tcp
firewall-cmd –reload

3. 安装 Redis5.x,允许远程访问

yum 方式安装 redis

yum install -y redis
systemctl enable redis

修改 redis 配置:vim /etc/redis.conf

bind 0.0.0.0 #注释原来bind 127.0.0.1,监听全部网卡
protected-mode no #关闭保护模式
port 6379
daemonize yes

启动 redis

systemctl start redis
redis-cli ping
#返回PONG代表正常

防火墙放行 6379 端口

firewall-cmd –permanent –add-port=6379/tcp
firewall-cmd –reload

测试:在 10.8.0.28 执行下面命令确认连通性(等10.8.0.29部署完成后测试)

mysql -h10.8.0.28 -uroot -pRoot@123456
redis-cli -h 10.8.0.29 ping

⚠️数据库初始化 SQL 脚本不在 29 机器执行!SQL 脚本放在 10.8.0.28 源码目录,远程导入到 10.8.0.29 的 ry‑vue 库。

二、操作 10.8.0.28(应用服务器:Nginx+SpringBoot)

1. 安装基础环境工具

yum install -y epel-release
yum install -y wget vim net-tools unzip lrzsz gcc gcc-c++ make

1.1 Git

yum install -y git
git –version

1.2 JDK8

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
java -version

1.3 Maven3.6.3

tar -zxvf apache-maven-3.6.3.tar.gz -C /usr/local/

vim /etc/profile

#追加

export MAVEN_HOME=/usr/local/apache-maven-3.6.3

export PATH=$MAVEN_HOME/bin:$PATH

source /etc/profile

mvn -version

1.4 Node.js12

curl -fsSL https://rpm.nodesource.com/setup_12.x | bash –
yum install -y nodejs
node -v
npm -v

1.5 Nginx

yum install -y nginx
nginx -v
systemctl enable nginx
#防火墙放行80、8080端口
firewall-cmd –permanent –add-port=80/tcp
firewall-cmd –permanent –add-port=8080/tcp
firewall-cmd –reload

2. 拉取若依源码

cd /opt
git clone https://gitee.com/humajun/ruoyi.git
cd /opt/ruoyi/RuoYi-Vue
#克隆的这个是 RuoYi-Vue 前后端分离版,
#前端目录名字不是 RuoYi-Vue,是 ruoyi-ui,
#所以 cd /opt/ruoyi/RuoYi-Vue 报错找不到目录。

3. 修改后端配置【关键点!数据库、redis 指向 10.8.0.29】

① 修改 druid 数据库配置

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

url: jdbc:mysql://10.8.0.29:3306/ry-vue?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
username: root
password: Root@123456

② 修改 application.yml redis 配置

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

redis:
host: 10.8.0.29
port: 6379
password:

注:设置密码后,在10.8.0.29上

vim /etc/redis.conf

取消注释,改好统一密码

4. 远程导入 SQL 脚本到 10.8.0.29 的 MySQL

在 10.8.0.28 机器执行,远程把 sql 推送到 10.8.0.29 数据库

在 10.8.0.28 执行:

yum install -y mysql

装好之后,再执行导入命令:

cd /opt/ruoyi/sql
mysql -h10.8.0.29 -uroot -pRoot@123456 ry-vue < ry_202xxxx.sql

确认:登录 10.8.0.29 mysql 查看 ry‑vue 库是否生成表。

去 10.8.0.29 验证(确认表有没有导入进去)

在 10.8.0.29 机器执行:

mysql -uroot -pRoot@123456

然后 mysql 内执行:

use ry-vue;
show tables;

如果能看到一堆系统表(sys_user、sys_menu……),代表导入完成。

5. 前端打包

cd /opt/ruoyi/RuoYi-Vue/ruoyi-ui
npm install –registry=https://registry.npmmirror.com
npm run build:prod

打包产物路径:/opt/ruoyi/ruoyi-ui/dist

6. 后端 Maven 打包

cd /opt/ruoyi
mvn clean package -DskipTests

jar 包产物路径:ruoyi-admin/target/ruoyi-admin.jar

7. 启动 SpringBoot 后端服务(10.8.0.28 本机运行 8080 端口)

cd /opt/ruoyi/ruoyi-admin/target
#后台启动
nohup java -jar ruoyi-admin.jar > /opt/ruoyi/ruoyi.log 2>&1 &

#查看日志
tail -f /opt/ruoyi/ruoyi.log
#查看端口监听
netstat -ntlp |grep 8080

8.Nginx 部署前端静态资源 + 反向代理配置

1)复制 dist 静态文件到 nginx 站点目录

rm -rf /usr/share/nginx/html/*
cp -r /opt/ruoyi/ruoyi-ui/dist/* /usr/share/nginx/html/

2)编写若依 nginx 配置文件,新建/etc/nginx/conf.d/ruoyi.conf

server {
listen 80;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}

location /prod-api/ {
proxy_pass http://127.0.0.1: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;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}

location /websocket/ {
proxy_pass http://127.0.0.1:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 60s;
}
}

3)检查 nginx 语法并重启

nginx -t
systemctl restart nginx

三、访问验证

浏览器访问 http://10.8.0.28,输入默认账号密码登录。

双机完整链路梳理

浏览器 → 10.8.0.28:80(Nginx)
  静态页面直接读取本机 dist 资源
  API 请求 /prod-api/ → 转发给本机 SpringBoot 127.0.0.1:8080
  SpringBoot 后端跨机器访问 10.8.0.29:3306 MySQL、10.8.0.29:6379 Redis

四、常见故障排查点

1、10.8.0.28 访问不了 10.8.0.29 数据库:检查防火墙、MySQL 授权账号 host 是否为10.8.0.28,bind 地址;

2、后端启动报错连不上 redis:确认 redis bind 0.0.0.0,关闭保护模式;

3、Nginx 页面空白,接口 404:确认proxy_pass后端地址是本机 127.0.0.1:8080,不要写 10.8.0.29;

4、前端打包失败:使用淘宝镜像npm install –registry=https://registry.npmmirror.com。

5、出现502报错:

第 1 步:先检查后端是否正常启动(最高概率问题)

# 查看8080端口有没有监听
ss -lntp | grep 8080
# 或者
netstat -ntlp | grep 8080

✅ 有输出:后端进程存在,继续往下查

❌ 没有任何输出:jar 包没起来 / 启动报错退出了

# 看后端日志,找报错!
tail -f /opt/ruoyi/ruoyi.log

常见启动失败原因:

连不上 10.8.0.29 的 MySQL/Redis(账号密码错、防火墙、授权不对)

数据库没导入 SQL,库不存在

8080 端口被别的程序占用

yml 配置缩进写错(yaml 对空格非常敏感)

第 2 步:本机直接 curl 测试后端,绕开 Nginx

在 10.8.0.28 执行:

curl http://127.0.0.1:8080/

✅ 有返回:后端服务本身正常 → 问题在 Nginx 配置

❌ Connection refused:后端没启动,回到第一步看日志

第 3 步:检查 Nginx 错误日志

tail -n 50 /var/log/nginx/error.log

日志关键字对照:

connect() failed (111: Connection refused) → 127.0.0.1:8080 没服务(后端挂了,最常见)

connect() failed (113: No route to host) → 网络不通(本案例一般不会)

第 4 步:核对 nginx 配置 /etc/nginx/conf.d/ruoyi.conf

你之前给的配置,重点看 /prod-api/

location /prod-api/ {
proxy_pass http://127.0.0.1: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;
proxy_set_header X-Forwarded-Proto $scheme;
}

⚠️坑:很多人写成 proxy_pass http://127.0.0.1:8080(末尾无斜杠)会路由异常
改完校验语法、重载:

nginx -t
systemctl restart nginx

第 5 步:如果后端启动报错,单独检查跨机连通(10.8.0.28 → 10.8.0.29)

在 10.8.0.28 测试:

# 测试mysql连通
mysql -h10.8.0.29 -uroot -pRoot@123456
# 测试redis连通
redis-cli -h 10.8.0.29 ping

mysql 连不上:检查 29 机防火墙 3306、mysql 授权语句是否是 'root'@'10.8.0.28'

redis ping 不通:检查 redis.conf bind 0.0.0.0、protected-mode no,放行 6379

第 6 步:快速重启整套后端(如果日志没明显报错,进程意外死掉)

# 先杀掉旧的ruoyi进程
pkill -f ruoyi-admin.jar
# 重新后台启动
cd /opt/ruoyi/RuoYi-Vue/ruoyi-admin/target
nohup java -jar ruoyi-admin.jar > /opt/ruoyi/ruoyi.log 2>&1 &
# 等待10秒,再看端口
sleep 10
ss -lntp | grep 8080

结论:

就是 SELinux 阻止 Nginx 去访问 8080 端口,和我们刚才判断的一模一样。

直接执行这条放行命令(永久生效):

setsebool -P httpd_can_network_connect 1

执行完重启 Nginx:

systemctl restart nginx

然后刷新浏览器登录页面,验证码就出来、502 报错消失了。

拓展变体:也可以后端部署到 29,Nginx 部署 28。本流程采用更常用的:数据库缓存独立一台,应用 (Nginx+Springboot) 一台。

赞(0)
未经允许不得转载:171主机测评 » 双机部署若依 (RuoYi‑Vue) 传统环境部署---实战
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址