STF 使用 stf 框架的个人总结

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

背景

最近有时间浏览网站看 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 条回复 时间 点赞
ASFKJHKJ 回复

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

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

adfghzhang 回复

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

ASFKJHKJ 回复

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

zhanglimin 回复

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

ASFKJHKJ 回复

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

zhanglimin 回复

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

ASFKJHKJ 回复

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

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


这是什么情况啊

mrbao 回复

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

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