开源云真机平台sonic-1.5.0版本部署实践

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云防火墙,500元 1000GB
简介: 介绍演示部署的全过程:● 安装docker、docker-compose● 安装MySQL,创建sonic数据库● 安装jdk及Android SDK● 部署sonic,注册agent● 部署agent,连接使用手机

前言

之前发过一篇《开源云真机平台-Sonic应用实践》,是用1.0版本搭建的,版本比较老。现在最新版已经迭代到了1.5版本。我采用的是在另一台服务器上重新部署一套的形式,当然你也可以在原有的sonic版本上进行更新。这样也方便介绍演示部署的全过程。大致分为以下步骤:

  • 安装docker、docker-compose
  • 安装MySQL,创建sonic数据库
  • 安装jdk及Android SDK
  • 部署sonic,注册agent
  • 部署agent,连接使用手机

一、安装docker和docker-compose

1.安装docker

# 安装yum-tools工具包yum install -y yum-utils
# 指定Docker下载源(可选,适用于首次安装)yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker(默认安装最新版本)yum install -y docker-ce docker-ce-cli containerd.io
# 验证是否安装成功docker version
# 启动服务systemctl start docker

2.安装docker-compose

curl-L"https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)"-o /usr/local/bin/docker-compose
chmod+x /usr/local/bin/docker-compose
docker-compose --version

二、安装mysql数据库

1.安装数据库

通过docker安装数据库

docker pull mysql:5.7.33
docker run -d--restart always --name mysql -eMYSQL_ROOT_PASSWORD=Sonic123!@# -p 3307:3306 mysql:5.7.33

2.创建数据库

# 进入mysql容器内docker exec -it mysql sh# 容器内登录mysqlmysql -uroot-p123456# mysql命令行操作mysql> create database sonic character set utf8 collate utf8_general_ci;

三、安装jdk及Android-sdk

可以参考前面的一篇文章《如何在Linux快速搭建一套ADB环境

四、部署sonic

1.修改.env部署文件

#################################################         Do you need any help?                ## Visit https://sonic-cloud.gitee.io/#/Deploy  #################################################################### Service Config ###################SONIC_SERVER_HOST=192.168.1.20
SONIC_SERVER_PORT=3000SONIC_EUREKA_USERNAME=sonic
SONIC_EUREKA_PASSWORD=sonic
SONIC_EUREKA_PORT=9090################# MySQL Config #################MYSQL_HOST=192.168.1.20
MYSQL_PORT=3307MYSQL_DATABASE=sonic
MYSQL_USERNAME=root
MYSQL_PASSWORD=Sonic!@123
################# User Config  #################SECRET_KEY=sonic
EXPIRE_DAY=14PERMISSION_ENABLE=truePERMISSION_SUPER_ADMIN=sonic
REGISTER_ENABLE=trueNORMAL_USER_ENABLE=trueLDAP_USER_ENABLE=falseLDAP_USER_ID=cn
LDAP_BASE_DN=ou=users
LDAP_BASE=ou=system
LDAP_USERNAME=uid=admin,ou=system
LDAP_PASSWORD=Sonic!@#123LDAP_URL=ldap://192.168.1.20:10389

2.创建并启动容器

docker-compose up -d

3.前端访问&注册账号

访问地址:http://192.168.1.20:3000/,进行账号注册,并登录。

五、部署agent

1.创建agent

登录成功后,需要创建一个agent

创建完成后,点击复制Agent Key,后面会用到

2.修改docker-compose.yml文件

version: '3'services:
  sonic-agent:
    image: "registry.cn-hangzhou.aliyuncs.com/sonic-cloud/sonic-agent-linux:v1.5.0-release"    environment:
# 对应server的env配置,注意防火墙关闭对应端口-SONIC_SERVER_HOST=192.168.1.20
-SONIC_SERVER_PORT=3000# 替换为部署Agent机器的ipv4-AGENT_HOST=192.168.1.20
# 替换为Agent服务的端口,可以自行更改-AGENT_PORT=7777# 替换为前面复制的Agent key-AGENT_KEY=e3dd4622-834a-4f53-914d-73b64b5606e1
# 是否使用安卓模块-ANDROID_ENABLE=true# 是否开启远程adb调试功能-USE_ADBKIT=true# 是否使用iOS模块-IOS_ENABLE=true# 替换为你自己使用的wda的bundleId,如果没有.xctrunner后缀会自动补全,建议使用公司的开发者证书-WDA_BUNDLE_ID=com.facebook.WebDriverAgentRunner.xctrunner
# 是否启用Appium-APPIUM_ENABLE=true# 是否启用webview调试功能-WEBVIEW_ENABLE=true# 谷歌调试端口,一般不需要修改(默认0使用随机端口,如果需要开启防火墙给外部使用,请设置固定端口如7778)-CHROME_DRIVER_PORT=0# 是否开启sonic-go-mitmproxy代理功能-SGM_ENABLE=true    network_mode: "host"    privileged: true    volumes:
- /dev/bus/usb:/dev/bus/usb
- /var/run/usbmuxd:/var/run/usbmuxd

3.创建并启动容器

docker-compose up -d

查看日志会发现,sonic-agent_sonic-agent_1 容器会自动检查相关依赖环境,并与sonic server进行连接认证。

六、连接手机

需要在手机设置-开发者选项中开启USB调试模式,个别手机如小米可能还需要勾选允许USB模拟点击。

手机通过USB数据线连接服务器后,会弹出是否允许计算机调试本台设备,勾选允许。此时可以通过adb devices命令查看是否已成功连接:

[root@sonic sonic-agent]# adb devicesList of devices attached
66J5T19614010786        device
GDB6R19813000723        device
tkqkssgirgaipblj        device

刷新sonic前台页面,即可看到已连接的手机

七、常见问题及解决办法

1.sonic_sonic-server-controller_1容器一直处于重启状态

查看容器状态:

docker ps-a

容器状态正常,但前端页面提示系统错误。此时需要检查controller容器日志,检查数据库是否连接成功、数据表是否成功:

docker logs -f sonic_sonic-server-controller_1

通过查看sonic_sonic-server-controller_1容器日志发现错误原因为mysql连接不上导致:

检查发现原来是系统开启了防火墙,防火墙未放开3307端口(前面创建的mysql容器的3306映射到本机的3307端口),开启防火墙3307端口即可,另外eureka的9090端口也要开放出来:

firewall-cmd --permanent--add-port=3307/tcp  # 添加3307端口firewall-cmd --permanent--add-port=9090/tcp  # 添加9090端口firewall-cmd --reload# 重新加载防火墙配置firewall-cmd --list-all# 查看开放端口列表

重启运行docker-compose.yml

docker-compose down
docker-compose up -d

此时数据库正常连接并创建相关数据表:

2.进入手机详情页面,一直处于“准备图像中”

查看防火墙状态,防火墙开放agent的7777端口。当然直接关闭防火墙服务也可以,不过这样会增加很多安全隐患。

firewall-cmd --permanent--add-port=7777/tcp  # 添加3307端口firewall-cmd --reload# 重新加载防火墙配置

再次刷新前台页面,重新进入手机即恢复正常:

小结

总体来说,部署过程比较简单,就是一堆的基础环境搭建及配置:JDK、ADB、Docker、MySQL。尤其需要注意防火墙端口问题,最简单粗暴的办法就是关闭防火墙。以及若部署在云服务器上,还需要在安全组中开放相关端口。比较难的地方在于出现问题后的问题排查,有时候一个问题会卡壳很久,这个时候需要学会查看日志来定位问题,不能只看容器状态,容器状态只是表象。

相关文章
|
6月前
|
IDE 测试技术 持续交付
网易Airtest全新推出:小型便携式集群解决方案!
网易Airtest全新推出:小型便携式集群解决方案!
|
前端开发 关系型数据库 MySQL
开源云真机平台-Sonic应用实践
Sonic,一站式开源分布式集群云真机测试平台,致力服务于中小企业的客户端UI测试。 Sonic当前的愿景是能帮助中小型企业解决在客户端自动化或远控方面缺少工具和测试手段的问题。
开源云真机平台-Sonic应用实践
|
6月前
|
IDE 小程序 开发工具
【社区每周】商家平台数据中心功能升级;IDE 3.4.1 Beta 版本上线(1月第一期)
【社区每周】商家平台数据中心功能升级;IDE 3.4.1 Beta 版本上线(1月第一期)
67 11
|
传感器 消息中间件 运维
统信UOS系统开发笔记(八):在统信UOS上编译搭建mqtt基础环境(版本使用QMQTT::Clinet)
统信uos使用到mqtt开发,需要重新编译mqtt,本篇描述统信uos20上的mqtt源码编译和环境搭建。这里mqtt版本是使用QMQTT::CLIENT来操作的,这里笔者已知Qt的版本分为两个:一个是QMQTT::QMQTTCLIENT,一个是QTMQTT:CLIENT,对应不同的类和方式,请根据需求选择)
|
监控 关系型数据库 MySQL
Sonic 开源移动端云真机测试平台 - windows系统下的sonic快速部署演示
Sonic 开源移动端云真机测试平台 - windows系统下的sonic快速部署演示
766 0
Sonic 开源移动端云真机测试平台 - windows系统下的sonic快速部署演示
|
JavaScript Java 关系型数据库
开源云真机平台Sonic版本升级实践
开源云真机平台sonic从1.5.0升级到最新的2.0.5版本实践记录
开源云真机平台Sonic版本升级实践
|
Ubuntu 网络协议 Linux
开源云真机平台Sonic(Windows端)接入iOS设备实践
开源云真机平台Sonic(Windows端)接入iOS设备实践过程,及相关注意事项。
开源云真机平台Sonic(Windows端)接入iOS设备实践
|
前端开发 关系型数据库 Java
国外开源IoT平台Thingsboard社区版本(V3.3.2)在Win10环境下进行源码编译及运行指南
国外开源IoT平台Thingsboard社区版本(V3.3.2)在Win10环境下进行源码编译及运行指南
999 0
国外开源IoT平台Thingsboard社区版本(V3.3.2)在Win10环境下进行源码编译及运行指南
|
开发框架 IDE JavaScript
开发者新宠上线 阿里云物联网操作系统AliOS Things3.3.0发布
近日,阿里云物联网操作系统AliOS Things时隔一年,新版本AliOS Things 3.3.0正式开源发布。作为广大开发者的新宠,AliOS Things 3.3.0推出轻应用开发模式,为碎片化的物联网提供统一的操作系统解决方案。
324 14
开发者新宠上线 阿里云物联网操作系统AliOS Things3.3.0发布