一、下载 SpringCloud 项目代码
1、加载 Maven
2、必要时可能需要安装需要的插件支持
二、下载/运行 Nacos
Nacos 官网 下载连接若被重置,可以从这里进入获取
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
编译项目需要 Maven 支持,如果命令行无法执行的情况下,建议可以导入IDEA中,利用IDEA的maven去执行命令,我是用的后者。
编译后,目录 /nacos/distribution/target 下会有 nacos-server-$version 文件夹,可以直接将文件拷贝出来,为了学习和后期方便寻找位置,我在 Cloud 项目下创建了文件夹 support。
也可以在此下载稳定的版本 下载连接
打开 bin/startup.cmd,将集群模式修改成单机模式
原:set MODE="cluster"
改:set MODE="standalone"
打开 conf/application.properties,配置数据库链接,原项目使用的是 ry-config 命名,我做了修改,命名 ry-cloud-config。
配置到这里就完成了,但是不要着急启动,我们需要导入数据库。
打开 Cloud 项目,找到文件夹 sql,这里要注意一下,如果你想和原项目一致,这里不需要做修改,同样的 Nacos 配置的数据库也需要一致。
创建数据库,运行该 sql 脚本,导入成功后,双击执行 Nacos 中 bin/startup.cmd。
打开浏览器,访问 http://127.0.0.1:8848/nacos/index.html,默认的账号/密码均为:nacos
到此 Nacos 下载/运行完成。
注意:.sh 文件在 Linux 中无法执行,可以使用该方法解决
# vi startup.sh
:set ff=unix
:wq
三、下载/运行 Sentinel
可以从 https://github.com/alibaba/Sentinel/releases 下载 sentinel-dashboard-$version.jar 包。
通过 CMD 执行以下命令运行程序:
java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -Dcsp.sentinel.api.port=8719 -jar .\sentinel-dashboard-1.8.0.jar
打开浏览器,访问 http://127.0.0.1:8718,默认的账号/密码均为:sentinel
到此 Sentinel 下载/运行完成。
四、下载/运行 Seata
此内容是可选项,因为 Cloud 项目默认是关闭状态的,如果你不了解或者不需要,可以忽略。
可以从 https://github.com/seata/seata/releases 下载 seata-server-$version.zip 包。
Windows下载解压后(.zip),直接双击 bin/seata-server.bat 就可以了。
打开 Cloud 项目,找到文件夹 sql,这里要注意一下,如果你想和原项目一致,这里不需要做修改,同样的 Seata 配置的数据库也需要一致。
PS:访问 [集成 Nacos 配置中心],跟着教程走,由于我这边还未校验,所以暂时不贴出来了
记录 Seata 集成后序列化问题:
config.txt 加入以下配置:
client.undo.logSerialization=kryo
ruoyi-common-core 项目 pom.xml 加入依赖
<!-- 处理 Seata 序列化问题所需依赖 -->
<dependency>
<groupId>com.esotericsoftware.kryo</groupId>
<artifactId>kryo</artifactId>
<version>2.24.0</version>
</dependency>
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>de.javakaffee</groupId>
<artifactId>kryo-serializers</artifactId>
<version>0.44</version>
</dependency>
五、运行 SpringCloud 项目
进入 Nacos 管理系统中,配置必要的 yml 文件。
上面的图片中,Seate 原本设置的是 false ,因为我这边是集成了 Seate 的,所以我这里设置的 true。
上面图片中的数据库,ry-cloud 是基础数据库,在 Cloud 中的 sql 文件夹中。
这里的 quartz.sql 是可选的,看你自己的需求。
接下来继续配置 Nacos 管理系统中的 yml。
到此,Nacos 管理系统中的 yml 就配置完成,接下来我们配置 Cloud 中的文件。
到此,Cloud 项目也配置好了,可以使用 IDEA 直接运行项目了。
还没有结束,因为 Cloud 项目使用的是 SpringBoot-Vue,所以我们还需要编译/执行前端。
这里值得注意的是,如果执行失败了,建议查看下命令行权限。可使用“管理员权限”打开 CMD 重试。
# 进入项目目录
cd ruoyi-ui
# 安装依赖
npm install
# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。
npm install --registry=https://registry.npmmirror.com
# 本地开发 启动项目
npm run dev
到此,项目就成功运行了。
六、项目依赖分离配置
以 ruoyi-auth 项目为例,在 pom.xml 文件中 <build><plugins>粘贴</plugins></build>累加该内容即可
<!-- 上线部署 JAR启动分离依赖lib和配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!--运行jar包时运行的主类,要求类全名-->
<mainClass>com.ruoyi.auth.RuoYiAuthApplication</mainClass>
<!-- 是否指定项目classpath下的依赖 -->
<addClasspath>true</addClasspath>
<!-- 指定依赖的时候声明前缀 -->
<classpathPrefix>lib/</classpathPrefix>
<!-- jar包不包含唯一版本标识 -->
<useUniqueVersions>false</useUniqueVersions>
</manifest>
<manifestEntries>
<Class-Path>config/</Class-Path>
</manifestEntries>
</archive>
<!-- 输出位置 -->
<outputDirectory>${project.build.directory}/separation</outputDirectory>
<!-- 去掉不需要打进 jar 的配置文件 -->
<excludes>
<exclude>bootstrap.yml</exclude>
<exclude>logback.xml</exclude>
</excludes>
</configuration>
</plugin>
<!-- 拷贝依赖 copy-dependencies -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/separation/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 拷贝资源文件 copy-resources -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 指定参与构建的 resource -->
<includes>
<include>bootstrap.yml</include>
<include>logback.xml</include>
</includes>
</resource>
</resources>
<outputDirectory>
${project.build.directory}/separation/config
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
- 打赏
- 微信
- 支付宝