文章目录
一、环境推荐
1. 代码运行环境
1、JDK推荐21版本 (21新特性:虚拟线程),注意spring官方并不推荐oracle JDK,而是推荐Liberica JDK(OpenJDK基础上进行扩展):https://bell-sw.com/pages/downloads/
2、mysql推荐8.0版本,https://dev.mysql.com/downloads/mysql/
3、redis推荐7.x以上版本,https://github.com/zkteco-home/redis-windows
redis配置,redis.conf
# redis 密码
requirepass ''
# key 监听器配置,如果key值发生改变或删除时,可以触发发布订阅下的监听,从而知晓某键值发生的改变
# notify-keyspace-events Ex
# 配置持久化文件存储路径,这里配置的是当前redis.conf文件同级目录下的/redis/data
dir ./redis/data
# 配置rdb快照策略,能够按如下规则进行持久化备份
# 15分钟内有至少1个key被更改则进行快照
save 900 1
# 5分钟内有至少10个key被更改则进行快照
save 300 10
# 1分钟内有至少10000个key被更改则进行快照
save 60 10000
# 开启rdb的压缩
rdbcompression yes
# rdb文件名 用默认的即可
dbfilename dump.rdb
# 开启aof持久化
appendonly yes
# aof文件名
appendfilename "appendonly.aof"
# 持久化策略,no:不同步,everysec:每秒一次,always:总是同步,速度比较慢。这里设置为每秒1次。服务器关机重启时,会优先通过aof恢复数据,若aof文件发生损坏,会通过rdb恢复
# appendfsync always
appendfsync everysec
# appendfsync no
4、redis管理工具推荐:https://github.com/qishibo/AnotherRedisDesktopManager
5、分布式高性能高可用文件系统推荐minio:https://min.io/open-source/download?platform=windows
下载好后,将其放在一个指定文件夹中,并运行上图中官网给出的命令
minio.exe文件的位置 server 数据文件存放的位置 --console-address ":9001"
将命令输入到cmd窗口中运行即可(会提供两个端口,可以看到9000是API端口,9001是webUrl的端口)
6、maven推荐3.9.x以上版本:https://maven.apache.org/download.cgi
7、node.js推荐安装最新,同时npm要8.x以上。可以使用nvm进行多版本管理(通过命令使用nvm进行安装node):https://github.com/coreybutler/nvm-windows
cmd命令窗口中使用的相关命令介绍
# 查看已安装的nodejs
nvm list
# 查看nodejs可用的版本(全网),方便我们安装时选择版本号
nvm list available
# 安装指定version版本arch位(一般不指定arch,32或64位,不指定默认自己电脑的位数)的nodejs
# 例如nvm install 20,就是安装20版本中最新的nodejs
nvm install <version> [arch]
# 使用指定version版本arch位的nodejs
nvm use [version] [arch]
8、Idea千万不要用23版本的,24.3是官方推荐版本。相关配置如下:
1. 文件编码统一设置为UTF-8
2. 导航条插件CodeGlance Pro
3. MyBatisX插件,可以方便的跳转Mapper接口和xml的映射
4. Rainbow Brackets Lite免费版,代码中的括号将会像彩虹一样了,方便我们区分
5. Show Comment插件,会显示每个文件相关注释,让我们快速根据项目目录中的文件和文件夹的注释,来知道每个文件是干什么用的
6. 配置本地MAVEN仓库
2. 项目代码本地运行
2.1 git下载安装使用并获取开源项目代码到本地
1、下载最新版git:https://git-scm.com/,傻瓜式安装即可
2、cmd窗口输入命令git,提示如下信息代表安装成功
3、Gitee上创建一个私人项目,方便我们做二次开发,还可以将我们的代码保存在云上。它会给出Git全局设置,这两个命令我们待会要用
4、新建一个文件夹,作为本地项目存放地址,右键打开git命令行
5、全局设置用户名和密码(就用创建码云仓库后给出的)
6、克隆RuoYi-Cloud-Plus源码到本地。进入项目后复制git终端指令。在我们的命令窗口运行
7、通过idea打开克隆的项目,选择我们想要的版本,一般实际开发中,我们不会使用dev版本,目前2.x是最新版,我们选择2.x(也是默认选择的版本)
2.2 代码改动如何同步
1、我们已经在开源项目源码基础上二次开发了一段时间后,此时开源项目的源码进行了更新,例如修改了一些bug或增加了一些功能,此时我们应该怎么办呢?
2、我们下载源码用idea打开后,通过git窗口,我们回到当前最新版本的之前分支的提交中。模拟我们开发了一段时间后,开源项目更新了一些代码
3、此时会给出提示,是否进行混入,也就是我们自己开发的代码是否保留,选择Mixed就会保留我们的改动,而选择Hard代表完全不保留我们本地代码
从现在开始,将模拟开源项目线上发生改动后,我们想要同步时的完整操作
1、点击Fetch All Remotes,将线上发生改动的代码全部拉取到本地。(此时实际线上是没有改动的,因为我们刚刚克隆项目,就是最新的代码。上面我们回滚到之前分支的代码,就是为了模拟我们开发一段时间后,开源项目更新的情况)
2、此时双击最新的2.x分支,就会发现,有一些分支是灰色的,代表远程更新了,但是我们没有同步到本地
3、选择一个更新,点击右键,选择Cherry-Pick,将代码拉取到本地。此时如果提示failed,根据提示信息,发现它告诉我们没有提交本地变化,本地代码会被覆盖,需要先提交本地代码
4、提交本地代码到git
5、之后再进行摘草莓Cherry-pick操作即可,如果文件有冲突(你改过,线上也改过),那么它会提示你,对于冲突的代码,你可以选择使用线上还是本地的。
6、摘完后,我们点击最新的分支,右键选择compare with local和本地代码比对,如果显示no difference没有不同,就代表同步完成了
2.3 代码同步时,如何部分采纳
当我们Cherry-pick时,是采纳整个文件的改动,而我们只想采纳部分改动时,就不可以使用Cherry-pick
1、我们点击某个更新的分支修改的文件,就可以直接和本地进行对比,会展示不同的地方,如果我们对某些修改想要采纳,就将其采纳过来就可以了
2、如果线上更新的文件我们本地没有,我们就选择这个文件,右键,选择Get from Revision就可以将这个文件下载到本地
2.4 部分采纳时,包路径发生变化
1、如果包路径发生变化,我们也只想部分采纳时,就将线上更新的代码全部复制,然后按3下shift找到这个包路径发生变化的类,去类中进行剪切板比对
2、定位到我们本地这个类后,右键选择Compare with Clipboard与剪切板内容进行比对
3. 同时管理私人仓库和开源项目仓库
我们可以同时管理多个仓库,一个是开源项目,一个是我们自己的业务代码仓库。
1、进入git选项卡,选择Manage Remotes管理远程仓库
2、将我们开源项目仓库起一个名字,代表这个是开源项目源码仓库
3、同样的,我们新建一个Remote远程仓库管理,这个就要同步为我们自己的仓库,我们的代码push到这个仓库,而不是开源项目仓库(push不进去,不是我们的仓库,没权限)。只需要回到我们的Gitee仓库,复制Https给的链接,输入添加即可。
最后将其push到我们自己的仓库中,注意上面我添加Remote远程仓库https链接时,使用的是ydddd这个名字,我们使用命令
git push -u yddd 要提交的本地分支:远程仓库的分支,我这里自然就是git push -u yddd 2.X:master
此时我们回到码云,刷新一下,代码就都成功被推送到远程仓库中了
如果你的远程仓库之前已经有代码了,上传过东西了,我们现在上传一个全新项目肯定会冲突,就需要我们先去把仓库清空,或者新建一个仓库
前端代码也是同理的,使用WebStorm和idea操作步骤一致
二、代码运行
1、后端
1.1 基础服务启动
1. JDK版本,如果我们使用21版本,需要在根目录pom文件中,将其对应改为21
2. 环境确认,是否是dev开发环境,而不是prod生产环境。我们的配置文件都是配置在nocos中的,我们开发代码时,要读取dev后缀的配置文件(连接测试库),而项目上线后连接正式库需要读取prod环境配置文件
3、数据库准备Mysql为例
3.1、新建ry-cloud数据库(是主要的sql,存放用户,系统权限控制等系统运行基础的sql),字符集选择utf8mb4,排序规则选择utf8mb4_general_ci。将源码中script文件夹中提供的ry-cloud.sql中的sql语句,在我们新建的ry-cloud数据库执行
3.2、同样的步骤创建ry-config数据库(配置中心的sql,管理我们nacos相关的数据,包括配置文件等),并导入源码提供的ry-config.sql进行执行
3.3、创建ry-job数据库(调度中心的sql),并在源码中导入相应sql
3.4、创建ry-seata数据库(分布式事务的sql),并在源码中导入相应sql
3.5、创建ry-workflow数据库(工作流的sql),并在源码中导入相应sql
4、配置nacos
4.1、推荐使用框架自带的nacos,并编辑它的配置文件,修改其数据库配置和我们的环境对应,也可以修改其端口号,登录的账号密码等。
4.2、当然,如果我们修改了上面的配置,例如修改了ip地址,那么我们就需要再根目录的对应环境配置中修改nacos地址,因为我们的微服务都会从根目录配置的地址访问nacos(配置在根目录省事,否则每个微服务都得单独配置,一旦修改,所有微服务都得一个个改。)
5、启动redis,记住指定配置文件启动。可见配置文件中,我启用了密码
因此,我们要在源码的script文件夹config下的nacos中的application-common.yml配置文件中对redis进行相应配置
6、启动nacos、并登录nacos(默认用户名和密码均为nacos)
6.1、配置管理中,选择dev命名空间,然后会看到一堆已经创建的dev环境配置。而对应的源码中scripts文件夹中的config下也提供了相应的配置,将里面的内容复制进来就行了
另外,官方文档中也提示我们应该修改的配置,要与我们的环境进行对应,主要是redis和mysql的配置(共3个配置文件,application-common.yml和datasource.yml以及seata-server.properties),尤其是datasource.yml的mysql密码,例如我的数据库密码是root,就改成root
其次我们也可以设置一下redis的key前缀,如果我们运行多个项目,大家都用0号reids数据库的话,不设置key前缀可能有键值冲突的问题,建议每个不同的项目设置一个不同的key前缀
7、依次启动gateway,
seate,auth,system微服务(记得启动seate)
启动服务时,如果提示命令太长(windows命令长度限定为255),就点击右上角服务旁边的3个点,选择edit,选择对应微服务,修改shoarten command line为JAR manifest即可
1.2 扩展服务启动
1、monitor监控中心
2、依次启动(可选)sentinel限流,snailjob任务调度模块
1.3 资源服务
1、启动minio,我们可以编辑一个bat脚本输入minio.exe文件的位置 server 数据文件存放的位置 --console-address “:9001”
2、双击运行即可
3、运行rescouce资源服务模块
3.1 进入系统后,点击系统管理-文件管理-配置管理按钮,修改minio的配置
3.2 我们需要将minio的access key和Secret key配置上,具体看第4步骤
4、进入minio的web页面
4.1 创建一个access key
4.2 创建后,会给出Access Key和Secret Key,我们依次将AccessKey和Secret Key复制到系统中配置起来(注意这俩玩意只会出现一次,如果不小心忘记,只能删除后重新创建)
5、创建桶bucket,我们可以直接在minio界面创建,原来框架自带了创建桶的功能,我们上传文件时,会根据我们上面配置的桶名称自动创建。但是之后就不行了,具体看下图。
6、此时我们就可以正常上传文件了
2、前端
1、安装依赖:npm install --registry=https://registry.npmmirror.com
2、输入npm run dev启动服务(如果报错大概率是node版本问题,降低版本即可)
3、地址栏输入项目访问地址,登录访问即可
三、后续更新
1、sql
项目提供了版本更新的升级sql,目的是当我们二次开发一段时间后,此时开源项目更新到了新的版本,如果我们想要使用新版本的功能,又不能把我们当前项目的数据库删掉重新创建,所以提供了更新sql,让我们使用这些sql,在我们使用的当前版本的基础上,升级到更新版本。
例如,我当前使用最古老的2.0版本,有一天无意发现,开源项目已经更新到2.5.0版本了。
上图中可见,项目已经经历了2.1,2.1.1,…,2.5.0这样非常多的版本了,此时我们想要升级到2.5.0,就需要从2.0-2.1这个sql开始执行,不断的进行升级,直到我们的目标版本。
特别说明:如果我们直接使用最新版,是不需要执行升级sql的,因为默认的sql就包含全部内容。
只有我们使用旧版本的这些默认sql创建项目后,后续需要升级版本,才需要执行升级sql。
四、公网内网穿透到虚拟机环境
主要讲解我们的本地电脑,创建了一个linux系统的虚拟机,如何通过公网ip,进行内网穿透。
由于内容较多,将其放在另一篇文章中:https://blog.youkuaiyun.com/grd_java/article/details/153127596
五、docker服务器环境配置
主要讲解如何配置docker和docker-compose,以及基于docker的开发测试环境搭建,和使用docker-compose部署项目上线
由于内容较多,将其放在另一篇文章中(开发环境配置):https://blog.youkuaiyun.com/grd_java/article/details/153273920
六、部署上线
第五章完全吃透后,即可以同样的步骤尝试将项目部署到服务器,那么不同的,上面是dev开发环境,这里是prod正式环境。
由于内容较多,将其放在另一篇文章中(正式上线环境配置):https://blog.youkuaiyun.com/grd_java/article/details/153515719
源码讲解
@TODO,稍后更新




















































































858






