安装许可证并迁移到 Business
你购买了一个套餐并收到了许可证。本页说明如何处理它:文件应放在哪里、如何将其应用到 正在运行的引擎、如何查看实际安装内容,以及购买 Business 套餐后,如何在不重新安装任何内容 的情况下将 Community 二进制文件切换为 Business 二进制文件。
你收到了什么
Section titled “你收到了什么”| 你购买的套餐 | 收到的内容 | 如何处理 |
|---|---|---|
| Community | 无需安装任何内容 | 已在运行——本页内容均不适用 |
| Business / Enterprise,自托管 | 一个许可证文件和一个下载令牌 | 安装许可证,然后切换到 Business 二进制文件 |
| Cloud | 托管 tenant 的凭据 | 无需在自己的主机上安装任何内容 |
许可证是一个签名 blob。请将其保存为文件——customer.license 或任意其他名称——并保留
同一封邮件中的下载令牌:二者用于不同步骤,只有许可证需要安装。
1 · 安装许可证
Section titled “1 · 安装许可证”olivares license install ./customer.license --data-dir /var/lib/olivares该命令会使用构建中嵌入的 Ed25519 公钥,在写入任何内容之前验证 blob,因此被截断的
复制粘贴内容会在这里失败,而不是等到下次启动时才失败。成功后,它会写入
<data-dir>/license.key,模式为 0600——这是引擎默认读取的规范静态许可证。
传入 - 而不是路径,即可从标准输入读取 blob:
pbpaste | olivares license install - --data-dir /var/lib/olivares在现有许可证上执行安装会以原子方式替换它,并输出被替换的是哪一个。
应用到正在运行的引擎——无需重启
Section titled “应用到正在运行的引擎——无需重启”正在运行的引擎会原地获取新许可证。以下任一方式均可完成:
kill -HUP "$(pidof olivares)" # signal the running processcurl -X POST .../v1/console/runtime/reload # the API half……也可以使用控制台自身的重新加载控件。重启同样有效,只是没有必要。
引擎按什么顺序查找
Section titled “引擎按什么顺序查找”如果你已通过其他方式注入许可证,请注意,数据目录文件在四种来源中优先级最低。 引擎按以下顺序解析,优先级从高到低:
--license <path>(或配置文件中的LicenseFile)OLIVARES_LICENSE_PATH=<path>OLIVARES_LICENSE=<blob>——直接放在环境中的许可证<data-dir>/license.key——license install写入的内容
当 license install 能够发现某个 override 的优先级高于其即将写入的文件时,它就会拒绝执行:
在这种 override 之下安装会留下一个引擎永远不会读取的文件,你会看到 exit 0,却没有任何变化。
命令会指出它发现的 override。--force 仍会暂存该文件——合理场景是你即将移除 override。
2 · 检查实际安装内容
Section titled “2 · 检查实际安装内容”olivares license status --data-dir /var/lib/olivaresstatus 离线运行,并按引擎使用的相同优先级解析许可证,因此它回答的是关键问题——
实际生效的是哪一个许可证——而不是“是否存在一个文件”。它会报告解析到的来源、持有者、
套餐和到期时间。
每次安装后以及移除 override 后都应运行它。
3 · Community → Business,原地切换
Section titled “3 · Community → Business,原地切换”在 Community 构建上安装有效的 Business 或 Enterprise 许可证,该构建会继续运行。 会话驾驶舱(session cockpit)和其他商业页面只有在你把这个安装切换到 Business 之后才会出现。 控制台的 Edition & license 视图会把已安装的许可证与构建分开显示。Expires 是付费期限; Lease until(显示时)是另一个独立的临时实例租约。在 Docker 中运行?请看下面的 Docker 与 Compose。
安装许可证后,下载 Business 二进制文件即可。无需重新安装任何内容,也不会移动任何数据:
export OLIVARES_UPGRADE_TOKEN=<TOKEN> # not needed once this installation is connectedolivares upgrade --edition businessolivares license install 和 olivares license status 会按这套安装的安装方式打印确切的命令,控制台的 Edition & license 视图也以一个按钮 切换到 Business 显示同一步骤:引擎下载构建、验证、原地替换并在其上重启。下载令牌在许可下载门户的 Downloads 页面(https://licenses.olivares.ai/portal/downloads)中,与这些命令并列,也在您的许可邮件里;如上按名称传递,以免它出现在进程列表中。已连接的安装(olivares license connect start)不需要令牌。--enterprise 是同一路由的旧写法。控制台按钮需要二者之一:引擎自身环境中的令牌,或这次连接;两者都没有时,视图会改为显示命令。
该命令会获取适用于你所在平台的已签名 Business 构建,并离线验证签名——遭篡改的制品会
中止升级,正在运行的二进制文件保持原样——然后以原子方式完成替换,并保留上一个文件的
备份。Business 与 Community 的版本号相同,因此即使你已在运行该版本,此命令同样有效。如果希望先查看
计划而不执行,请先使用 --check,它会将此变更显示为 edition: community -> enterprise:
olivares upgrade --edition business --check重启服务,然后启用模块:
olivares enterprise enable <preset> # starter | regulated | full该命令和预设名称是 Business 二进制文件所接受的写法。预设不是版本,也不与 Business 的四个能力系列一一对应。
启用过程受到治理并会被审计:它会先显示 diff;任何需要机密或审查的模块都会进入
暂存状态,而不是只启用一部分。olivares enterprise status 会报告哪些内容处于活动状态。
这些命令仅存在于 Business 二进制文件中——如果 olivares enterprise 不是一个命令,
说明你仍在运行 Community 构建,上述切换尚未发生。
Docker 与 Compose
Section titled “Docker 与 Compose”公开的 docker.io/olivaresai/olivares 镜像是 Community 版。在容器中,olivares upgrade
会把该版本安装到数据卷而不是镜像中,因此重新创建容器会再次启动它。当 Business 版本比镜像新或与镜像版本相同时(--check 会将此变更显示为 edition: community -> enterprise),
这会应用该版本;也可以按下文自行构建镜像。
安装好许可证后(第 2 节),在运行中的容器内执行升级并重启它。令牌在你的交付邮件中;
请按名称传递它,使其不会出现在进程列表中:
export OLIVARES_UPGRADE_TOKEN=<TOKEN>docker compose exec -e OLIVARES_UPGRADE_TOKEN olivares olivares upgrade --edition business --yesdocker compose restart olivares该版本保存在数据目录下的 ota/(随附镜像中为 /var/lib/olivares/ota),与用于验证它的
已签名清单和制品放在一起。当该版本比镜像新,或版本相同但构建不同(例如你作为 Business 应用的
版本所对应的 Community 镜像)时,镜像中的二进制文件会启动它。数据卷中的内容本身不被信任:
每次启动都会用镜像中内嵌的 OTA 密钥验证清单签名,并用清单所签名的摘要校验制品。验证证明保存在
容器的临时目录中(随附的 Compose 文件会在那里挂载 tmpfs),而不是数据卷中;重新创建容器会将其
清空。如果镜像比已应用的版本新,则运行镜像,启动日志会说明;请再次运行升级。无法通过验证的内容
会被忽略并给出提示,随后运行镜像。数据卷不保留旧二进制文件的备份:要回到镜像中的二进制文件,
请删除 ota/。这需要允许执行文件的数据卷(命名卷允许;在 noexec 挂载上,olivares serve
会停止并说明原因,而不是悄悄运行镜像中的二进制文件)。
你也可以自行构建镜像。请通过
授权下载门户下载 Business 二进制文件的相同版本和相同 Linux 架构,
并按下载页面的说明验证其签名和校验和。然后你可以在自己的主机上,把这个已验证的二进制文件叠加到匹配的
Community 运行时镜像上。在包含名为 olivares 的已验证二进制文件的目录中,使用这个 Dockerfile:
ARG COMMUNITY_IMAGEFROM ${COMMUNITY_IMAGE}COPY --chmod=0755 olivares /usr/local/bin/olivares使用该版本 Community 镜像的摘要(digest)来构建,并按验证你下载的内容中的方法验证它。
结果会保留该镜像的非 root 用户、入口点(entrypoint)和端口,因此 Dockerfile 不需要 USER 行:
docker build --build-arg COMMUNITY_IMAGE=docker.io/olivaresai/olivares@sha256:<digest> \ --tag olivares-business-local:X.Y .请将此镜像保持私有,并保留下载内容随附的商业许可证和声明。不要把你的许可证文件或下载令牌放进构建上下文。
把你的 Compose 服务的 image 设为 olivares-business-local:X.Y,然后用
docker compose up -d --no-deps --force-recreate olivares 重新创建该服务。对于独立的 Docker,
请用这个镜像以及相同的数据卷和参数重新创建容器。保留数据卷:不要使用 down --volumes。
重启后请检查 Edition & license:版本应显示为 Business,已安装的许可证仍保存在数据卷中。 Enterprise 合同也使用这个商业构建;合同特定的制品按其下载说明处理。
olivares license uninstall --data-dir /var/lib/olivares --yes该命令会删除 <data-dir>/license.key 并报告移除的内容。与 install 一样,只要它能看到
OLIVARES_LICENSE* override,就会拒绝执行——实际生效的并不是该文件,因此删除它不会改变任何内容——
并且它也有相同的盲区:传给另一个进程中运行的引擎的 --license flag 对它不可见。这是控制台自身
DELETE /v1/console/license 的离线一侧。
移除许可证不会禁用你正在运行的任何内容。它只是撤回存证;在切换回原版本之前, Business 二进制文件仍会按 Business 二进制文件的方式运行。