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

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

简介: 介绍演示部署的全过程:● 安装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 -e MYSQL_ROOT_PASSWORD=Sonic123!@# -p 3307:3306 mysql:5.7.33

2.创建数据库

# 进入mysql容器内
docker exec -it mysql sh
# 容器内登录mysql
mysql -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=3000
SONIC_EUREKA_USERNAME=sonic
SONIC_EUREKA_PASSWORD=sonic
SONIC_EUREKA_PORT=9090
################
# MySQL Config #
################
MYSQL_HOST=192.168.1.20
MYSQL_PORT=3307
MYSQL_DATABASE=sonic
MYSQL_USERNAME=root
MYSQL_PASSWORD=Sonic!@123
################
# User Config  #
################
SECRET_KEY=sonic
EXPIRE_DAY=14
PERMISSION_ENABLE=true
PERMISSION_SUPER_ADMIN=sonic
REGISTER_ENABLE=true
NORMAL_USER_ENABLE=true
LDAP_USER_ENABLE=false
LDAP_USER_ID=cn
LDAP_BASE_DN=ou=users
LDAP_BASE=ou=system
LDAP_USERNAME=uid=admin,ou=system
LDAP_PASSWORD=Sonic!@#123
LDAP_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 devices
List 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。尤其需要注意防火墙端口问题,最简单粗暴的办法就是关闭防火墙。以及若部署在云服务器上,还需要在安全组中开放相关端口。比较难的地方在于出现问题后的问题排查,有时候一个问题会卡壳很久,这个时候需要学会查看日志来定位问题,不能只看容器状态,容器状态只是表象。

### Sonic云真机离线部署方法 对于Sonic云真机平台而言,在某些网络受限环境中可能无法直接通过互联网获取所需资源,因此支持离线环境下的部署成为必要。为了实现这一目标,通常需要预先下载好所有必需组件并将其传输到目标机器上。 #### 准备工作 确保拥有完整的软件包副本以及依赖项文件夹,这些可以从官方仓库中提前拉取下来保存至本地存储介质内[^1]。具体来说: - 下载`sonic-server`项目的源码压缩包。 - 获取运行该应用所需的第三方库及其版本信息。 - 如果涉及到数据库,则同样要准备好相应的初始化脚本与驱动程序。 #### 部署服务器端 将上述准备好的资料拷贝进入待安装系统的指定位置之后,按照常规流程执行构建命令来编译项目代码。由于处于断网状态,所以务必确认所有的外部链接都已经被替换成了相对路径指向本地存在的对应实体。完成后启动服务监听特定端口等待客户端连接请求到来验证是否成功开启Web界面[^2]。 ```bash # 解压已下载的sonic-server源码包 tar zxvf sonic-server.tar.gz # 移动到解压后的目录下 cd sonic-server/ # 安装依赖(假设已经配置好了私有镜像源) npm install --registry=https://your-private-npm-mirror.com/repository/npm-group/ ``` #### 设置代理节点 除了master部分之外,为了让真实物理设备可以接入进来参与测试活动还需单独设立若干agent实例负责采集数据上传给中心节点处理。考虑到安全性因素建议采用局域网内部通信方式减少暴露在外的风险隐患。 ```bash # 将sonic-agent相关二进制文件分发到各个子机上面去 scp -r /path/to/sonic-agent user@child-machine:/opt/ # 登录远端主机设置开机自启策略保持长期在线可用性 ssh user@child-machine "sudo systemctl enable sonicagent.service" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值