• MeterSphereV2.3版本Mac本地启动详细教程(含常见错误)


    一、准备工作

    1. 因为代码是java语言写的,所以提前准备好java的环境
    2. JDK11 :https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html
    3. maven(3.6.2以上都行):https://archive.apache.org/dist/maven/maven-3/
    4. git安装
    5. mac安装nodejs和npm:https://www.cnblogs.com/aspirant/p/15875878.html
    6. docker安装 (推荐v20.10):https://www.docker.com/products/docker-desktop/
    7. mysql安装:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.30-macos12-x86_64.dmg
    8. redis安装:https://blog.csdn.net/yinjl123456/article/details/118977360
    9. minio安装:https://blog.csdn.net/sinat_29356635/article/details/127068778
    • 以上环境根据自己电脑系统安装即可。
    • 环境已准备好,请忽略。

    二、下载代码

    代码地址:https://github.com/metersphere/metersphere/tree/v2.3
    需要拉取服务为:

    1. metersphere
    2. ms-jmeter-core
    3. jmeter-plugins-webdriver

    三、Mac版本启动

    3.1 启动前准备

    参考官网把mysql,redis,还有metersphere.properties 分别准备好。(注意:windows系统注意metersphere.properties 的位置。类似:D:\opt\metersphere\conf\metersphere.properties)
    https://metersphere.io/docs/v2.x/dev_manual/

    V2.3. 版本做了微服务改造,目录结构区别还是蛮大的。

    .
    ├── Jenkinsfile                                     # 构建JAR包使用的 jenkinsfile
    ├── LICENSE
    ├── OWNERS
    ├── README.md                                       # 项目中文介绍
    ├── README-EN.md                                    # 项目英文介绍
    ├── SECURITY.md                                     # 安全说明
    ├── CODE_OF_CONDUCT.md                        
    ├── CONTRIBUTING.md 
    ├── build.md                                        # 构建过程
    ├──framework                                          
    │   ├── eureka                                       # 服务注册中心
    │   ├── gateway                                      # API 网关
    │   ├── sdk-parent                                   # SDK
    │   ├── .gitignore                                    
    │   └── pom                                          # 主框架的 pom 文件           
    ├──test-track                                        # 测试跟踪模块
    │   ├── backend                                      # 后端代码目录
    │   ├── frontend                                     # 前端代码目录
    │   ├── Dockerfile                                   # 构建容器镜像使用的 dockerfile
    │   └── pom                                          # 测试跟踪模块使用的 pom 文件   
    ├── api-test                                         # 接口测试模块
    │   ├── backend                                      # 后端代码目录
    │   ├── frontend                                     # 前端代码目录
    │   ├── Dockerfile                                   # 构建容器镜像使用的 dockerfile
    │   └── pom                                          # 接口测试模块使用的 pom 文件
    ├── performance-test                                 # 性能测试模块
    │   ├── backend                                      # 后端代码目录
    │   ├── frontend                                     # 前端代码目录
    │   ├── Dockerfile                                   # 构建容器镜像使用的 dockerfile
    │   └── pom                                          # 性能测试模块使用的 pom 文件
    ├── report-stat                                      # 报表统计模块
    │   ├── backend                                      # 后端代码目录
    │   ├── frontend                                     # 前端代码目录
    │   ├── Dockerfile                                   # 构建容器镜像使用的 dockerfile
    │   └── pom                                          # 报表统计模块使用的 pom 文件  
    ├── project-management                               # 项目管理模块
    │   ├── backend                                      # 后端代码目录
    │   ├── frontend                                     # 前端代码目录
    │   ├── Dockerfile                                   # 构建容器镜像使用的 dockerfile
    │   └── pom                                          # 项目管理模块使用的 pom 文件 
    ├── system-setting                                   # 系统设置模块
    │   ├── backend                                      # 后端代码目录
    │   ├── frontend                                     # 前端代码目录
    │   ├── Dockerfile                                   # 构建容器镜像使用的 dockerfile
    │   └── pom                                          # 系统设置模块使用的 pom 文件
    ├── .gitignore
    ├── .gitmodules
    └── pom.xml                                         # 整体 maven 项目使用的 pom 文件
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    以上工作都完成之后,我们就开始本地启动了。

    3.2 打包依赖

    注意:三个项目的maven仓库必须配置一致。如果在打包过程中包依赖找不到问题,就去看下自己的仓库地址是否一致。

    因为启动metersphere 需要 一些依赖,所有我们在启动之前先把 ms-jmeter-core 和 jmeter-plugins-webdriver 给 打包一下:

    mvn clean install 
    
    • 1

    3.3 启动metersphere服务

    以上依赖都打包好之后,开始执行以下命令,如果打包依赖有问题,请参考下面的问题解决。

    在项目根目录下面执行以下命令

      1. 依赖打包
    # parent pom 安装到本地仓库, sdk 也进行安装
    ./mvnw install -N
    ./mvnw clean install -pl framework,framework/sdk-parent,framework/sdk-parent/domain,framework/sdk-parent/sdk
    
    #  如果是企业版本 需要加上  framework/sdk-parent/xpack-interface
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
      1. 整体打包
    ./mvnw clean package
    
    • 1

    image.png
    以上是成功的图片

    启动顺序

    1. 先启动eureka
    2. 再启动system-setting (创建数据库的),到这一步 如果可以启动成功,就可以访问页面了。

    image.png

    1. 如果要进行多模块联调的话需要启动 gateway 和其他服务
    • 可以通过eureka查看服务信息,注册成功,就可以多模块联调了。

    image.png

    完整配置文件:

    metersphere.properties
    # eureka 配置
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
    
    
    # 数据库配置
    spring.datasource.url=jdbc:mysql://localhost:3306/metersphere2.3?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=Calong@2015
    
    
    # kafka 配置,node-controller 以及 data-streaming 服务需要使用 kafka 进行测试结果的收集和处理
    kafka.partitions=1
    kafka.replicas=1
    kafka.topic=JMETER_METRICS
    kafka.test.topic=JMETER_TESTS
    kafka.bootstrap-servers=127.0.0.1:9092
    kafka.log.topic=JMETER_LOGS
    kafka.report.topic=JMETER_REPORT
    
    # node-controller 所使用的 jmeter 镜像版本
    jmeter.image=registry.cn-qingdao.aliyuncs.com/metersphere/jmeter-master:5.5-ms1-jdk11
    
    # TCP Mock 端口范围
    tcp.mock.port=10000-10010
    
    # Redis 配置
    spring.redis.host=localhost
    spring.session.store-type=redis
    spring.redis.port=6379
    spring.redis.password=Password123@redis
    
    
    # 启动模式,lcoal 表示以本地开发模式启动
    run.mode=local
    
    # minio 配置
    minio.endpoint=http://localhost:9000
    minio.accessKey=minioadmin
    minio.secretKey=minioadmin
    
    ## CAS
    #cas.client.name=MS_SERVER
    ## CAS SERVER URL
    #cas.server.url=http://xxx/cas
    ## METERSPHERE SERVER URL
    #as.client.url=http://IP:8081    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    mysql
    [mysqld]
    datadir=/var/lib/mysql
    
    default-storage-engine=INNODB
    character_set_server=utf8mb4
    #lower_case_table_names=1  --> mysql8 初始化的时候带上
    performance_schema=off
    table_open_cache=128
    transaction_isolation=READ-COMMITTED
    max_connections=1000
    max_connect_errors=6000
    max_allowed_packet=64M
    innodb_file_per_table=1
    innodb_buffer_pool_size=512M
    innodb_flush_method=O_DIRECT
    innodb_lock_wait_timeout=1800
    
    server-id=1
    log-bin=mysql-bin
    expire_logs_days = 2
    binlog_format=mixed
    
    character-set-client-handshake = FALSE
    character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci
    init_connect='SET default_collation_for_utf8mb4=utf8mb4_general_ci'
    
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    
    skip-name-resolve
    
    [mysql]
    default-character-set=utf8mb4
    
    [mysql.server]
    default-character-set=utf8mb4
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    3.4 总结

    1. 准备好自己的环境
    2. 拉取metersphere代码,项目根目录下执行 ./mvnw install -N
    3. 拉取ms-jmeter-core和jmeter-plugins-webdriver 并且执行 mvn clean install
    4. metersphere 根目录下执行:
    ./mvnw clean install -pl framework,framework/sdk-parent,framework/sdk-parent/domain,framework/sdk-parent/sdk
    
    • 1
    1. metersphere 根目录下执行:./mvnw clean package 打包跟网络和电脑自身的资源配置有关系(大约30min~2h)

    以上就是源码启动MeterSphereV2.3微服务架构版本的方法,如有问题,欢迎指正。

    四、常见遇到的问题

    4.1 启动gateway 报错:“redis.ReactiveRedisSessionRepository” that cloud not be found.

    • 问题:是因为metersphere.properties 少了配置

    image.png

    • 解决:

    image.png
    在metersphere.properties 添加以上配置即可。

    4.2 启动服务模块报错:Error creating bean with name ‘minIOFileRepository’

    • 问题:

    image.png

    image.png

    • 解决:

    是因为metersphere.properties 没有配置minio

    image.png
    添加以上配置:
    参考:https://blog.csdn.net/sinat_29356635/article/details/127068778
    http://docs.minio.org.cn/docs/master/minio-docker-quickstart-guide
    https://blog.csdn.net/weixin_43888891/article/details/122021704

    4.3 打包ms-jmeter-core报错 “Could not find artifact io.metersphere:meterspere:pom:2.3 ”

    • 问题

    image.png

    • 解决:

    以上问题是因为,没有找到对应的依赖,在mvn clean install ms-jmeter-core 项目之前 ,需要在metersphere项目主目录下面,执行 ./mvnw install -N
    即:
    image.png

    然后再去ms-jmeter-core 项目下面执行 mvn clean install

    4.4 打包ms-jmeter-core 报错Could not find “jmeter-plugins-webdriver:jar:3.4.4”

    • 问题

    image.png

    • 解决

    是因为没有“jmeter-plugin-webdriver”依赖包,
    直接去Github仓库:https://github.com/metersphere/jmeter-plugins-webdriver下载,注意分支要跟metersphere版本一致。
    直接执行mvn clean install

    4.5 打包ms-jmeter-core报错"org.apache.commons.lang"不存在

    • 问题

    image.png

    • 解决

    在项目ms-jmeter-core的pom.xml文件里面添加

    <dependency>
      <groupId>commons-langgroupId>
      <artifactId>commons-langartifactId>
      <version>2.5version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.6 启动gateway报错:”UnkonwHostException“

    • 问题

    image.png

    • 解决

    是因为配置文件地址不对。修改metersphere.properties 文件
    image.png

    4.7 启动system-setting 报错"which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by" mysql5.7

    • 问题:

    image.png

    • 解决:
    1. 先查出来所有的sql_mode
    select @@global.sql_mode;
    
    
    • 1
    • 2
    1. 然后把only_full_group_by去掉,再更新一下。
    set @@global.sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    
    • 1
  • 相关阅读:
    漏洞发现-web应用发现探针类型利用(43)
    【Redis】聊一下Redis事务以及watch机制
    RecyclerView+Flexbox实现流式布局
    sentinel介绍和使用
    Angular生命周期函数
    Kotlin语言集合学习:List,Set,去重转换
    用rpm -e --nodeps进行批量删除
    22下半年:来长沙建第二支团队与所读的30本书(含哲学文学历史书单/笔记)
    uni单选radio
    中康控股开启招股:拟募资净额3.95亿港元,预计7月12日上市
  • 原文地址:https://blog.csdn.net/hao65103940/article/details/127930921