1:环境准备
开发环境:
- jdk:1.8
- MySQL:5.7+
- redis
- rabbitMq
- node.js
- consul
开发工具:IntelliJ IDEA
,需要安装的插件lombok
2: 下载项目
.git clone
下载 spring-microservice-exam
.git clone https://gitee.com/wells2333/spring-microservice-exam.git
3: 修改配置
-
按需修改spring-microservice的config-servicce的/config文件夹下各服务的配置
-
例如:ip、端口、数据库名称等,所有配置均有默认,比如数据库的ip为
localhost:3306
,账号为root/11
-
redis:
localhost:6379
-
rabbitMq:
localhost:5672
-
运行数据库初始化脚本:
首先新建四个数据库,分别是:microservice-user、microservice、microservice-auth、microservice-gateway,分别执行下面的SQL脚本:
特别说明:下方数据库名需要使用tab建上面的撇号"`"包裹的
create database
microservice-auth
default character set utf8 collate utf8_general_ci;
create databasemicroservice-exam
default character set utf8 collate utf8_general_ci;
create databasemicroservice-gateway
default character set utf8 collate utf8_general_ci;
create databasemicroservice-user
default character set utf8 collate utf8_general_ci;
- docs/deploy/mysql/init/microservice_auth.sql
- docs/deploy/mysql/init/microservice_exam.sql
- docs/deploy/mysql/init/microservice_gateway.sql
- docs/deploy/mysql/init/microservice_user.sql
4: 启动后端项目
- 启动项目前要先确认consul、MySQL、redis、rabbitMq是否已经启动
- 配置JVM参数:目的是限制每个服务的内存:如
config-server
可以分配64M(-Xmx64m -Xms64m),其他服务分配128M(-Xmx128m -Xms128m) - 按顺序启动
- config-service :9181
- auth-service :9182
- user-service :9183
- exam-service :9184
- gateway-service :9180
需要监控功能在启动 - monitor-service :9186
- msc-service :9185
这里可能会报链接不上zipkin的异常,可以忽略,因为zipkin服务没启动,不影响部署。
- 先解决一个问题吧,就是有一个包是需要手动添加到maven的
添加教程:添加jar包到maven仓库教程地址
mvn install:install-file -Dfile=QRCode.jar -DgroupId=QRCode -DartifactId=QRCode -Dversion=3.0 -DcreateChecksum=true -Dpackaging=jar -DgeneratePom=true
-
成功截图
去你的maven下可以找到这个jar信息
最后就可以看到所有的jar都引入正常了
-
修改项目VM
-
访问consul管控台,检查各个服务的health check是否正常,如下图说明所有服务均启动成功
5: 启动前端项目
- 安装前端依赖 (方式一 npm)
分别在frontend/spring-microservice-exam-ui
、frontend/spring-microservice-exam-web
,目录下,命令行运行:
$ npm install
安装过程可能耗时较久,还可能安装node-saas失败,可以再执行:
$ npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
$ npm run dev
- 安装前端依赖(方式二 yarn)
# 安装yarn
npm install -g yarn
# 下载依赖
yarn install
# 启动
yarn run dev
# 编译项目
yarn run build
# Lints and fixes files
yarn run lint
-
我直接用的yarn方式,前端下载依赖没出错,启动的时候出错了,错误信息如下:
-
解决办法修改spring-microservice-exam-ui的package.json文件
“vue-spinkit”: “~1.4.1”,
- spring-microservice-exam-web这个项目的不用修改,直接就可以启动
- 这个问题解决思路:
由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。
"5.0.3",
"~5.0.3",
"^5.0.3"
“5.0.3”表示安装指定的5.0.3版本,“~5.0.3”表示安装5.0.X中最新的版本,“^5.0.3”表示安装5.X.X中最新的版本。这就麻烦了,常常会出现同一个项目,有的同事是OK的,有的同事会由于安装的版本不一致出现bug。
7. 配置 IntelliJ IDEA
-
可以在上面的idea命令行页面运行下载依赖的操作
-
启动的话就和你平时启动项目没两样,右上角的启动按钮启动就行了
-
项目启动成功登录截图
前台:localhost:8080
后台:localhost:9527
-
默认账号
管理员:admin/123456
学生:student/123456
教师:teacher/123456
6: 监控
名称 | 地址 |
---|---|
rabbitMq监控 | localhost:15672 |
spring boot admin服务监控 | localhost:9186 |
zipKin链路跟踪 | localhost:9411 |
consul | localhost:8500 |
7: 其他
- 密钥库(部署可暂时忽略)
使用keytool生成jwt token密钥库
$ keytool -genkeypair -alias jwt -keyalg RSA -dname “CN=jwt,L=Berlin,S=Berlin,C=DE” -keypass abs123 -keystor
执行下面命令,输入密钥,复制输出的公钥
$ keytool -list -rfc --keystore jwt-jks | openssl x509 -inform pem -pubkey
- GC参数
生产参数实例
-Xmx512m -Xms256m -XX:+UnlockDiagnosticVMOptions -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:AutoBoxCacheMax=20000 -XX:-UseBiasedLocking -XX:-UseCounterDecay -XX:-OmitStackTraceInFastThrow -Djava.security.egd=file:/dev/urandom -XX:+CMSParallelInitialMarkEnabled -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+HeapDumpOnOutOfMemoryError -XX:+PerfDisableSharedMem -XX:+PrintCompressedOopsMode -XX:-PrintGCApplicationStoppedTime
-
接口文档地址: localhost:9180/swagger-ui.html
-
后台页面展示
8: 项目地址
9: 本机环境
- jdk:1.8
- Erlang:V8.3(特别说明,安装rabbitMQ之前要安装erlang环境)
- rabbitMQ:3.6.12
- node:v12.16.3
- mysql:5.7
- redis
- consul:1.4.3