开源测试平台MeterSphere在Windows部署记录

1.背景

最近公司想要搭建一个接口自动化测试平台,从头开始的话工作量太大了,因此准备找一个开源平台进行二开,经过几天的查找发现了MeterSphere一站式开源测试平台,使用java+vue,覆盖了测试管理、接口测试、UI 测试和性能测试等众多功能,先去官方的试用地址体验了一下还是比较满足需求的,于是准备先在本地搭建一下。

项目Github地址:GitHub - metersphere/metersphere: MeterSphere 一站式开源持续测试平台,为软件质量保驾护航。搞测试,就选 MeterSphere!

官方文档:MeterSphere 文档

免费试用地址:MeterSphere - 专业测试云

2.本地环境

  • jdk:17(metersphere要求最低为11)
  • node:v18.15.0
  • mysql:8.0.33
  • maven:3.5.4
  • docker-desktop
  • redis、zookeeper、kafka:使用docker-desktop安装镜像
  • idea

3.windows部署

3.1.拉取代码

metersphere :主要应用启动,包含前后端代码,由于本人不熟悉微服务,因此使用的是v2.2未拆分微服务的版本,Github地址

https://github.com/metersphere/metersphere

ms-jmeter-core:jmeter核心依赖,选择和metersphere一样的版本,Github地址:  https://github.com/metersphere/ms-jmeter-core

将上面2个项目的代码拉取下来后,使用idea打开配置maven及jdk

3.2.打包ms-jmeter-core

配置好ms-jmeter-core项目的maven和jdk后,pom.xml中可能会有插件报错,不用管

直接在Terminal中执行mvn clean install即可打包成功

 

3.3.mysql配置

 根据官方文档说明源码搭建 (前后端分离) - MeterSphere 文档MeterSphere 对数据库部分配置项有要求,需要修改本地的数据配置

我本地只修改了以下内容

max_connections=2000
innodb_buffer_pool_size=1G
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然后在服务中重启mysql服务,并创建数据库

CREATE DATABASE `metersphere_dev` /*!40100 DEFAULT CHARACTER SET utf8mb4 */

注意:如果修改配置后无法启动mysql服务可以将sql_mode参数中的NO_AUTO_CREATE_USER去掉再启动

3.4.metersphere配置

根据官方文档说明源码搭建 (前后端分离) - MeterSphere 文档

首先在metersphere项目根目录下创建\opt\metersphere\conf\metersphere.properties文件

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/metersphere_dev?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

# kafka 配置,node-controller 以及 data-streaming 服务需要使用 kafka 进行测试结果的收集和处理
kafka.partitions=1
kafka.replicas=1
kafka.topic=JMETER_METRICS
kafka.test.topic=JMETER_TESTS
kafka.bootstrap-servers=localhost:9092
kafka.log.topic=JMETER_LOGS
kafka.report.topic=JMETER_REPORTS

# node-controller 所使用的 jmeter 镜像版本 
jmeter.image=registry.fit2cloud.com/metersphere/jmeter-master:0.0.6

# TCP Mock 端口范围
tcp.mock.port=10000-10010

# Redis 配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123456

# 启动模式,lcoal 表示以本地开发模式启动
run.mode=local

将项目目录中 backend/src/main/resources/jmeter/bin 目录下的配置文件拷贝到项目根目录下 \opt\meter\bin中

然后修改Application.java、logback.xml、generatorConfig.xml中的metersphere.properties路径

修改base.properties文件中jmeter.home

修改Spring Boot 启动项

Modify options下拉选项中勾选Shorten command line

选择JAR manifest - java -cp classpath.jar cleassName [args]

3.5.启动后端服务

启动后端服务前需要先启动redis、zookeeper、kafka服务,具体如何启动不再详述

执行Application.java启动后端服务即可

如启动时遇到错误可参考后面的常见报错解决方法

3.6.启动前端服务

进度前端项目下,执行npm install安装依赖

修改frontend\package.json中的配置项,由于是使用的Windows机器,因此要将export修改为SET,并添加--openssl-legacy-provider参数解决nodejs v17以上版本OpenSSL3.0对允许算法和密钥大小的限制

修改完先执行npm run build-win编译

编译成功后执行npm run serve-win启动后端服务

看到以上信息,表示已经启动成功了,接下来在浏览器访问

使用默认账号admin/metersphere登录即可使用

4.常见报错解决方法

4.1.类 MsExecResponseDTO找不到

启动后端服务时报错

java: 找不到符号
符号: 类 MsExecResponseDTO
位置: 程序包 io.metersphere.dto

首先检查一下是否有打包ms-jmeter-core且与后端的maven配置是否一致,然后再检查ms-jmeter-core和metersphere2个项目的版本号是否一致

4.2.程序包io.metersphere.xpack.ui.dto不存在

 xpack是企业版的包,需要收费才能使用,直接把涉及到xpack的依赖、引用全部注释掉即可

4.3.Public Key Retrieval is not allowed

在\opt\metersphere\conf\metersphere.properties中的spring.datasource.url中添加allowPublicKeyRetrieval=true参数,即

spring.datasource.url=jdbc:mysql://localhost:3306/metersphere_dev?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true

4.4.Schema `metersphere_dev` contains a failed migration to version xx

该报错是在创建数据库表时sql文件执行报错导致,可以找到项目路径\backend\src\main\resources\db\migration\Vxx__modify_api_test_case.sql文件,将其中的sql复制到Navicat中执行,修复其中的错误重启服务即可

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值