欢迎光临
我们一直在努力

若依项目部署

一、若依经典版(war)部署

1.1 整体架构

在这里插入图片描述

1.2 服务器规划

操作环境Rocky9

主机名角色IP 地址核心软件
db-mysql MySQL 数据库服务器 10.0.0.160 MySQL 8.x
db-redis Redis 缓存服务器 10.0.0.140 Redis 6.x / 7.x
ruoyi-java1 应用服务器 10.0.0.120 JDK 8 + Tomcat 9

1.3 服务器配置

1.3.1 基础配置

# 1.配置主机名(每台服务器执行对应的)
hostnamectl set-hostname db-mysql
hostnamectl set-hostname db-redis
hostnamectl set-hostname ruoyi-java1

# 2.设置IP
nmcli connection modify ens160 ipv4.method manual \\
ipv4.addresses 10.0.0.160/24 \\
ipv4.gateway 10.0.0.2 \\
ipv4.dns 8.8.8.8,114.114.114.114 \\
autoconnect yes
# 依次为10.0.0.140 10.0.0.120

# 3.配置主机名解析(所有服务器都执行)
sudo tee -a /etc/hosts <<"EOF"
> 10.0.0.160 db-mysql
> 10.0.0.140 db-redis
> 10.0.0.120 ruoyi-java1
> EOF

# 验证解析
ping -c1 db-mysql
ping -c1 db-redis
ping -c1 ruoyi-java1

# 4.配置yum源(阿里云镜像)
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \\
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \\
-i /etc/yum.repos.d/rocky*.repo
# 安装并替换 EPEL 源
sudo dnf -y install epel-release
sudo sed -e 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|g' \\
-e 's|^metalink|#metalink|g' \\
-i \\
/etc/yum.repos.d/epel*

# 5.安装基础软件包
dnf -y install vim bash-completion wget net-tools lrzsz tar git

# 6.关闭防火墙和SELinux(简化实验环境)
systemctl disable –now firewalld
setenforce 0
sed -i -e '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

1.3.2 MySql部署

# 1.克隆若依项目(获取SQL文件)JDK 8 使用sprinboot2
git clone -b springboot2 https://gitee.com/y_project/RuoYi.git
# 2.安装MySQL
dnf install mysql-server -y
systemctl enable mysqld –now
# 3.创建用户
mysql -u root << 'EOF'
> CREATE DATABASE ruoyi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ruoyi'@'10.0.0.%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON ruoyi.* TO 'ruoyi'@'10.0.0.%';
FLUSH PRIVILEGES;
EOF

在这里插入图片描述

# 4.导入ruoyi的初始数据(根据实际文件名称)
[wangchen@db-mysql ~]$ ls RuoYi/sql/
quartz.sql ruoyi.html ruoyi.pdm ry_20260319.sql

mysql -u root ruoyi < RuoYi/sql/ry_20260319.sql
mysql -u root ruoyi < RuoYi/sql/quartz.sql
# 5. 验证数据导入是否成功(从应用服务器连接测试,在ruoyi-java1上执行)
dnf -y install mysql
mysql -u ruoyi -p -h db-mysql ruoyi -e 'show tables;'

-u 指定用户名 -p 输入密码(后面没有跟密码值,执行后会交互式提示输入,带密码时中间不要空格)

-e 执行 SQL 语句后退出 -h 指定服务器主机名

1.3.3 Redis部署

# 1.安装Redis
sudo dnf install redis -y
# 2.配置Redis(允许远程访问 + 设置密码)
sudo sed -i '/^bind 127.0.0.1/cbind 0.0.0.0' /etc/redis/redis.conf
sudo sed -i '/^# requirepass/crequirepass 123456' /etc/redis/redis.conf

-i 修改原文件内容 c 替换/更改整行 bind 0.0.0.0 监听所有网段

# 3.启动Redis
sudo systemctl enable redis.service –now
# 4. 验证服务是否可用(从应用服务器连接测试,在ruoyi-java1上执行)
sudo dnf -y install redis
# 带明文密码输入
redis-cli -h db-redis -p 6379 -a 123456 ping
# 不带明文密码需要输入
redis-cli -h db-redis -p 6379 -a ping
AUTH 123456 #'认证密码'
# 输出:PONG

redis-cli Redis 命令行客户端工具 -p 6379 指定 Redis 端口(6379 是默认端口) -a 指定认证密码(需要空格)

1.4 部署应用服务器

1.4.1 安装JDK和Tomcat

# 1.安装JDK(Jdk8兼容tomcat9)
sudo dnf install -y java-1.8.0-openjdk-devel
[wangchen@ruoyi-java1 ~]$ java -version
openjdk version "1.8.0_504"
OpenJDK Runtime Environment (build 1.8.0_504-b01)
OpenJDK 64-Bit Server VM (build 25.504-b01, mixed mode)
[wangchen@ruoyi-java1 ~]$ javac -version
javac 1.8.0_504
# 2.安装Tomcat
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.121/bin/apache-tomcat-9.0.121.tar.gz
sudo tar xaf apache-tomcat-9.0.121.tar.gz -C /usr/local/
# 创建一个软链接目的是简化路径引用和方便版本管理
sudo ln -s /usr/local/apache-tomcat-9.0.121/ /usr/local/tomcat
# 3.创建专用服务用户(权限最小化,安全)
sudo useradd -r -s /sbin/nologin tomcat # -r 创建系统用户 -s 指定登陆shell(不登陆)
sudo chown -R tomcat:tomcat /usr/local/tomcat/
# 4.创建systemd服务文件
sudo tee /etc/systemd/system/tomcat.service << 'EOF' > /dev/null
> [Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
Environment="CATALINA_HOME=/usr/local/tomcat"
Environment="CATALINA_BASE=/usr/local/tomcat"
Environment="CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

  • Type=forking: 告诉 systemd startup.sh 会 fork 出子进程后退出父进程。systemd 通过 PID 文件跟踪真正的 Tomcat 主进程。这是 Tomcat 传统启动脚本的固定搭配

  • JAVA_HOME: 指定 JDK 路径,startup.sh 依赖此变量找到 Java

  • CATALINA_HOME/BASE: Tomcat 安装目录和实例目录(单实例时两者相同)

  • CATALINA_PID: ⭐ 关键! 与 Type=forking 配合,systemd 通过读取此文件获取 Tomcat 主进程 PID,从而正确判断服务状态、执行停止操作

  • ExecStart: 启动命令

  • ExecStop: 停止命令(systemctl stop 时调用优雅关闭)

  • Restart=on-failure: 仅在非正常退出(崩溃、信号终止等)时自动重启,手动 stop 不会触发重启

  • RestartSec=10: 重启前等待 10 秒,避免频繁重启风暴

  • 执行 systemctl enable tomcat 后,Tomcat 会在系统进入 multi-user.target(标准多用户模式,相当于传统 runlevel 3)时自动启动

# 5.启动Tomcat并验证是否启动
sudo systemctl daemon-reload
sudo systemctl enable –now tomcat.service
sudo systemctl status tomcat.service
sudo netstat -tnlp | grep 8080
# 6.验证访问
curl http://ruiyi-java1:8080/
#windows配置hosts解析后浏览器正常访问tomcat首页(需带:8080)
10.0.0.120 ruoyi.wangchen.com

1.4.2 编译打包若依war包

# 1.克隆若依项目
git clone -b springboot2 https://gitee.com/y_project/RuoYi.git
cd RuoYi/
# 2.数据库配置连接(连接MySQL)
sudo vim ruoyi-admin/src/main/resources/application-druid.yml

在这里插入图片描述

# 3.Redis配置连接(连接Redis)
sudo vim ruoyi-admin/src/main/resources/application.yml

在这里插入图片描述

# 4. 修改pom.xml,打包成WAR(注意:默认是JAR)
sudo vim ruoyi-admin/pom.xml

在这里插入图片描述

# 5. 修改启动类(让Spring Boot支持WAR部署)
sudo vim ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
# :%d删除全文后粘贴
package com.ruoyi;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class RuoYiApplication extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(RuoYiApplication.class);
}

public static void main(String[] args) {
SpringApplication.run(RuoYiApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ ");
}
}

# 6.安装maven并打包
sudo dnf -y install maven
java -version
openjdk version "17.0.20.1" 2026-08-18 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.20.1.1-1) (build 17.0.20.1+1-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.20.1.1-1) (build 17.0.20.1+1-LTS, mixed mode, sharing)
# 安装maven自动绑定Java,自动下载jdk17不兼容tomcat9
# 如何确认你的 WAR 包需要哪个 JDK
<!— 若依项目根 pom.xml —>
<java.version>1.8</java.version>
<!— 或 —>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
# 修改全局环境变量Java指向8版本
sudo tee /etc/profile.d/java.sh << 'EOF'
> export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
EOF

source /etc/profile.d/java.sh # 立即生效
# 版本正确
java -version
openjdk version "1.8.0_504"
OpenJDK Runtime Environment (build 1.8.0_504-b01)
OpenJDK 64-Bit Server VM (build 25.504-b01, mixed mode)
# 修改日志文件路径
sudo mkdir -p /usr/local/tomcat/logs/ruoyi
sudo chown -R tomcat:tomcat /usr/local/tomcat/logs/ruoyi
sed -i 's|<property name="log.path" value=".*" />|<property name="log.path" value="/usr/local/tomcat/logs/ruoyi" />|' ruoyi-admin/src/main/resources/logback.xml
# 打包(跳过测试)
mvn clean package -Dmaven.test.skip=true

clean 清理阶段。删除上一次构建生成的 target 目录,确保本次构建是从零开始,避免旧文件残留导

package 打包阶段。将项目编译、测试(如果没跳过)、打包成可部署的构件(若依项目通常会生成 .jar 或 .war 文件)。

-Dmaven.test.skip=true 彻底跳过整个测试阶段。

-Dmaven.test.skip=true 与 -DskipTests 的区别

参数是否编译测试代码是否执行测试构建速度
-Dmaven.test.skip=true 不编译 不执行 最快
-DskipTests 会编译 不执行 较快

在这里插入图片描述

# 打包成功后,WAR包位置:
ls ruoyi-admin/target/ruoyi-admin.war
ruoyi-admin/target/ruoyi-admin.war

1.4.3 部署WAR包到Tomcat

# 1. 查看Tomcat webapps目录
sudo ls /usr/local/tomcat/webapps/
# 2. 将WAR包复制到Tomcat的webapps目录
sudo cp ruoyi-admin/target/ruoyi-admin.war /usr/local/tomcat/webapps/
# 3. Tomcat会自动解压并部署
sudo ls /usr/local/tomcat/webapps/
docs examples host-manager manager ROOT ruoyi-admin ruoyi-admin.war
# 4. 观察日志确认部署成功
sudo tail -f /usr/local/tomcat/logs/catalina.out

在这里插入图片描述

1.5 验证部署

打开浏览器,ruoyi.wangchen.com:8080/ruoyi-admin 访问

在这里插入图片描述

二、若依Vue版部署(JAR包)

2.1 整体架构

在这里插入图片描述

2.2 服务器规划

层级主机名IP地址组件端口作用
接入层 ruoyi-web1 10.0.0.113 Nginx 80/443 反向代理、静态资源
应用层 ruoyi-java1 10.0.0.120 依JAR 8080 业务逻辑
缓存层 db-redis 10.0.0.140 Redis 6379 会话管理、缓存
数据层 db-mysql 10.0.0.160 MySQL 3306 数据持久化

2.3 服务器配置

2.3.1 基础配置

# 1.配置主机名
hostnamectl set-hostname ruoyi-web1
# 2.设置IP
nmcli connection modify ens160 ipv4.method manual \\
ipv4.addresses 10.0.0.113/24 \\
ipv4.gateway 10.0.0.2 \\
ipv4.dns 8.8.8.8,114.114.114.114 \\
autoconnect yes
# 2.配置主机名解析
# 3.配置yum源(阿里云镜像)
# 4. 安装基础软件包
# 5. 关闭防火墙和SELinux(简化实验环境)
# 以上操作步骤同上“1.3服务器部署”

2.3.2 MySQL部署

# 1.删除之前的Ruoi文件
rm -rf RuoYi/
# 2.克隆若依Vue版项目
git clone https://gitee.com/y_project/RuoYi-Vue.git
# 3.安装MySQL(已安装)
# 4.创建数据库和用户(需要删除若依经典版数据库文件,创建ruoyi-vue库,及获取权限给ruoyi)
mysql -u root -p -e 'drop database ruoyi'
mysql -u root << 'EOF'
CREATE DATABASE IF NOT EXISTS `ruoyi-vue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON `ruoyi-vue`.* TO 'ruoyi'@'10.0.0.%';
FLUSH PRIVILEGES;
EOF

# 5.导入vue版的数据
mysql -u root ruoyi-vue < RuoYi-Vue/sql/ry_20260417.sql
mysql -u root ruoyi-vue < RuoYi-Vue/sql/quartz.sql
# 6.从应用服务器连接测试
mysql -u ruoyi -p -h db-mysql ruoyi-vue -e 'show tables'

2.3.3 Redis部署

# 1. 安装Redis
dnf install redis -y

# 2. 配置Redis(允许远程访问 + 设置密码)
sed -i '/^bind 127.0.0.1/cbind 0.0.0.0' /etc/redis/redis.conf
sed -i '/^# requirepass/crequirepass 123456' /etc/redis/redis.conf

# 3. 启动Redis
systemctl enable redis –now

# 4. 从应用服务器连接测试(在ruoyi-java1上执行)
dnf -y install redis
redis-cli -h db-redis -p 6379 -a YANGge123@ ping
# 输出:PONG
# 同上1.3.3操作步骤

2.4 后端部署

2.4.1 基于RuoYi-Vue构建JAR包

# 1.克隆若依Vue项目
git clone https://gitee.com/y_project/RuoYi-Vue.git
cd RuoYi-Vue
# 2.修改数据库配置
vim ruoyi-admin/src/main/resources/application-druid.yml

在这里插入图片描述

# 3.修改Redis配置
vim ruoyi-admin/src/main/resources/application.yml

在这里插入图片描述

# 4.创建部署目录和服务用户
sudo useradd -r -s /sbin/nologin ruoyi
sudo mkdir -p /opt/ruoyi-vue/app /var/log/ruoyi-vue /opt/ruoyi-vue/config /opt/ruoyi-vue/upload
sudo chown -R ruoyi:ruoyi /opt/ruoyi-vue /var/log/ruoyi-vue
# 5.修改日志目录
sed -i 's|<property name="log.path" value=".*" />|<property name="log.path" value="/var/log/ruoyi-vue" />|' ruoyi-admin/src/main/resources/logback.xml
# 修改全局环境变量Java指向17版本(确保Java版本是17)
java -version
sudo tee /etc/profile.d/java.sh << 'EOF'
> export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
EOF
source /etc/profile.d/java.sh # 立即生效
# 6.安装Maven
sudo dnf -y install maven
mvn clean package -DskipTests
# 7.部署到目录
sudo cp ruoyi-admin/target/ruoyi-admin.jar /opt/ruoyi-vue/app/

2.4.2 创建外部配置文件(生产环境推荐)

# 1. 创建外部配置
sudo tee /opt/ruoyi-vue/config/application.yml << 'EOF'
spring:
profiles:
active: prod,druid
EOF

sudo tee /opt/ruoyi-vue/config/application-prod.yml << 'EOF'
spring:
datasource:
druid:
master:
url: jdbc:mysql://db-mysql:3306/ruoyi-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: ruoyi
password: 123456

data:
redis:
host: db-redis
port: 6379
password: 123456

ruoyi:
profile: /opt/ruoyi-vue/upload

logging:
file:
name: /opt/ruoyi-vue/logs/ruoyi.log
level:
com.ruoyi: info
org.springframework: warn
EOF

2.4.3 创建Systemd服务(生产部署)

# 1. 创建Systemd服务文件
sudo tee /etc/systemd/system/ruoyi-vue.service << 'EOF'
[Unit]
Description=RuoYi Vue Backend Service
After=network.target

[Service]
Type=simple
User=ruoyi
Group=ruoyi
WorkingDirectory=/opt/ruoyi-vue

ExecStart=/usr/bin/java \\
-Xms512m \\
-Xmx1024m \\
-XX:+HeapDumpOnOutOfMemoryError \\
-XX:HeapDumpPath=/opt/ruoyi-vue/logs/heapdump.hprof \\
-Dfile.encoding=UTF-8 \\
-jar /opt/ruoyi-vue/app/ruoyi-admin.jar \\
–spring.config.additional-location=file:/opt/ruoyi-vue/config/ \\
–spring.profiles.active=prod,druid

SuccessExitStatus=143
Restart=always
RestartSec=10

StandardOutput=journal
StandardError=journal

Environment="TZ=Asia/Shanghai"

[Install]
WantedBy=multi-user.target
EOF

# 2. 启动服务
sudo systemctl daemon-reload
sudo systemctl enable ruoyi-vue –now

# 3. 查看状态
sudo systemctl status ruoyi-vue -l
journalctl -u ruoyi-vue -f

在这里插入图片描述

2.5 部署前端

若依(RuoYi-Vue)前端是典型的 Vue 项目,部署核心步骤是:安装Node.js → 打包 → 上传dist → Nginx配置。

2.5.1 安装Node.js 18(若依推荐)

sudo dnf module reset nodejs -y #更新模块流数据
sudo dnf module enable nodejs:18 -y #指定模块流nodejs版本为18
sudo dnf install nodejs npm -y #使用模块流下载nodejs npm

node -v
npm -v

2.5.2 克隆若依Vue版并打包前端

git clone https://gitee.com/y_project/RuoYi-Vue.git
cd RuoYi-Vue/
git checkout -b ruoyi392 v3.9.2 # 基于标签 v3.9.2 创建新分支新版ruoyi中删除了ui文件
cd RuoYi-Vue/ruoyi-ui/
# 配置npm镜像源(加速)
npm config set registry https://registry.npmmirror.com

# 安装依赖并打包(生产环境)
npm install
npm run build:prod

2.5.3 查看打包产物

ls dist/
# favicon.ico html index.html index.html.gz robots.txt static styles

# 4. 安装Nginx
sudo dnf install -y nginx
sudo systemctl enable nginx –now

# 5. 部署前端文件
sudo mkdir -p /opt/ruoyi/dist
sudo cp -r dist/* /opt/ruoyi/dist/

# 6. 设置权限
chown -R nginx:nginx /opt/ruoyi/dist
chmod -R 755 /opt/ruoyi/dist

2.5.4 Nginx配置

sudo tee /etc/nginx/conf.d/ruoyi-vue.conf << 'EOF'
upstream ruoyi_backend {
server ruoyi-java1:8080;
keepalive 32;
}

server {
listen 80;
server_name ruoyi.wangchen.com;

client_max_body_size 100m;

# ===== 前端静态资源 =====
location / {
root /opt/ruoyi/dist;
index index.html;
try_files $uri $uri/ /index.html;
}

# ===== 后端 API 代理 =====
location /prod-api/ {
proxy_pass http://ruoyi_backend/;
proxy_http_version 1.1;
proxy_set_header Connection "";
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_send_timeout 60s;
proxy_read_timeout 60s;
}

# ===== 上传文件路径 =====
location /profile/ {
alias /opt/ruoyi/uploadPath/;
}
}
EOF

# 验证并重载Nginx
sudo nginx -t
sudo systemctl reload nginx

2.6 验证部署

修改本地 hosts 文件,将 ruoyi.wangchen.com 解析到 ruoyi-web1 服务器IP(10.0.0.113),然后访问

http://ruoyi.wangchen.com

三、若依vue后端扩容

3.1 整体架构

在这里插入图片描述

3.2 服务器规划

层级主机名IP地址组件端口作用
接入层 ruoyi-web1 10.0.0.113 Nginx 80/443 反向代理、静态资源
应用层 ruoyi-java1 10.0.0.120 若依JAR 8080 业务逻辑
应用层 ruoyi-java2 10.0.0.121 若依JAR 8080 业务逻辑
应用层 ruoyi-java3 10.0.0.122 若依JAR 8080 业务逻辑
缓存层 db-redis 10.0.0.120 Redis 6379 会话管理、缓存
数据层 db-mysql 10.0.0.160 MySQL 3306 数据持久化

3.3 服务器配置

3.3.1 基础配置

# 1.配置主机名
hostnamectl set-hostname ruoyi-java2
hostnamectl set-hostname ruoyi-java3
# 2.设置IP
nmcli connection modify ens160 ipv4.method manual \\
ipv4.addresses 10.0.0.121/24 \\
ipv4.gateway 10.0.0.2 \\
ipv4.dns 8.8.8.8,114.114.114.114 \\
autoconnect yes
10.0.0.122
# 2.配置主机名解析
# 3.配置yum源(阿里云镜像)
# 4. 安装基础软件包
# 5. 关闭防火墙和SELinux(简化实验环境)
# 以上操作步骤同上“1.3服务器部署”

3.3.2 安装Java环境

sudo dnf -y install java-17-openjdk
java -version
openjdk version "17.0.20.1" 2026-08-18 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.20.1.1-1) (build 17.0.20.1+1-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.20.1.1-1) (build 17.0.20.1+1-LTS, mixed mode, sharing

3.3.3 复制jar包到新后端节点

# 1. ruoyi-java2 ruoyi-java3准备相应服务用户及目录
sudo useradd -r -s /sbin/nologin ruoyi
sudo mkdir -p /opt/ruoyi-vue/app /var/log/ruoyi-vue /opt/ruoyi-vue/config /opt/ruoyi-vue/upload
sudo chown -R ruoyi:ruoyi /opt/ruoyi-vue /var/log/ruoyi-vue

# 2. 复制 ruoyi-admin.jar 到 ruoyi-java1 ruoyi-java2
sudo scp /opt/ruoyi-vue/app/ruoyi-admin.jar wangchen@ruoyi-java3:/home/wangchen/
sudo scp /opt/ruoyi-vue/app/ruoyi-admin.jar wangchen@ruoyi-java3:/home/wangchen/
sudo cp ruoyi-admin.jar /opt/ruoyi-vue/app/

3.3.4 创建外部配置文件

同上

3.3.5 创建Systemd服务

同上

3.4 配置 Nginx 负载均衡(ruoyi-web1)

sudo vim /etc/nginx/conf.d/ruoyi-vue.conf

在这里插入图片描述

3.4 测试

# 1. 停止 ruoyi-java1
#访问正常
# 2. 停止 ruoyi-java2
#访问正常
# 3. 停止 ruoyi-java3
#访问正常

#当后端所有节点均停止,产生502网关错误

四、实现HTTPS

4.1 证书申请

# 1.环境准备
sudo dnf install -y openssl ca-certificates
# 2. 创建目录并生成根CA
sudo mkdir -p /opt/ca && cd /opt/ca

sudo openssl req -x509 -new -nodes -newkey rsa:4096 -keyout ca.key -out ca.crt \\
-days 3650 -sha256 -subj "/C=CN/ST=Beijing/L=Beijing/O=MageEdu/OU=IT/CN=MageEdu Root CA"
chmod 400 ca.key

# 3. 生成私钥 + CSR(SAN写 *.wangchen.com)
sudo openssl req -new -nodes -out wangchen.csr -keyout wangchen.key \\
-subj "/C=CN/ST=Beijing/L=Beijing/O=MageEdu/OU=IT/CN=*.wangchen" \\
-addext "subjectAltName=DNS:*.wangchen.com,DNS:wangchen.com"

# 4. 用原有的 ca.crt 和 ca.key 签发证书
sudo openssl x509 -req -in wangchen.csr -CA ca.crt -CAkey ca.key \\
-CAcreateserial -out wangchen.crt -days 365 -copy_extensions copy

# 5. 验证 SAN 是否生效
openssl x509 -in wangchen.crt -text -noout | grep -A 3 "Subject Alternative Name"

4.2 配置Nginx

sudo vim /etc/nginx/conf.d/proxy-lb.conf
upstream yangge {
#ip_hash;
server ruoyi-java1:8080 weight=1 max_fails=3 fail_timeout=30s;
server ruoyi-java2:8080 weight=1 max_fails=3 fail_timeout=30s;
server ruoyi-java3:8080 weight=1 max_fails=3 fail_timeout=30s;
}

# ===== HTTP 跳转 HTTPS =====
server {
listen 80;
server_name www.wangchen.com wangchen.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name www.wangchen.com wangchen.com;
ssl_certificate /opt/ca/wangchen.crt;
ssl_certificate_key /opt/ca/wangchen.key;
client_max_body_size 100m;

# ===== 前端静态资源 =====
location / {
root /opt/ruoyi/dist;
index index.html;
try_files $uri $uri/ /index.html;
}

# ===== 后端 API 代理 =====
location /prod-api/ {
proxy_pass http://ruoyi_backend/;
proxy_http_version 1.1;
proxy_set_header Connection "";
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_send_timeout 60s;
proxy_read_timeout 60s;
}
# ===== 上传文件路径 =====
location /profile/ {
alias /opt/ruoyi/uploadPath/;
}
}

sudo nginx -t
sudo systemctl reload nginx

4.3 windows客户端访问

  • Windows安装ca.crt证书

  • hosts文件解析

    10.0.0.113 wangchen.com www.wangchen.com

  • 浏览器访问

  • 4.4 Linux访问

    curl www.wangchen.com -I 查看头信息 -k 跳过证书验证访问 https -L 跟随重定向

    赞(0)
    未经允许不得转载:171主机测评 » 若依项目部署
    分享到: 更多 (0)

    评论 抢沙发

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