1. STF环境安装全流程解析
STF(Smartphone Test Farm)作为移动设备远程管理平台,在自动化测试和CI/CD流程中扮演着重要角色。最近在帮团队搭建测试环境时,我完整走通了从零开始部署STF的全过程,期间踩过不少环境配置的坑。本文将详细记录Ubuntu系统下STF环境的正确安装姿势,包含依赖项管理、组件配置和常见故障排除方案。
重要提示:STF对Node.js和Java版本有严格要求,建议先完成基础环境准备再安装核心组件
1.1 基础环境准备
安装前需要确保系统满足以下条件:
- Ubuntu 18.04/20.04 LTS(推荐)
- 至少4GB内存
- 50GB可用磁盘空间
- 稳定的网络连接
首先更新系统并安装基础工具链:
sudo apt update && sudo apt upgrade -y sudo apt install -y git curl wget make gcc g++ python1.2 核心依赖安装
Node.js环境配置
STF要求Node.js 12.x版本(最新版可能不兼容),建议通过nvm管理:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc nvm install 12.22.12 nvm use 12.22.12验证安装:
node -v # 应显示v12.22.12 npm -v # 应显示6.14.16Java环境配置
STF依赖Java 8运行环境:
sudo apt install -y openjdk-8-jdk java -version # 应显示1.8.0_xxxADB工具链
Android调试桥需要单独配置:
sudo apt install -y android-tools-adb adb version # 应显示32.0.0+2. 数据库与服务组件安装
2.1 Redis部署
STF使用Redis作为消息队列:
sudo apt install -y redis-server sudo systemctl enable redis sudo systemctl start redis验证服务状态:
redis-cli ping # 应返回PONG2.2 RethinkDB配置
作为主要存储数据库,需要单独安装:
source /etc/lsb-release echo "deb https://download.rethinkdb.com/repository/ubuntu-$DISTRIB_CODENAME $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list wget -qO- https://download.rethinkdb.com/repository/raw/pubkey.gpg | sudo apt-key add - sudo apt update sudo apt install -y rethinkdb配置服务:
sudo cp /etc/rethinkdb/default.conf.sample /etc/rethinkdb/instances.d/instance1.conf sudo systemctl enable rethinkdb sudo systemctl start rethinkdb检查运行状态:
rethinkdb --version # 应显示2.4.0+3. STF核心组件安装
3.1 全局工具安装
先安装必要的构建工具:
npm install -g grunt-cli bower3.2 源码获取与编译
克隆STF仓库并安装依赖:
git clone https://github.com/DeviceFarmer/stf.git cd stf npm install bower install编译前端资源:
grunt build3.3 服务启动配置
创建启动配置文件stf-local.conf:
[server] port = 7100 secret = your-secret-key [rethinkdb] host = localhost port = 28015 [redis] host = localhost port = 6379启动服务:
bin/stf local --config stf-local.conf4. 常见问题排查指南
4.1 依赖版本冲突
典型报错:Error: Module did not self-register解决方案:
rm -rf node_modules npm cache clean --force npm install4.2 ADB设备识别失败
检查步骤:
- 确认USB调试已开启
- 重新加载ADB服务:
adb kill-server adb start-server adb devices4.3 端口占用问题
查看端口占用情况:
sudo netstat -tulnp | grep -E '7100|28015|6379'释放端口或修改配置文件对应参数
5. 生产环境优化建议
5.1 使用PM2管理进程
安装PM2并配置自动重启:
npm install -g pm2 pm2 start bin/stf --name "stf" -- local --config stf-local.conf pm2 save pm2 startup5.2 反向代理配置
Nginx示例配置:
server { listen 80; server_name stf.yourdomain.com; location / { proxy_pass http://localhost:7100; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }5.3 安全加固措施
- 修改默认密钥
- 配置HTTPS加密
- 设置IP访问白名单
我在实际部署中发现,STF对设备USB接口的稳定性要求极高。建议使用带有独立供电的USB Hub连接测试设备,避免因供电不足导致设备频繁掉线。另外,对于长期运行的测试环境,最好配置日志轮转和磁盘空间监控,防止日志文件撑满磁盘。