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

前言

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

一、安装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安装的数据库,如果你已经安装好了mysql,可以忽略这一步。

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部署文件

主要是将服务器ip地址改为你自己的ip地址,以及数据库ip地址、端口号、账号密码的修改。

################################################
#         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=Sonic123!@#

################
# 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。尤其需要注意防火墙端口问题,最简单粗暴的办法就是关闭防火墙。以及若部署在云服务器上,还需要在安全组中开放相关端口。比较难的地方在于出现问题后的问题排查,有时候一个问题会卡壳很久,这个时候需要学会查看日志来定位问题,不能只看容器状态,容器状态只是表象。

展开阅读全文

页面更新:2024-03-31

标签:版本   端口   容器   防火墙   账号   状态   页面   地址   数据库   手机   平台

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top