STF [centos7][stf] 环境搭建

bauul · 2017年12月01日 · 最后由 bauul 回复于 2021年04月29日 · 1313 次阅读

adb

version:1.0.39

build-essentials

yum groupinstall "Development Tools"  
yum install -y gcc g++ kernel-devel

wget

yum install wget

nodejs

wget https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz
tar -xvf node-v8.9.1-linux-x64.tar.xz

这个 nodejs 解压下来就可以使用了

java

cd /opt/
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm"
rpm -ivh jdk-8u91-linux-x64.rpm
vi /etc/profile
#按"insert"键,Home键左边,Backspace右边的键
#增加:

export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

rethinkdb

wget http://download.rethinkdb.com/centos/7/`uname -m`/rethinkdb.repo \
          -O /etc/yum.repos.d/rethinkdb.repo
yum install rethinkdb

GraphicsMagick

wget https://iweb.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.26/GraphicsMagick-1.3.26.tar.gz
tar -zxvf GraphicsMagick-1.3.25.tar.gz
cd GraphicsMagick-1.3.25
./configure --prefix=/usr/local/gm
make
make install

zeromq

wget https://github.com/zeromq/libzmq/releases/download/v4.2.2/zeromq-4.2.2.tar.gz
tar zxvf zeromq-4.2.2.tar.gz
cd zeromq-4.2.2
./configure --prefix=/usr/local/zeromq
make
make install

pkg-config

wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
tar -zxvf pkg-config-0.29.2.tar.gz
cd pkg-config-0.29.2
./configure --prefix=/usr/local/pkg-config --with-internal-glib
make
make intall

yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix=/usr/local/yasm
make
make install

libsodium

wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.15.tar.gz
tar -zxvf libsodium-1.0.10.tar.gz
./augen.sh
./configure --prefix=/usr/local/libsodium
make
make install

protobuf

wget https://github.com/google/protobuf/releases/download/v3.5.0/protobuf-cpp-3.5.0.tar.gz
tar -zxvf protobuf-cpp-3.5.0.tar.gz
cd protobuf-3.5.0
./configure --prefix=/usr/local/protobuf
make
make intall

链接

ln -s /usr/local/gm/bin/* /usr/local/bin/
ln -s /usr/local/yasm/bin/* /usr/local/bin/
ln -s /usr/local/libsodium/bin/* /usr/local/bin/
ln -s /usr/local/protobuf/bin/* /usr/local/bin

更新/etc/profile

export PKG_CONFIG_PATH=/usr/local/pkg-config
export PATH=$PKG_CONFIG_PATH:$PATH

install stf

npm install -g stf

检查结果

[root@localhost bin]# ./stf doctor
INF/cli:doctor 10067 [*] OS Arch: x64
INF/cli:doctor 10067 [*] OS Platform: linux
INF/cli:doctor 10067 [*] OS Platform: 3.10.0-327.el7.x86_64
INF/cli:doctor 10067 [*] Using Node 8.9.1
INF/cli:doctor 10067 [*] Using ZeroMQ 4.2.2
INF/cli:doctor 10067 [*] Using RethinkDB 2.3.6
INF/cli:doctor 10067 [*] Using GraphicsMagick 1.3.26
INF/cli:doctor 10067 [*] Using ADB 1.0.39
INF/cli:doctor 10067 [*] Using ProtoBuf 3.5.0

本地启动

./stf local

允许远程访问

./stf local --public-ip 本地ip --allow-remote

将其他电脑上连接的手机加到 STF

比如将 win7 上一台手机添加到 STF 上,在 win7 执行:

adb nodaemon server -a -P 5037

在 centos 执行:

stf provider --name mikezhoudeMac-mini.local --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 20000 --public-ip 172.31.11.171 --storage-url http://localhost:7100/ --adb-host 172.31.9.146 --adb-port 5037 --vnc-initial-size 600x800 --allow-remote

问题

  1. zmq.node 文件错误
    转到 stf 工程根目录执行:

    npm rebuild
    
  2. libzmq.so.5 not found

    cd /etc
    vi /etc/ld.so.conf
    #新增一行:
    /usr/local/zeromq/lib
    ldconfig
    
  3. 图形界面安装

    yum groupinstall "GNOME Desktop"
    startx
    
  4. 远程访问失败
    可能是防火墙未关闭,关闭方法

    #检查防火墙状态
    firewall-cmd --state
    #关闭防火墙
    systemctl stop firewalld.service
    #禁止开机启动
    systemctl disable firewalld.service
    
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 64 条回复 时间 点赞

截至发帖日最新的 STF 环境搭建😅

..

再加个 appium 连接例子

晚些时候试一下,应该问题不大

匿名 #5 · 2017年12月09日

配置好了 java 环境后,输入 java -version 报错,请问如何解决啊?

匿名 在 [该话题已被删除] 中提及了此贴 12月10日 14:03

可以执行 source /etc/profile,然后再试下

匿名 #8 · 2017年12月11日
bauul 回复

一开始是好的,后来配置了 SDK 环境后就 GG 了……
运维小伙伴也没搞定,还原环境了

9楼 已删除
匿名 #10 · 2017年12月11日
bauul 回复

之前的问题,改用 centos7 之后基本解决了
按照你的教程,走到最后,执行 stf doctor

这个是为啥?请问有遇到过吗?

我也有遇到,按我写的问题 1 操作即可

匿名 在 [请教] centos7 下搭建的 stf 添加 windows 上的设备失败 中提及了此贴 12月28日 19:42

恩,这个 CentOS 的搭建写的不错,我遇到很多坑。收藏了。

bauul [STF] 二次开发之办公机接入 STF 服务 中提及了此贴 02月09日 09:28

楼主,看到你的文章中,通过 adb nodaemon server -a -P 5037,来挂载设备到 stf 系统,如果使用的是 wifiadb,无线连接,怎么挂载?

bauul #16 · 2018年02月09日 Author
menglinxi 回复

应该有两种方法吧,

  1. 无线 adb 连接手机后,再执行 adb nodaemon server -a -P 5037,这种就是手机->电脑->stf,属于多此一举型
  2. 直连,手机->stf,既然都知道 wifiadb 了,那么启 stf 的机器直接用 wifiadb 连接手机不就完了?
bauul 回复

手机在内网,stf 服务器在外网

bauul #18 · 2018年02月09日 Author
menglinxi 回复

一般不会这么做吧,感觉有安全隐患

bauul 回复

也会有这种需求

大神,stf 怎么在 linux 的后台运行,我不想看到 “运行的日志信息”

bauul #21 · 2018年02月23日 Author
cooling 回复

放后台就是 linux 命令啊,命令后面加&符号即可

bauul 回复

大神,是像下图这样的?

bauul #23 · 2018年02月23日 Author
cooling 回复

嗯,加&符号就可以放后台了,不想看到日志的话,可以关闭这个窗口,重新开个 shell 窗口,或者在命令后面加上 > nul 应该就可以了

24楼 已删除

我这也出现的 zeromq 的那个问题,执行你的问题一之后出现下面的问题。

bauul #26 · 2018年03月25日 Author
SCH 回复

有遇到过,怎么解决的,我给忘记了,你用必应查查吧

bauul 回复

npm install --unsafe-perm --verbose -g stf
这样就可以了

bauul #28 · 2018年03月26日 Author
SCH 回复

👍 👍

根据大佬的提示已成功搭建。
用 Win10 PC 作 provider,Linux 作 Master 但反应比较迟钝,大佬有没有遇到?

bauul #30 · 2018年06月22日 Author
回复

没有噢,可以看下浏览器调试工具,看看用了多久,哪个用时久

31楼 已删除
32楼 已删除
33楼 已删除

启动 stf 的时候报了 libzmq.so.5 找不到,也加了/usr/local/zeromq/lib 执行了 ldconfig,但是还是报这个文件找不到

[root@centos158 bin]# ./stf local --public-ip 192.168.100.158 --allow-remote
Each option can be be overwritten with an environment variable by converting the
option to uppercase, replacing dashes with underscores and prefixing it with
STF_TRIPROXY_ (e.g. STF_TRIPROXY_BIND_PUB).

libzmq.so.5: cannot open shared object file: No such file or directory
2018-07-16T13:41:01.657Z FTL/cli:local 27572 [] Child process had an error ExitError: Exit code "1"
at ChildProcess. (/usr/local/node/node-v9.0.0-linux-x64/lib/node_modules/stf/lib/util/procutil.js:49:23)
at emitTwo (events.js:135:13)
at ChildProcess.emit (events.js:224:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
2018-07-16T13:41:01.658Z INF/cli:local 27572 [
] Shutting down all child processes
../lib/cli triproxy [name]

Options:
-h, --help Show help. [boolean]
-V, --version Show version. [boolean]
--bind-dealer, -d The address to bind the ZeroMQ DEALER endpoint to.
[string] [default: "tcp://*:7112"]
--bind-pub, -u The address to bind the ZeroMQ PUB endpoint to.
[string] [default: "tcp://*:7111"]
--bind-pull, -p The address to bind the ZeroMQ PULL endpoint to.
[string] [default: "tcp://*:7113"]
--name An easily identifiable name for log output.
[string] [default: "centos158"]

Each option can be be overwritten with an environment variable by converting the
option to uppercase, replacing dashes with underscores and prefixing it with
STF_TRIPROXY_ (e.g. STF_TRIPROXY_BIND_PUB).

libzmq.so.5: cannot open shared object file: No such file or directory

bauul #35 · 2018年07月16日 Author
letme 回复

你做的不对吧, cat 这个文件看下

bauul #36 · 2018年07月16日 Author
letme 回复

你写在最上面了,写到最下面吧

解决了上一个,感觉离成功很接近了,之前同事已经部署 stf 了,是用 docker 搭的,然后我杀了一堆相关进程,最后还是报这个错误,不知道为什么
2018-07-16T14:12:31.430Z INF/util:procutil 2794 [] Forking "/usr/local/node/node-v9.0.0-linux-x64/lib/node_modules/stf/lib/cli storage-temp --port 7102"
2018-07-16T14:12:31.449Z INF/util:procutil 2794 [
] Forking "/usr/local/node/node-v9.0.0-linux-x64/lib/node_modules/stf/lib/cli storage-plugin-image --port 7103 --storage-url http://localhost:7100/"
2018-07-16T14:12:31.464Z INF/util:procutil 2794 [] Forking "/usr/local/node/node-v9.0.0-linux-x64/lib/node_modules/stf/lib/cli storage-plugin-apk --port 7104 --storage-url http://localhost:7100/"
2018-07-16T14:12:31.476Z INF/util:procutil 2794 [
] Forking "/usr/local/node/node-v9.0.0-linux-x64/lib/node_modules/stf/lib/cli poorxy --port 7100 --app-url http://localhost:7105/ --auth-url http://localhost:7120/ --api-url http://localhost:7106/ --websocket-url http://localhost:7110/ --storage-url http://localhost:7102/ --storage-plugin-image-url http://localhost:7103/ --storage-plugin-apk-url http://localhost:7104/"
../lib/cli triproxy [name]

Options:
-h, --help Show help. [boolean]
-V, --version Show version. [boolean]
--bind-dealer, -d The address to bind the ZeroMQ DEALER endpoint to.
[string] [default: "tcp://*:7112"]
--bind-pub, -u The address to bind the ZeroMQ PUB endpoint to.
[string] [default: "tcp://*:7111"]
--bind-pull, -p The address to bind the ZeroMQ PULL endpoint to.
[string] [default: "tcp://*:7113"]
--name An easily identifiable name for log output.
[string] [default: "centos158"]

Each option can be be overwritten with an environment variable by converting the
option to uppercase, replacing dashes with underscores and prefixing it with
STF_TRIPROXY_ (e.g. STF_TRIPROXY_BIND_PUB).

Address already in use
2018-07-16T14:12:33.108Z FTL/cli:local 2794 [] Child process had an error ExitError: Exit code "1"
at ChildProcess. (/usr/local/node/node-v9.0.0-linux-x64/lib/node_modules/stf/lib/util/procutil.js:49:23)
at emitTwo (events.js:135:13)
at ChildProcess.emit (events.js:224:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
2018-07-16T14:12:33.108Z INF/cli:local 2794 [
] Shutting down all child processes
../lib/cli triproxy [name]

bauul 回复

那个是因为我 configure 没有--prefix 指定路径,已经解决了,现在是报地址已经被使用

bauul #39 · 2018年07月16日 Author
letme 回复

不错噢

letme 回复

我已经启动好了 但是如何才能把服务正常关闭呢 每次杀进程都关不完全

bauul #41 · 2018年07月17日 Author
letme 回复

杀进程应该是可以杀全的,可能是你没找到全部的进程,另一个角度是可以看一下 stf 提供了哪些命令,可能是有提供关闭命令的,你看下吧,我好久不用了

bauul 回复



我尝试这样连接,但是后台没有显示设备,也没有 control,日志也只显示了手机设备号

bauul #43 · 2018年07月17日 Author
letme 回复

观察下启动后的日志吧,可能哪里有报错
检查一下,adb 是不是可以正常连接设备

bauul 回复

请问 stf 的根目录在哪里啊?stf doctor 的时候,显示 ProtoBuf 有问题,但是都安装了

45楼 已删除

哥,不是 docker 镜像起的,是按照你的方式,源码安装的 protoBuf

bauul #47 · 2018年07月20日 Author
在路上 回复

看错了,好尴尬,这个问题没遇到过噢,那个 prefix 的参数你加了没,检查一下😅

bauul 回复

加了,我把 nodejs 更新一个版本试试,昨天晚上 protoBuf 的版本从 3.1、3.5、3.6 发现都不行

bauul 回复

还有就是 zmq 安装了以后,也是有问题,试了多种方法没有解决掉

bauul #50 · 2018年07月20日 Author
在路上 回复

我有附两个解决方法,你试一下

bauul 回复

您说的 stf 根目录,在哪里啊?不太清楚哪个目录是根目录

bauul #52 · 2018年07月20日 Author

你执行下

whereis stf

应该能看到,另外是通过 npm 装在全局环境下的,找到 npm 的所有包的安装位置就会找到它了

bauul 回复

好的,谢谢大佬

启动 stf 报错请教各位大神

您好,我 provider 的设备的服务 总断开 然后又自动连上,您有遇到过吗? adb server 是 1.0.40 版本的

bauul #56 · 2018年09月17日 Author
zhntester 回复

很尴尬,这个 stf 服务我搭起来之后,没怎么用,后来主要做接口测试了,这里我猜测一下你的问题吧,是否在这台机器上执行了 adb kill-server 这种关闭服务的指令?

zhanglimin 使用 stf 框架的个人总结 中提及了此贴 10月08日 14:55

求指导下

bauul #59 · 2019年01月07日 Author
Swuaeng 回复

图中写的很清楚啊,数据库连接失败了,你检查一下你的 RethinkDB 是不是启动成功了,端口是否 OK

各位大神有谁能告诉我 这个 public-ip 是怎么来的,还有 adb ip ,这两个是不一样的吗?

bauul #61 · 2019年01月27日 Author
DJL箫氏 回复

public ip 是 Centos 的 ip,也就是 stf 搭在哪台机器上,这台机器的 ip
adb ip 是将另一台 windows 上连接的手机,连到 stf 上,这台 windows 的 ip
嗯,应该是这样,好久不用了

bauul 回复

首先非常感谢楼主的回答哈,我这还有还有两个问题哈,楼主能帮忙解答一下吗
1:我现在启动就是直接 stf local --allow-remote --public-ip xxx.xx.xxx.xxx,也没有配置那个 adb-host,这个 adb-host 是在什么情况下会使用啊
2 我看到有些会使用这个命令 stf provider --name djlxs-virtual-machine --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 900 --public-ip 172.17.9.49 --storage-url http://localhost:7100/ --adb-host 10.4.23.49 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never 但是我好象没有用到,这个命令是在什么时候会用到啊

bauul #63 · 2019年01月28日 Author
DJL箫氏 回复

把本帖再看两遍

请教一下:已经装了 yasm 了,是源码安装,也配置了软连接了。

bauul #65 · 2019年05月08日 Author
Hubery 回复

可能安装的不对呗,可以在命令行中执行 yasm 命令检查一下
如果安装对了,命令行执行,还是找不到,说明需要加到环境变量中去

仅楼主可见
bauul #67 · 2019年05月08日 Author
Hubery 回复

加我微信吧:15105163710


虚拟机 centos7 下连接华为手机,启动 STF 的时候报这个错,求大佬帮助!!

bauul #69 · 2019年08月26日 Author
sowfe 回复
  1. 其他手机连接 ok 的?
  2. 按本文的问题 1 去试一下,看看会不会有帮助
bauul 回复

谢谢大佬,环境被我搞坏了,我再重新装一遍然后看下不同的手机

71楼 已删除
sowfe 回复

请问你解决了吗?我也报这个错不知道该咋弄了

letme 回复

兄弟,我也遇到你这个连不上设备的问题了,你有解决么?

请问下 stf 怎么升级呀,连安卓 10 的设备会提示缺少 android-29/minicap.so,连安卓 11 提示缺少 android-30/minicap.so

75楼 已删除
bauul #76 · 2021年04月29日 Author

安装的命令( npm install -g stf )不可以更新吗?

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