STF 使用 stf 框架的个人总结

zhanglimin · 2018年10月08日 · 最后由 zhanglimin 回复于 2019年12月30日 · 1673 次阅读

背景

最近有时间浏览网站看 stf 是开源的,自己也想试着搭建一下。历经各种曲折,记录下这一个过程作为备忘,也给其他初次使用 stf 的新手们提供一个参考。
手边只有一个 win7 机器,只好自己从建虚拟机开始。这里推荐使用 centos7,centos7 上自带安装了 java,而且有些东西不需要自己再安装。

参照

分别参考了站内和站外两个,很感谢他们在这个过程中为我解答的问题,推荐一下。
超级链接
超级链接

过程

环境准备:

1.安装 vaware 的最新版本 vmware 14pro
2.下载 centos7 的镜像,使用镜像安装 centos7 虚拟机,开始使用的是 NAT 模式,实现了宿主机和虚拟机可以相互通信,但搭建好后别人访问不了,在其他同学帮助下才知道需要使用桥接方式其他机器才能访问。

依赖安装:

3.参照超级链接超级链接基本就能完成,这里就不重复了。

  • JDK 安装,java 环境
  • Android SDK 安装
  • node 环境安装,很建议先安装 cnpm:npm install -g cnpm --registry=https://registry.npm.taobao.org
  • rethinkdb 安装
  • bower 安安装:cnpm install bower
  • GraphicsMagick
  • yasm
  • libsodium
  • zeromq
  • protobuf
  • pkg-config

下载源码

1.在本地创建源码路径
2.使用 git clone 命令将源码下载到本地,源码下载过程可能很慢,我直接下载的 zip 包。

检测 stf 依赖是否完整

1.源码目录下修改 stf 文件的权限,添加文件可执行权限:chmod -R +x bin,也可以使用 chmod -R +x stf 命令只对 stf 文件添加可执行权限。
2.执行./stf doctor,检测环境是否完整,如果不完整按照错误提示修改。
3.在源码路径下执行 cnpm install,会在源码路径下生成 node_modules 目录,并安装 package.json 中的依赖包。中间安装 bower 可能会有错误提示,因为这个安装需要 root 权限,可单独安装,单独安装则执行 bower install --allow-root。在其他同学帮助下,在 package.json 中修改 bower 的安装权限不会报错,也是添加 --allow-root。
3.启动 rethinkdb
4.连接手机的主机 adb 服务打开,我用的 1.0.40,使用到的命令是 adb nodaemon server -a,默认使用到是 5037 端口,也可以使用-P 指定为其他端口,这边如果修改端口的话,启动 stf 服务的命令端口也要修改。
5.启动 stf 服务:./stf local --public-ip xxx.xxx.xxx.xxx --port 7100 --adb-host xxx.xxx.xxx.xxx --adb-port 5037 --allow-remote &
6.本地访问 stf 服务
7.远程访问 stf 服务

启动 stf 服务各个选项说明:

local,允许本地使用 127.0.0.1:7100 访问 stf 服务;--public-ip xxx.xxx.xxx.xxx,部署 stf 服务的主机 ip;--port 7100:stf 服务的端口号;--adb-host xxx.xxx.xxx.xxx,连接着手机的主机 ip; --adb-port 5037,连接手机的主机上 adb 服务的端口; --allow-remote:允许远程访问 stf 服务;&:linux 后台执行服务。
在启动服务过程中 stf 会打印很多的日志,比如连接数据库,数据库各种设置,triproxy,processor,reaper,provider,auth-mock,app,api,storage-temp,websocket 和手机的交互等,这些日志在以后读源码以及修改源码的过程中都很有帮助。

stf 文档

stf 的开发者在 README.md,doc\DEPLOYMENT.md 和 doc\API.md 中提供了很多使用过程中可能遇到的问题以及部署建议,还有安全性问题,对在使用过程中遇到的问题很有帮助。
另外作者还提供了 docker 安装方式,这需要安装 docker 工具 pull 下所有依赖,安装过程简单很多。修改源码使用 docker 容器,需要注意 docker 拉下的代码应该是修改后的。stf 是使用 nodejs 开发的,如果有些 nodejs 基础入门上手更快些,因为我开始不懂 nodejs,反反复复弄了好几天才明白些。

共收到 12 条回复 时间 点赞

你好,请问一下我的手机已经连接上虚拟机,但是在 centos 里面无论是 lsusb 还是 adb devices 命令都无法检测到我的手机设备是什么原因呢? VMware 虚拟机版本是 12 版本,虚拟机 USB 设置也选择的 3.0,还是不得行

ASFKJHKJ 回复

usb 选 2.0 的,安装 vmare tools 再试试

adfghzhang 回复

这些都试过了,没有用。。。

13楼 已删除
ASFKJHKJ 回复

可能你的虚拟机上的 adb 服务有问题,而且还需要你的手机授权。我这之前也有这个问题,重启了下虚拟机,在手机上授权虚拟机连接之后才显示。我先断开手机跟主机的连接了。

14楼 已删除
zhanglimin 回复

我把 VMware 12 卸载了重新安装了 14 版本连不上手机这个问题就自己好了,现在我所有的环境都装好了,./stf doctor 检查也没有任何问题,但是最后开启 stf 服务却报错,不晓得这个报错是撒子意思

ASFKJHKJ 回复

嗯 14 对 adfghzhang 提到的 vmare tools 支持的也很好。你需要看下日志里 FTL 部分,db 没有指定的话会用本地默认的,需要先在本地启动一下 rethinkdb 服务

zhanglimin 回复

好的,非常感谢,已解决,确实是按照教程安装完环境以后没有执行启动 rethinkdb 的操作,所以 STF 服务启动就说 db 有问题。

ASFKJHKJ 回复

不客气 如果 docker 方便的话也可以试试 docker

仅楼主可见
zhanglimin · #10 · 2018年10月11日 Author
仅楼主可见


这是什么情况啊

mrbao 回复

看日志:protobuf 是不是没有安装那;还有 adb 也没有检测到,需要看下是否已经安装 adb,并且配置了 adb 环境变量。在 stf 框架中,很多交互都用到了 adb 功能,需要确保 adb 环境的正确性

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册