下载

下载的任何文件都建议放在不包含中文的目录下

下载项目

项目链接: https://gitee.com/y_project/RuoYi-Cloud
或使用git拉取

1
git clone https://gitee.com/y_project/RuoYi-Cloud.git

下载 nacos

官方下载: https://nacos.io/download/nacos-server/

下载 seata-server

官方下载: https://nacos.io/download/nacos-server/

下载 redis

这里用的是7.4.2版本
官方下载: https://redis.io/downloads/

下载 MySQL,Nginx

这里用的是小皮面板,可以集成 Nginx,MySQL,FTP等服务,这里只用到了MySQL和Nginx
官方下载: https://www.xp.cn/php-study

下载 Java

这里用的是jdk21
https://bell-sw.com/pages/downloads/

下载 sentinel

下载后放到Ruoyi-Cloud的jars文件夹(自建)内,此处用的是1.8.8版本
https://github.com/alibaba/Sentinel/releases

开发环境部署

个人习惯将后端和前端分开,解压项目后将Ruoyi-Cloud文件夹重命名为ruoyi-master,将ruoyi-master内的ruoyi-ui跟ruoyi-master放到同级目录。
建议使用默认端口,放行8848,9848,7848,9849

配置 Java 环境

解压 jdk-21_windows-x64_bin.zip 到不包含中文的目录下
打开环境变量


添加JAVA_HOME变量

点开Path变量

配置到bin目录

验证环境是否配置成功

部署 nacos

解压 nacos-server-2.5.1.tar.gz 到不包含中文的目录下

配置

编辑 nacos/bin/startup.cmd,修改 cluster 为 standalone
standalone 是单机部署 , cluster 是集群部署

将ruoyi-master/docker/nacos/conf/application.properties文件复制到nacos/conf/application.properties,并打开nacos/conf/application.properties修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://mysql-host:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=password

nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000

management.endpoints.web.exposure.include=*

management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false

server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i

server.tomcat.basedir=D://home/ruoyi/nacos/tomcat/logs

nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**

nacos.core.auth.system.type=nacos
# 开启认证
nacos.core.auth.enabled=true
nacos.core.auth.default.token.expire.seconds=18000
# 此字段将 nacos.core.auth.default.token.secret.key 做替换,值为base64编码后字符串长度>=32的字符串
nacos.core.auth.plugin.nacos.token.secret.key=6L+Z5piv5L2g55qE6ZW/5bqmPj0zMueahGJhc2U2NOe8lueggQ==
nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

nacos.istio.mcp.server.enabled=false

启动 nacos

双击或命令行运行 nacos/bin/startup.cmd
如果出现类似于这样的错误,删除startup.cmd内所有的rem行即可。

运行成功类似于下图

部署 seata-server

解压 apache-seata-2.3.0-incubating-bin.tar.gz 到不包含中文的目录下

配置seata-server

编辑 seata-server/conf/application.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

server:
port: 7091

spring:
application:
name: seata-server

logging:
config: classpath:logback-spring.xml
file:
path: ${log.home:${user.home}/logs/seata}
extend:
logstash-appender:
destination: 127.0.0.1:4560
kafka-appender:
bootstrap-servers: 127.0.0.1:9092
topic: logback_to_logstash

console:
user:
username: seata
password: seata
seata:
config:
# support: nacos, consul, apollo, zk, etcd3
type: nacos
nacos:
server-addr: 127.0.0.1:8848 # nacos地址
group: SEATA_GROUP # 配置文件的分组
username: nacos # nacos用户名
password: nacos # nacos密码
# 这是默认值
data-id: seata.properties # 配置文件的data id也就是配置文件名加后缀
registry:
# support: nacos, eureka, redis, zk, consul, etcd3, sofa
type: nacos
nacos:
application: seata-server #seata启动后在nacos的服务名
server-addr: 127.0.0.1:8848 # nacos地址
group: SEATA_GROUP # 配置文件的分组
cluster: default # 这个歌参数在每个微服务seata时会用到
username: nacos # nacos用户名
password: nacos # nacos密码
store:
# support: file 、 db 、 redis
mode: db
# server:
# service-port: 8091 #If not configured, the default is '${server.port} + 1000'
security:
# 此处的secretKey是nacos的 nacos.core.auth.plugin.nacos.token.secret.key
secretKey: 6L+Z5piv5L2g55qE6ZW/5bqmPj0zMueahGJhc2U2NOe8lueggQ==
tokenValidityInMilliseconds: 1800000
csrf-ignore-urls: /metadata/v1/**
ignore:
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/version.json,/health,/error,/vgroup/v1/**

运行 seata-server

seata-server/bin/seata-server.bat
运行成功类似于下图

部署 redis

解压 redis-7.4.2.zip 到不包含中文的目录下

配置 redis

如果不设置密码可以忽略配置
编辑 redis.conf
找到或添加配置 requirepass

1
requirepass 密码

运行 redis

运行成功类似于下图

部署 mysql

打开小皮面板,安装成功后如下图

修改数据库密码

启动mysql

配置 若依数据库

用可视化工具或命令行创建ry-cloud,ry-config,ry-seata三个库,数据库编码用utf8_general_ci
ry-cloud 导入 ruoyi-master/sql/ry_2025xxxx.sql (必须),ruoyi-master/sql/quartz.sql(可选)
ry-config 导入 ruoyi-master/sql/ry_config_2025xxxx.sql(必须)
ry-seata 导入 ruoyi-master/sql/ry_seata_2025xxxx.sql

运行 sentinel

cmd进入ruoyi-master/jars目录,运行以下命令

1
java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -Dcsp.sentinel.api.port=8719 -jar sentinel-dashboard-1.8.8.jar

后端运行

配置

根据图片修改模块的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Tomcat
server:
port: 9200

# Spring
spring:
application:
# 应用名称
name: ruoyi-auth
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
username: nacos
password: nacos # nacos 密码
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
username: nacos
password: nacos # nacos 密码

网关端口就是前端所请求的端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Tomcat
server:
port: 3000

# Spring
spring:
application:
# 应用名称
name: ruoyi-gateway
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
username: nacos
password: nacos # nacos 密码
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
username: nacos
password: nacos # nacos 密码
sentinel:
# 取消控制台懒加载
eager: true
transport:
# 控制台地址
dashboard: 127.0.0.1:8718
# nacos配置持久化
datasource:
ds1:
nacos:
server-addr: 127.0.0.1:8848
dataId: sentinel-ruoyi-gateway
groupId: DEFAULT_GROUP
data-type: json
rule-type: gw-flow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Tomcat
server:
port: 9300

# Spring
spring:
application:
# 应用名称
name: ruoyi-file
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
username: nacos
password: nacos # nacos 密码
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
username: nacos
password: nacos # nacos 密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Tomcat
server:
port: 9202

# Spring
spring:
application:
# 应用名称
name: ruoyi-gen
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
username: nacos
password: nacos # nacos 密码
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
username: nacos
password: nacos # nacos 密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Tomcat
server:
port: 9203

# Spring
spring:
application:
# 应用名称
name: ruoyi-job
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
username: nacos
password: nacos # nacos 密码
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
username: nacos
password: nacos # nacos 密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Tomcat
server:
port: 9201

# Spring
spring:
application:
# 应用名称
name: ruoyi-system
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
username: nacos
password: nacos # nacos 密码
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
username: nacos
password: nacos # nacos 密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Tomcat
server:
port: 9100

# Spring
spring:
application:
# 应用名称
name: ruoyi-monitor
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
username: nacos
password: nacos # nacos 密码
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
username: nacos
password: nacos # nacos 密码

运行

打开 ruoyi-master 下的bin目录,先执行clean.bat清理,再执行package.bat打包。
打包完成后执行run-xxx.bat
run-gateway.bat,run-auth.bat,run-modules-system.bat这三个必须运行,其余可选。

前端运行

配置

打开vue.config.js,将下图位置配置为网关的端口和ip

运行

先在命令行执行npm install
再执行npm run dev即可运行

生产环境部署

在开发环境的基础上打包前后端代码即可对生产环境部署

前端部署

在ruoyi-ui目录下执行npm run build:prod命令即可打包,打包完成后会生成dist目录,这个目录就是打包好的文件。


打开小皮面板将nginx启动并添加网站目录。


配置 Nginx 使前端的请求可以正确的转发到后端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
server {
listen 80;
server_name localhost;

location / {
# 设置为部署目录
root "D:/website/localhost_80";
try_files $uri $uri/ /index.html;
index index.html index.htm;
}

location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}

# 避免actuator暴露
if ($uri ~ "/actuator") {
return 403;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

最后重启Nginx没有抛出错误即完成前端部署

后端部署

部署前先运行起来 nacos,seata,mysql,redis,在开发环境中有写。
打开 ruoyi-master/bin 目录,执行 clean.bat,再执行package.bat进行打包
打包完成之后,根据下图把jar包复制出来用命令运行即可。


此处可扩展业务代码,每个模块下都有jar包。打包后都在每个模块下的target目录下。

最后还有下载的jars下的 sentinel-dashboard-1.8.8.jar 也要放到一起。

最后使用以下命令来运行所有jar包。

1
2
3
java -jar xxx.jar
# sentinel需要用以下命令运行
java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -Dcsp.sentinel.api.port=8719 -jar sentinel-dashboard-1.8.8.jar