Apifox 帮助文档
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
  1. 团队资源
  • 帮助中心
  • 更新日志
  • 入门
    • 产品介绍
    • 联系我们
    • 私有化部署
  • 开始使用
    • 下载 Apifox
    • 注册与登录
    • 页面布局
    • 基本概念
    • 快速上手
      • 概述
      • 新建接口
      • 发送接口请求
      • 快捷请求
      • 添加断言
      • 新建测试场景
      • 分享 API 文档
      • 了解更多
    • 基础知识
      • 接口基本信息
        • 请求 URL 与方法
        • 请求参数与请求体
        • 请求头
        • 请求参数编码解码
        • HTTP/2
      • 认证与授权
        • 概述
        • 支持的授权类型
        • Digest Auth
        • OAuth 1.0
        • OAuth 2.0
        • Hawk Authentication
        • Kerberos
        • NTLM
        • Akamai EdgeGrid
        • CA 和客户端证书
      • 响应与 Cookie
        • 概述
        • API 响应
        • 创建和发送 Cookie
        • 实际请求
        • 提取响应示例
      • 请求代理
        • 网页端中的请求代理
        • 分享文档中的请求代理
        • 客户端中的请求代理
      • API Hub
        • API Hub
    • 导入导出数据
      • 概述
      • 手动导入
      • 定时导入
      • 导入设置
      • 导出数据
      • 其它方式导入
        • 导入 OpenAPI/Swagger
        • 导入 Postman
        • 导入 Apipost
        • 导入 Eolink
        • 导入 cURL
        • 导入 Markdown
        • 导入 Insomnia
        • 导入 apiDoc
        • 导入 .har 文件
        • 导入 knife4j
        • 导入 NEI
        • 导入小幺鸡(docway)
        • 导入 Apizza
        • 导入 WSDL
  • 设计 API
    • 概述
    • 新建 API 项目
    • 接口基础知识
    • 请求体多示例配置
    • 响应组件
    • 常用字段
    • 全局参数
    • 历史记录
    • 批量管理
    • 数据模型
      • 概述
      • 新建数据模型
      • 通过 JSON 等生成
      • 高级数据类型
      • 构建数据模型
    • 鉴权组件
      • 概述
      • 创建鉴权组件
      • 使用鉴权组件
      • 在线文档中的鉴权组件
    • 高级功能
      • 接口字段
      • 接口状态
      • 关联测试场景
      • 参数列表外观
      • 接口唯一标识
  • 开发和调试 API
    • 概述
    • 生成请求
    • 发送请求
    • 请求历史
    • 接口用例
    • 动态值
    • 校验响应
    • 文档模式/调试模式
    • 生成代码
    • 环境和变量
      • 概述
      • 全局/环境/临时变量
      • 环境与服务
      • Vault Secrets(密钥库)
        • 功能简介
    • 前后置操作&脚本
      • 概述
      • 断言
      • 提取变量
      • 等待时间
      • 数据库操作
        • 概述
        • MongoDB
        • Redis
        • Oracle
      • 使用脚本
        • 概述
        • 前置脚本
        • 后置脚本
        • 公共脚本
        • pm 脚本 API
        • 使用 JS 类库
        • 响应数据可视化
        • 调用外部程序
      • 脚本示例
        • 断言示例
        • 脚本使用变量
        • 脚本读取/修改接口请求信息
      • 常见问题
        • 如何获取动态参数的真实值并加密?
        • 脚本运行后,提取的数字(bigint)精度丢失应该如何处理?
    • API 调试
      • GraphQL 调试
      • WebSocket 调试
      • Socket.IO 调试
      • SSE 调试
      • SOAP/WebService
      • gRPC 调试
      • 使用请求代理调试
      • Dubbo 调试
        • 新建 Dubbo 接口
        • 调试 Dubbo 接口
        • Dubbo 接口文档
      • TCP(Socket)
        • Socket 接口功能简介
        • 报文数据处理器
  • Mock 数据
    • 概述
    • 智能 Mock
    • 自定义 Mock
    • Mock 优先级
    • Mock 脚本
    • 云端 Mock
    • 自托管 Runner Mock
  • 自动化测试
    • 概述
    • 编排测试场景
      • 新建测试场景
      • 测试步骤间传递数据
      • 测试流程控制条件
      • 从接口/用例同步数据
      • 跨项目导入接口/用例
      • 导出测试场景数据
    • 运行测试场景
      • 运行测试场景
      • 批量运行测试场景
      • 数据驱动测试
      • 定时任务
      • 管理其它项目接口的运行环境
    • 测试报告
      • 测试报告
    • API 测试
      • 集成测试
      • 性能测试
      • 端到端测试
      • 回归测试
    • Apifox CLI
      • 概述
      • 安装和运行 CLI
      • CLI 命令选项
    • CI/CD
      • 概述
      • 与 Jenkins 集成
      • 与 Gitlab 集成
      • 与 Github Actions 集成
      • 与其它更多 CI/CD 平台集成
  • 发布 API 文档
    • 概述
    • 快捷分享
    • 查看 API 文档
    • 发布文档站
    • 页面布局设置
    • 自定义域名
    • AI 相关特性
    • 高级设置
      • 文档站搜索设置
      • 跨域代理
      • 文档站接入 Google Analytics
      • SEO 设置
      • 文档左侧目录设置
      • 文档可见性设置
      • 在线 URL 链接规范
    • API 版本
      • 创建 API 版本
      • 发布 API 版本
      • 快捷分享 API 版本
      • 功能简介
  • 迭代分支
    • 功能简介
    • 新建迭代分支
    • 在迭代分支中改动 API
    • 在迭代分支中测试 API
    • 合并迭代分支
    • 管理迭代分支
  • 管理中心
    • 入驻清单
      • 了解基本概念
      • 团队入驻
    • 管理团队
      • 团队基本操作
      • 团队成员管理
      • 成员角色与权限设置
      • 团队资源
        • 通用 Runner
        • 请求代理 Agent
        • 团队变量
      • 实时协作
        • 团队协作
    • 管理项目
      • 项目基本操作
      • 项目成员管理
      • 通知设置
        • 功能简介
        • 通知对象
        • 通知事件
      • 项目资源
        • 数据库连接
    • 管理组织
      • 单点登录(SSO)
        • 功能简介
        • 为组织配置单点登录
        • 管理用户账号
        • 将组映射到团队
        • Microsoft Entra ID
      • SCIM 用户管理
        • 功能简介
        • Microsoft Entra ID
      • 组织资源
        • 自托管 Runner
  • IDEA 插件
    • 快速上手
    • 生成接口文档
    • 生成数据模型
    • 配置
      • 全局配置
      • 项目内配置
      • 可配置规则
      • 脚本工具
      • Groovy 本地扩展
    • 进阶配置
      • 注释规范说明
      • 框架支持
    • 常见问题
      • 常见问题
  • 浏览器扩展
    • Chrome
    • Microsoft Edge
  • Apifox MCP Server
    • 概述
    • 通过 MCP 使用 Apifox 项目内的 API 文档
    • 通过 MCP 使用公开发布的 API 文档
    • 通过 MCP 使用 OpenAPI/Swagger文档
  • 最佳实践
    • 概述
    • 接口之间如何传递数据
    • 登录态(Auth)如何处理
    • 接口签名如何处理
    • 如何加密/解密接口数据
    • Jenkins 定时触发任务
    • 如何计算 AI 问答成本
    • 与其他成员共用数据库连接配置
    • 通过 CLI 运行包含云端数据库连接配置的测试场景
    • 通过 Runner 运行包含云端数据库连接配置的测试场景
  • 账号&应用设置
    • 账号设置
    • 语言设置
    • 网络代理
    • 快捷键
    • 数据备份与恢复
    • 更新 Apifox
    • API 访问令牌
  • 身份验证 & Auth 鉴权指南
    • 什么是 API Key
    • 什么是 Bearer Token
    • 什么是 JWT
    • 什么是 Basic Auth
    • 什么是 Digest Auth
    • 什么是 OAuth 1.0
    • 什么是 OAuth 2.0
      • 什么是 OAuth 2.0
      • 授权码授权类型
      • 授权码授权类型,带有 PKCE
      • 隐式授权类型
      • 密码凭证授权类型
      • 客户端凭证授权类型
  • 服务与隐私协议
    • 服务协议
    • 隐私协议
    • 服务等级协议
  • 参考资料
    • API 设计优先理念
    • JSON Schema 介绍
    • JSONPath 介绍
    • XPath 介绍
    • Apifox Markdown 语法
    • CSV 格式规范
    • 正则表达式
    • 安装 Java 环境
    • Runner 运行环境
    • 常见编程语言对应的数据类型
    • Socket 粘包和分包问题
    • 词汇表
    • 目录链接汇总
    • Apifox Swagger 扩展
      • 概述
      • x-apifox-folder
      • x-apifox-status
      • x-apifox-name
      • x-apifox-maintainer
    • Apifox JSON Schema 扩展
      • 概述
      • x-apifox-mock
      • x-apifox-orders
      • x-apifox-enum
    • 动态值表达式
  • 常见问题
  1. 团队资源

通用 Runner

Apifox 通用 Runner 可以理解为是一个自动化程序,可以托管在独立服务器上。它能够执行 Apifox 内的自动化测试定时任务、定时导入接口文档、返回 Mock 响应结果等工作。

准备工作#

Linux 服务器
服务器已安装 Docker 环境,最低版本号需使用 20.10.0,推荐 20.10.13

快速上手#

本章节将为你介绍如何在服务器上部署通用 Runner。

1. 部署通用 Runner#

前往 Apifox 的“团队资源”页,点击“部署通用 Runner”按钮。
image.png

2. 获取部署 Runner 命令#

点击部署通用 Runner 按钮后,在弹出框中复制部署通用 Runner 的命令,你可以根据需要定义命令,支持自定义服务器 OS、暴露端口、挂载数据目录等。以下是对这些设置的详细说明:
1.
服务器 OS:指定了 Docker 容器运行的操作系统。包括 Linux、macOS 和 Windows,选择正确的操作系统是确保 Docker 容器能够正确运行的关键。
2.
Docker 镜像:提供了三种版本,分别是通用版、精简版和自定义版本。若你的「自定义脚本」需要调用外部程序,请根据不同版本所包含的语言环境选择合适的镜像进行安装。
通用版:包含 Runner 的所有功能,并内置以下外部程序的语言环境:Node.js 18、Java 21、Python 3、PHP 8。
精简版:包含 Runner 的所有功能,仅内置 Node.js 18 语言环境。
自定义:包含 Runner 的所有功能,并支持自定义外部程序的语言环境。你可以通过创建自己的 Dockerfile,根据需求添加或移除相关环境。
3.
暴露端口:Docker 容器默认不会将内部端口暴露给外部访问。通过 -p 参数,你可以将容器内部的端口映射到宿主机的端口上,使得外部可以访问容器提供的服务。例如,-p 80:4524表示将容器内部的 4524 端口映射到宿主机的 80 端口。
4.
挂载数据目录:使用-v参数可以将宿主机的目录挂载到容器内部,这样容器就可以访问和操作宿主机上的文件(数据库配置、外部程序等)。例如,-v "/opt/runner":/opt/runner表示将宿主机的/opt/runner目录挂载到容器的/opt/runner目录。
image.png
部署命令因为包含 token 信息,基于数据安全考量,一个部署命令只会在产品端展示一次。每次点击部署时都会生成新的命令。
请将此命令保存在本地,后续 Runner 需要升级时,可以直接使用保存的命令来进行升级。

3. 在服务器上部署 Runner#

将已复制的部署命令粘贴至服务器的终端上,然后将会自动开始安装 Runner。
你可以通过环境变量来修改部署 Runner 的属性,使得能够更加匹配你的实际使用场景。阅读 Runner 运行环境了解更多信息。
image.png
安装完成后,终端将会打印出相关信息。如果报错,可以根据报错详情进行故障排除。如果依然无法解决,请联系我们并进行反馈。

4. 在服务器上查看 Runner 状态#

你可以通过 Docker 客户端查看容器的运行状态。
image.png
也可以在终端内使用 docker ps 命令,查看容器的运行情况。
image.png

5. 在 Apifox 中查看已部署的通用 Runner#

确认服务器上的 Runner 容器部署完成并启用后,返回 Apifox。你可以在 “团队资源 -> 通用 Runner” 页查看到这个 Runner 已部署完成并连接上 Apifox。
如果已在服务器上成功部署通用 Runner,但是在 Apifox 客户端中并没有显示,请点击“通用 Runner”右侧的刷新按钮刷新页面后再次查看。
你可以在 Apifox 中对 Runner 进行改名、添加描述以及删除操作,让你的团队成员能够更好的使用这个 Runner;也可以停用/重启 Runner。已暂停的 Runner 将不会再执行指定的相关定时任务,也无法再新创建相关的任务并指定此 Runner 执行。
image.png
关于 Runner 的状态信息见下表说明:
状态说明
已启动 / StartedRunner 在服务器的容器中正常启用并与 Apifox 保持通信中,可以处理 Apifox 下发的相关任务。
已停用 / StoppedRunner 在 Apifox 中手动停用,但是在服务器的容器中正常运行并保持通信。此时不会处理 Apifox 下发的各类任务,新的任务也不可指定停用的 Runner 执行。可以在 Apifox 中手动启用来让此 Runner 重新恢复已启动状态。
已离线 / OfflineRunner 与 Apifox 通信中断,无法处理 Apifox 下发的任务。可能原因为 Runner 容器已在服务器中停止运行,服务器与 Apifox 服务端通信异常等。此时可以通过恢复 Runner 容器运行并确保与 Apifox 通信没有问题,来让此 Runner 重新恢复已启动状态。
你可以在一个团队中部署多个通用 Runner,团队成员在创建需要使用自托管 Runner 的任务时,就可以从多个 Runner 中选择一个来执行。

服务器 Host 配置#

填写服务器地址以让 Apifox 实现自托管 Mock、Runner 请求等功能,详细配置请参考自托管 Runner Mock 模块。

在 Runner 中保存文件#

使用 Runner 执行接口请求、运行测试场景、定时任务等任务时,可能会需要一些本地文件提供数据来支持任务执行。例如:
在自定义脚本中调用其它编程语言
在前后置操作中有用到数据库连接
发起请求时需要使用 SSL 证书等
此时可将需要使用的文件保存在 Docker 容器中的指定目录下。当 Runner 在执行相关任务时就会根据设定的任务需求在指定目录下读取文件内容,确保任务完成。
可以按照下表将对应格式与内容的文件放到指定目录下进行使用:
使用内容示例目录路径或文件名
其它编程语言/opt/apifox/runner/external-programs/
数据库连接配置文件/opt/apifox/runner/database/database-connections.json
SSL 证书列表文件/opt/apifox/runner/ssl/ssl-client-cert-list.json
示例路径中, /opt/apifox/runner 为默认挂载目录,可在部署界面或容器内使用 -v 命令更改。
image.png
以下是数据库连接配置文件的内容示例:
{
  "19731": {
    "configs": {
      "default": {
        "username": "accountname",
        "password": "123456",
        "host": "192.168.0.0"
      }
    },
    "id": 19731,
    "name": "Database Name",
    "type": "mysql",
    "projectId": 1320441,
    "description": "Dummy data.",
    "createdAt": "2022-09-27T07:51:09.000Z",
    "updatedAt": "2024-05-09T11:38:07.000Z",
    "deletedAt": null
  }
}
你可以参考CLI 命令选项查看从 Apifox 客户端中导出配置文件的方法。
SSL 证书列表文件的内容示例:
[
  {
    "name": "domain1",
    "matches": ["https://test.domain1.com/*", "https://www.domain1/*"],
    "key": {"src": "./client.domain1.key"},
    "cert": {"src": "./client.domain1.crt"},
    "passphrase": "changeme"
  },
  {
    "name": "domain2",
    "matches": ["https://domain2.com/*"],
    "key": {"src": "./client.domain2.key"},
    "cert": {"src": "./client.domain2.crt"},
    "passphrase": "changeme"
  }
]

升级&重新部署 Runner#

当我们发布了 Runner 的更新版本,你可以在客户端 Runner 界面上,看到有升级提示 icon。点击即可进行 Runner 的升级,用来安装并使用 Apifox 提供的新版本 Runner。
image.png
点击升级,会提示要停止现有正在运行的 Runner 容器。注意:容器停止后,定时任务以及在客户端下发到此 Runner 的任务也不再会被执行。
停止 Runner 容器
点击确认后,Apifox 会自动将 Runner 容器停用,并且在界面上弹出新 Runner 的部署命令。按照第一次部署的流程重新再操作部署一次 Runner。部署成功后,即可以使用到最新版的 Runner。客户端内已配置的定时任务不会因为 Runner 升级而需要重新指定 Runner。
image.png
当 Runner 发生问题,并且在 Q&A 中未找到类似问题的说明或者按照说明并没有解决问题,可以重新部署 Runner 来尝试解决问题。在某个 Runner 的更多操作中,点击“重新部署”即可。
image.png
后续操作流程与上述升级 Runner 基本一致,请注意重新部署 Runner 也需要停止 Runner 容器的运行。

常见问题#

发生问题了,需要查询 Runner 日志用以定位?
1.
使用 docker ps 命令找到出问题的 Runner 信息;
2.
使用 Runner 信息和以下命令来获取到有效日志从而定位问题:
Runner 挂掉/掉线/无法执行任务了怎么办?
Runner 跑完定时任务之后,设置的通知渠道没有按预期收到通知?
Runner 报错信息:No runner privilege,该怎么处理?
如何在服务器实例中删除已安装的 Runner?
修改于 2025-02-06 08:03:03
上一页
成员角色与权限设置
下一页
请求代理 Agent
Built with