RuoYi-Cloud介绍
RuoYi-Cloud 是一个 Java EE 分布式微服务架构平台,基于经典技术组合(Spring Boot、Spring Cloud & Alibaba、Vue、Element),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源。官方文档地址:https://doc.ruoyi.vip/ruoyi-cloud/
fork源码并下载
由于需要使用自己的mysql、redis和nacos,因此需要修改相关配置,fork一份源码方便提交自己的更改
源码地址https://gitee.com/y_project/RuoYi-Cloud
fork后的地址https://gitee.com/wangxianfeng/RuoYi-Cloud ,如果不想让别人看到自己的更新,可以首先把仓库修改为私有的。
下载源码:
git clone https://gitee.com/wangxianfeng/RuoYi-Cloud.git
部署环境介绍
- 家里有一台DSM,上面运行mysql,redis,nacos,ruoyi-cloud后台服务(auth,system,gateway,job,gen,monitor,sentinel等)
- 公网有一台阿里云服务器(ECS),域名已备案,二级域名任意用,上面部署frp,可以实现内网服务穿透到公网,上面部署ruoyi-ui,并用frp穿透gateway,file,为ruoyi-ui提供后台服务。
- DSM和ESC分别配置好java和maven,java版本为1.8,maven版本为3.6.*
ECS上安装mysql,redis
由于需要在家里和工作的地方访问mysql和redis,因此把mysql和redis安装在ECS上,安装方法见http://www.wangxianfeng.cn/2018/07/27/ecs%e4%b8%8adocker%e8%bf%90%e8%a1%8cmysql%ef%bc%8cphpmyadmin%ef%bc%8credis/
为了避免不兼容,选择mysql版本为5.7,redis就使用最新版本,我使用的是6.0.9版本
mysql 5.7版本docker安装命令如下:
docker run --name mysql57 -p 3309:3306 -v /root/mysqldata/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /root/mysqldata/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=test -d -e TZ=Asia/Shanghai mysql:5.7
部署RuoYi-Cloud
导入数据库初始化脚本
首先数据库中创建2个数据库用户:
1. ry-cloud:保存RuoYi-Cloud基本数据表,RuoYi-Cloud需要连接这个数据库,脚本路径:ruoyi-cloud/sql/ry_20210210.sql
2. ry-config:nacos配置表,nacos需要连接这个数据库,脚本路径:ruoyi-cloud/sql/ry_config_20210228.sql
3. quartz.sql对应作业任务相关表,也是导入到ry-cloud数据库中
4. ry_seata_20210128.sql暂时未导入,相关功能还未部署。
DSM上部署nacos
安装nacos
从github上下载nacos最新版,下载地址https://github.com/alibaba/nacos/releases 我部署的时候最新版本为2.0.0版本,因此下载地址是https://github.com/alibaba/nacos/releases/download/2.0.0/nacos-server-2.0.0.tar.gz
下载之后解压得到nacos目录
tar xzvf nacos-server-2.0.0.tar.gz
修改配置文件让nacos使用mysql数据库:
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://db.aiuyo.com:3309/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=xianfengmc
其他暂未修改,使用如下命令启动单机版本nacos服务器:
cd nacos/bin
./startup.sh -m standalone
如此,在机器的8848端口上启动了nacos服务,浏览地址为:
http://192.168.2.8:8848/nacos
默认用户名和密码为:nacos/nacos,进入页面之后可以修改默认密码。
修改nacos中配置文件中的mysql url路径及用户名密码
RuoYi-Cloud默认连接的mysql url是127.0.0.1:3306,需要修改为自己的数据库的url,如果用户名和密码不对,也需要修改(如ruoyi-auth-dev.yml):
其他同样需要修改的配置文件有,可以在数据库中直接使用update语句,直接修改,修改密码类似,注意先查询后修改,别修改错了:
SELECT *
FROM `config_info` c
WHERE c.content LIKE '%127.0.0.1:3306%'
UPDATE `config_info` c
SET c.`content` =
REPLACE(c.`content`,'127.0.0.1:3306','db.aiuyo.com:3309')
WHERE c.content LIKE '%127.0.0.1:3306%'
数据库配置修改完成之后就可以启动RuoYi-Cloud了
DSM上部署RuoYi-Cloud后台服务
RuoYi-Cloud后台服务必不可少的3个模块包含:
1. ruoyi-auth:负责认证的模块
2. ruoyi-modules\ruoyi-system:系统必须api
3. ruoyi-gateway:网关,所有请求通过网关统一发送和响应
下面先启动这3个组件:
首先使用maven编译所有模块:
cd ruoyi-cloud/
mvn install
编译完成之后,在各自模块的的target目录下会存放各自的可以直接运行的jar,如:
ruoyi-auth/target/ruoyi-auth.jar
在ruoyi-cloud/bin目录下提供了windows下的运行脚本,暂未提供linux下的启动脚本,因此编写几个组件的linux启动脚本:
auth_start.sh
echo 'starting auth'
cd ../ruoyi-auth/target
JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"
nohup java -Dfile.encoding=utf-8 -jar $JAVA_OPTS ruoyi-auth.jar >> /var/services/homes/wangxianfeng/work/ruoyi-cloud/logs/auth.log 2>&1 &
echo 'started auth,see log /var/services/homes/wangxianfeng/work/ruoyi-cloud/logs/auth.log'
system_start.sh
echo 'starting module system'
cd ../ruoyi-modules/ruoyi-system/target
JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"
nohup java -Dfile.encoding=utf-8 -jar $JAVA_OPTS ruoyi-modules-system.jar >> /var/services/homes/wangxianfeng/work/ruoyi-cloud/logs/system.log 2>&1 &
echo 'started module system,see log /var/services/homes/wangxianfeng/work/ruoyi-cloud/logs/system.log'
gateway_start.sh
echo 'starting gateway'
cd ../ruoyi-gateway/target
JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"
nohup java -Dfile.encoding=utf-8 -jar $JAVA_OPTS ruoyi-gateway.jar >> /var/services/homes/wangxianfeng/work/ruoyi-cloud/logs/gateway.log 2>&1 &
echo 'started gateway,see log /var/services/homes/wangxianfeng/work/ruoyi-cloud/logs/gateway.log'
赋予脚本运行权限之后,直接运行3个脚本即可启动3个模块,遇到错误可以到logs目录下查看对应报错日志。
ECS部署ruoyi-ui
ruoyi-ui基于vue开发,需要安装nodejs运行环境。
安装node和npm
首先ECS上安装node和npm,安装完成之后无需做其他操作,只需验证是否安装成功即可:
[root@aiuyo ~]# node -v
v15.3.0
[root@aiuyo ~]# npm -v
7.0.14
安装yarn
npm install -g yarn
使用如下命令运行测试版本ruoyi-ui
cd ruoyi-ui
yarn run dev
但是在ECS上不适合运行dev版本,因此在ECS上部署prod版本
安装ruoyi-ui prod版本
使用如下命令build prod版本
yarn run build:prod
完成之后在dist目录产生可以直接部署到生产环境文件,为了不每次build的时候赋值文件,稍后将把nginx的目录直接指向到dist目录
配置nginx
在nginx的conf目录的nginx.conf中,在http配置中添加以下配置,把ruoyi-ui相关配置独立出来:
http{
……
include /root/nginx/conf/conf.d/*.conf;
}
其中conf.d包含如下配置文件:default.conf和ry.conf,ry.conf内容如下:
server {
listen 8066;
server_name start.aiuyo.com;
access_log logs/ry.log main;
location / {
root html/dist;
index index.html;
try_files $uri $uri/ @router; # 需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
}
location @router {
rewrite ^.*$ /index.html last;
}
location /prod-api/ {
proxy_pass http://rygate.aiuyo.com/;
#下边是为获取真实IP所做的设置
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect default;
}
}
然后在nginx/html目录下创建软链接,链接到ruoyi-cloud的ruoyi-ui/dist目录:
cd nginx/html
ln -s ~/ruoyi-cloud/ruoyi-ui/dist dist
gateway配置
注意到上面的nginx中有/prod-api/相关配置,由于ruoyi-ui prod版本默认URL前缀为/prod-api/,因此我们需要配置/prod-api/指向gateway
首先把利用frp把gateway穿透到http://rygate.aiuyo.com/ 地址,即访问http://rygate.aiuyo.com/ 就相当于访问gateway,frpc配置如下:
[rygate]
type=http
custom_domains=rygate.aiuyo.com
local_ip=192.168.2.8
local_port=8080
use_encryption=true
use_compression=true
nginx中ry.conf中添加/prod-api/反向代理:
location /prod-api/ {
proxy_pass http://rygate.aiuyo.com/;
}
即访问/prod-api/的请求,全部转发到网关上。
这样基本的ruoyi-cloud就部署完成了,但是由于访问ruoyi-ui还需要加端口,因此还需要再次frp一下,使用二级域名,不再加端口,ECS上添加frpc,配置如下:
[ruoyi]
type=http
custom_domains=start.aiuyo.com
local_ip=127.0.0.1
local_port=8066
use_encryption=true
use_compression=true
如此,访问start.aiuyo.com即可访问ruoyi-ui页面,后端gateway也可以正常工作。
配置ruoyi-file
由于在公网上无法访问内容的ruoyi-file,因此头像文件无法加载,因此首先启动ruoyi-file模块:
ruoyi-cloud/bin/file_start.sh
echo 'starting module file'
cd ../ruoyi-modules/ruoyi-file/target
JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"
nohup java -Dfile.encoding=utf-8 -jar $JAVA_OPTS ruoyi-modules-file.jar >> /var/services/homes/wangxianfeng/work/ruoyi-cloud/logs/file.log 2>&1 &
echo 'started module file,see log /var/services/homes/wangxianfeng/work/ruoyi-cloud/logs/file.log'
启动完成之后,需要把内网服务穿透到公网:
[ruoyifile]
type=http
custom_domains=ruoyifile.aiuyo.com
local_ip=192.168.2.8
local_port=9300
use_encryption=true
use_compression=true
访问http://ruoyifile.aiuyo.com 即可访问ruoyi-file,还需要修改nacos中的ruoyi-file-dev.yml中的文件上传相关配置才能正确上传文件:
# 本地文件上传
file:
domain: http://ruoyifile.aiuyo.com
path: /var/services/homes/wangxianfeng/data/ruoyi/upload
prefix: /statics
domain即为访问ruoyi-file的ip和端口,path即为上传文件路径。如其中一个头像的访问路径为:
http://ruoyifile.aiuyo.com/statics/2021/03/28/472fafa5-0043-4805-adfa-65eab3826ffe.jpeg
文章评论