STF 使用 stf 框架的个人总结

zhanglimin · 2018年10月08日 · 最后由 zhanglimin 回复于 2018年10月11日 · 1072 次阅读

背景

最近有时间浏览网站看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,反反复复弄了好几天才明白些。

共收到 10 条回复 时间 点赞

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

河马 回复

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

adfghzhang 回复

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

4楼 已删除
河马 回复

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

6楼 已删除
zhanglimin 回复

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

河马 回复

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

zhanglimin 回复

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

河马 回复

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

仅楼主可见
zhanglimin · #12 · 2018年10月11日 作者
仅楼主可见
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册