之前一直负责公司的部署项目,自认为前公司的项目是那种介于微服务和大单体之间的那种,不算纯粹的微服务系统,最近也想学习一下开源的微服务项目,就选择了比较热门的若依项目,该项目有单体的和微服务的版本,ruoyi-cloud是微服务的,大家选择的时候注意一下。
1.准备工作
- 获取项目源码
- 访问Gitee,下载RuoYi-Cloud项目代码。
- 环境准备
- 确保您的系统已安装Docker。
- 准备好Node.js用于前端开发, 根据ruoyi-ui目录中的readme文件执行,可直接执行下载依赖即可。下载完成后有个node_modules目录。根据readme文件中的启动命令启动前端项目后点击url能看到页面即可,报错先不管。
在项目的ReadMe文档中介绍了系统模块,其中注明了端口号的都是一个微服务,当然我不会启动所有的微服务。
对于中间件都是在docker中启动的
2.中间件安装
a.Nocos
docker pull nacos/nacos-server:v2.4.0
//先启动测试一下,最终启动需要连接mysql的
docker run -d \
--name nacos-standalone \
-p 8848:8848 \
-e MODE=standalone \
nacos/nacos-server:v2.4.0
使用这个http://localhost:8848/nacos 访问一下,如果能看到nacos页面就可以了;
b.MySQL
因为若依的nacos使用mysql存储配置,所以,我们在启动的时候要选择mysql
//docker 安装mysql脚本
docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0
可以用客户端连接测试一下:user:root/password:123456
将nacos的conf文件夹中的mysql-schema.sql的文件在mysql中执行,主要是为了创建若依启动时nacos所需要的表;
这时将nacos重新启动并连接数据库:执行此处时先将ruoyi中的表和sql语句先执行,见启动RuoYi-Cloud项目第一步。
docker run -d \
--name nacos-standalone-mysql \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST={your mysql ip} \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER={your user name} \
-e MYSQL_SERVICE_PASSWORD={your password} \
-e MYSQL_SERVICE_DB_NAME=ry-config \
nacos/nacos-server:v2.4.0
//这个是我自己的配置
docker run \
--name nacos-security-standalone-mysql \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.5.71 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=ry-config \
nacos/nacos-server:v2.4.0
映射9848和9849这两个端口号是为了grpc调用。
⚠️注意:ip不能是127.0.0.1,因为在nacos的容器中访问127.0.0.1是该容器本身,该容器中是没有mysql的。ip可以配置成mysql的容器所在的物理机ip。
c.redis
docker run -d --name redis -p 6379:6379 redis:latest
3.启动RuoYi-Cloud项目
部署项目要从底层开始,例如先从mysql,redis这些底层依赖开始部署。
a.执行sql语句[在项目中的sql目录下]
⚠️若依没有添加数据库名,但是在nacos配置ruoyi-system-dev.yml文件中可以查看,库名为ry-cloud。quartz.sql文件也是基于ry-cloud库的。
修改若依配置的mysql密码,若依中的配置的密码是password。
b.启动gateway服务
这个服务在启动时,因为和nacos server的版本存在兼容性问题,所以会出现如下错误:
Nacos注册失败:Client not connected,current status:STARTING
解决的话就是将SprinCloudAlibaba的版本从2021.0.6.1替换成2.2.6.RELEASE启动即可成功。后来我直接换成SpringBoot3启动还是报错,换成2.2.6.RELEASE版本就可以。后来我在官网发现2.0以上的nacos使用gRpc 的 9848和9849端口调用,解决的话是在容器启动时候暴露这两个端口号即可。
然后依次将所有的项目启动:
有端口号的是run模式启动,没有的是debug模式启动。
4.测试访问
5.云上部署
ToDo…