在Centos和Docker上安装STF 遇到的若干问题总结

1. 概述

刚开始接触 STF 是看了testhome上思寒讲的关于Appium的一些教程,知道了远程管理设备这回事,自己也在使用Appium框架做App自动化测试,已经通过集成到了jenkins服务器上,由于服务器不在不在自己工位上,每次查看手机状态或者想看下运行情况,就要跑到服务器所在的位置查看,很是麻烦,于是自己想着也搭建一台STF服务器,远程管理设备。网上这方面的教程很多,也有关于各种坑的解决办法,总体安装下来没有想象的那么复杂,但也卡在了不少小问题上,特别是防火墙和权限的问题。建议刚接触STF 的同学先从安装,能够正常使用起来开始,然后慢慢拓展,比如二次改造,制作Docker镜像。

2. 直接在Centos中安装STF环境

2.1 安装篇

网上很多此类的安装文档,可参考以下几篇,很是详细
centos7下stf安装介绍(一)—-环境搭建
Centos 搭建STF
SDK环境配置1
SDK环境配置2

2.2 遇到的问题

  1. 安装完成后,远程不能访问
    关闭 Centos 防火墙

  2. 可远程访问STF,登录可显示连接的设备。但点进去设备却不能显示界面,如下图:

    这里写图片描述

Centos 防火墙未关闭引起的,不止是7100,还有其他许多端口和外界访问。建议关闭centos防火墙。

3. 使用Docker镜像安装

3.1 安装步骤

  1. 在centos上安装Docker,很简单,直接 yum install docker 即可
  2. 开启docker服务
    在centos中开启服务可以使用systemctl start serviceName.service,比如开启docker,systemctl start docker.service
  3. 拉取docker镜像文件
    使用docker安装 STF 很简单,只需拉取以下5个镜像即可:
    docker pull openstf/stf:latest
    docker pull sorccu/adb:latest
    docker pull rethinkdb:latest
    docker pull openstf/ambassador:latest
    docker pull nginx:latest
  4. 启动容器
    先启动一个数据库
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090

再启动adb service

docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest

再启动stf

docker run -d --name stf --net host openstf/stf stf local --public-ip 宿主机IP地址

一定要注意启动顺序,STF 依赖 rethinkdb,所以要先启动 rethinkdb,启动完成后使用: docker ps -a 查看是否启动成功
这里写图片描述

3.2 遇到的问题

如果未成功启动,可能是权限问题,加 –privileged=true 即可。
启动 rethinkdb

docker run -d --name rethinkdb --privileged=true -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 2048 --http-port 8090

启动STF

docker run -d provider --name stf --privileged=true --net host openstf/stf stf local --public-ip 192.168.116.128

4. 连接未安装STF 的电脑上的设备

首先保证其他电脑可以和安装STF 的系统通信,在未安装STF 的电脑上暴露adb端口,建议采用默认端口:5037,

adb -a -P 5037 fork-server server

这里写图片描述
如果出现以下错误:

这里写图片描述
在任务管理器中关掉adb.exe,重新运行上述命令。
如果出现下面报错,建议换成低版本adb

reply fd for adb server to client communication not specified.

或者使用命令:adb nodaemon server -a
这里写图片描述
在docker中删除原来的stf镜像,重新运行(15.2.23.38 是宿主机IP,5037 是宿主机暴露的adb端口):

docker run -d --name stf --privileged=true --net host openstf/stf stf local --public-ip 15.2.23.203 --adb-host 15.2.23.38 --adb-port 5037  --allow-remote

更详细教程可参考:stf使用经验--在windows平台连接Mac上stf的过程

5. 备注:过程中可能用到的一些命令以及可能遇到的问题

1 docker start 容器名 启动某个容器
2 docker stop 容器名 停止某个容器
3 docker rm 容器名 删除某个容器
4 sudo ufw status 查看ubuntu的防火墙状态
5 过程中可能会无法ping虚拟机,改成桥接。同时关闭掉机器的防火墙(这个看自己,或者自己加规则,准许哪些IP访问)。
还不可以的话,配置一个跟主机相同IP段的IP地址
一般都能解决。。。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值