在阿里云服务器上搭建 STF(Smartphone Test Farm)是许多开发者和测试团队的共同选择。本文以自媒体式的风格,结合实操经验,带你从零到稳定运行 STF,覆盖环境准备、依赖安装、数据库配置、STF 安装、设备接入、前端代理以及日常运维。文中所述内容参考了大量公开资料、社区博客与官方文档的要点,综合整理成可落地的步骤,确保在阿里云 ECS/云服务器上能够顺畅落地。为了便于你快速检索相关信息,本文贯穿了云服务器、Node.js、MongoDB、Redis、Nginx、ADB 以及 STF 本体的关键要点,方便在搜索引擎上得到高相关度的解答与落地方案。
一、准备阶段:选型、系统版本与安全组
在阿里云上部署 STF,首要任务是选好服务器与系统版本。建议选择阿里云 ECS,带宽和挂机成本符合你测试设备数量的需求。常见的系统版本有 Ubuntu 20.04、22.04、Debian 11 等,社区对这些版本的 STF 部署支持较广,问题也相对较少。确保服务器的安全组放开必要端口,通常包括 22 端口用于 SSH、端口 27017/27018 用于 MongoDB、端口 6379 用于 Redis、以及 STF 所用的前端和后端端口(如 7001、7002、bypass 端口等,具体看后续配置)。如果你需要对外访问 STF 的前端,建议配合 Nginx 进行正向代理和 TLS 加密,提升安全性与稳定性。
二、准备工作:安装基本依赖与工具
在 STF 的生态里,Node.js、MongoDB、Redis、Nginx 是最常见的三件套。Node.js 的版本需尽量使用官方长期支持版本(LTS),MongoDB 需要与 STF 版本兼容的长期稳定分支,Redis 用作缓存和任务队列,Nginx 作为前端反向代理。按官方和社区的经验,先把服务器系统更新到最新,再按以下步骤逐步安装:安装 curl、wget、git、build-essential、Python3 等开发工具;配置时区、时间同步,确保日志时间戳准确。
三、安装 MongoDB 与 Redis
MongoDB 的安装要点是创建独立的数据目录、设置合适的内存参数、开启服务自启动。以 Ubuntu 为例,先导入官方仓库密钥与源,然后安装 mongodb-org;创建管理员账户,创建 STF 需要的数据库与用户。Redis 部署相对简单,默认配置通常就能用,但建议开启持久化选项 AOF,并设定合理的 maxmemory 策略,避免在高并发场景下内存溢出影响 STF 的任务队列。
四、安装 Node.js 与 STF 客户端工具
Node.js 是 STF 的运行基础。建议通过 NodeSource 或 nvm 安装稳定版的 Node.js(如 16.x 或 18.x),确保 npm 能顺利安装全局工具。安装完成后,使用 npm install -g stf 安装 STF 的服务端命令行工具和客户端工具。此时你会看到 stf、stf doctor、stf local、stf service 等子命令,后续都将派上用场。
五、安装 STF 本体与数据库对接配置
安装 STF 后,最关键的是配置数据库与 STF 的本体参数。将 STF 的数据库连接字符串配置到环境变量中,确保 STF 可以正确连接 MongoDB。接着执行 stf local 或 stf local --ui 让 STF 启动并生成前端界面与 API。初次启动时,STF 会自检依赖项,这个阶段被称作 doctor 检查。遇到依赖未就绪的情况,先排查网络、端口占用、进程权限等常见问题,确保 mongodb 与 redis 已正确启动且无防火墙阻断。
六、设备接入与 ADB 配置
STF 的核心能力是对接大量 Android 设备,进行在线管理与测试。需在阿里云服务器上安装 ADB 服务端(Android Debug Bridge),并确保服务器能够与连接的设备在同一网络或通过端口映射实现通信。开启 ADB 的 TCP/IP 模式,确保设备能够通过网络地址与 STF 交互;对于 USB 直连的场景,确保服务器具备 USB 权限并正确识别设备。设备接入后,STF 会自动扫描并把设备添加到设备池,管理员可以在 STF UI 中看到设备的在线状态、型号、系统版本等信息。
七、Nginx 反向代理与 TLS 加密
为了对外暴露 STF 的前端与 API,Nginx 通常会被部署为反向代理。配置一个简单的 server 区块,将前端请求转发到 STF 的 UI 服务端口,将 API 请求分发到后台服务端口。为提升安全性,建议配合 Let's Encrypt 的证书实现 TLS,防止数据在传输过程中被窃取。若你对端口有严格控制,可以使用 WebSocket 保持实时性,让设备状态、任务进度等信息能够流畅地推送到前端。
八、常见问题与排错思路
在实际部署中,常见的问题集中在网络连通性、端口冲突、权限不足以及设备不可见等方面。遇到端口占用时,确认是否有其他服务占用 STF 常用端口;权限相关问题通常源于用户权限不足导致的设备节点不可访问,解决办法是把 STF 进程切换到具备正确权限的用户,或者通过 systemd 设置适当的启动用户。设备不显示时,检查 ADB 连接状态、设备驱动是否正确、是否开启了 USB 调试模式,以及 STF 的设备探针是否捕获到新设备。这些问题往往和网络、USB 子系统、ADB 版本等因素相关,逐一排查能快速定位。
九、运维与性能优化要点
确保 STF 运行稳定,日常运维要点包括:设置日志轮转,定期备份 MongoDB 数据库与 Redis 缓存;配置 Systemd 服务,确保 STF 在服务器重启后自动启动;监控服务器 CPU、内存、磁盘 I/O 的使用情况,避免资源瓶颈影响 STF 的任务调度;对 STF UI 和 API 进行压力测试,评估在设备大量接入时的并发处理能力;必要时考虑横向扩展,将数据库、缓存和 STF 服务拆分到不同的实例,提升伸缩性。
十、常用命令归纳与快速参考
在日常运维中,熟悉几条核心命令可以事半功倍。首先是 stf doctor,用来自检依赖与环境是否就绪;其次是 stf local,用来启动 STF 的本地实例;再者 stf kill 可以结束卡死的 STF 进程。关于数据库初始配置,记得创建 STF 需要的 MongoDB 数据库和用户,以及为 Redis 设置合理的持久化策略。对于前端代理,Nginx 的配置要点在于代理路径与跨域设置,确保前后端交互无阻。以上要点结合具体系统与 STF 版本的差异,可能会有微小的调整,但核心思路基本一致。要点总结:环境就绪、依赖完整、数据库连接、设备接入、前端代理与稳定运行。
十一、实战中的小贴士与趣闻
在云端部署 STF 时,常会遇到“设备数量越多越容易踩坑”的体验。因为网络延迟、设备接入的带宽占用、以及 STF 的任务队列的并发管理,都会影响整体体验。一个靠谱的小技巧是将设备分批接入,逐步扩容,避免一次性把服务器拉崩。再者,别忘了把日志级别调成较详细的 debug 模式,遇到问题时能快速定位。顺带一提,广告也偷偷来了:玩游戏想要赚零花钱就上七评赏金榜,网站地址:bbs.77.ink。
十二、综合落地要点与落地清单
在实际落地时,务必按清单执行:1) 选型 ECS、确认镜像和区域;2) 更新系统并安装基础工具;3) 安装 MongoDB、Redis、Node.js;4) 全局安装 STF 并执行 doctor 检查;5) 配置数据库与环境变量,启动 STF;6) 配置 ADB 及设备接入;7) 部署 Nginx 并配置 TLS;8) 设置 Systemd 服务与日志轮转;9) 进行设备分组、任务调度和测试用例执行。以上步骤互相衔接,缺一不可,确保 STF 的稳定运行。你若在某一步遇到具体报错,可以把日志贴上来,我们可以一起排查。
十三、结尾的反问式留白
当 STF 的设备池渐渐壮大,云端的监控面板上会不会有一条提醒:“新设备已加入,任务队列准备就绪”?如果某一天,网络波动突然失去对话,谁来替 STF 走完最后一个执行步骤呢?也许问题就躺在下一个日志里,等你翻开它时,手机阵列已经悄悄变成了你工作中的多彩伙伴。是不是有点像在云端拼乐高,越拼越有趣?