19.01.2015 Views

Parallels Panel 配置指南 - Parent Directory

Parallels Panel 配置指南 - Parent Directory

Parallels Panel 配置指南 - Parent Directory

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Parallels</strong> ®<br />

<strong>Panel</strong><br />

开 发 人 员 指 南<br />

配 置 指 南


目 录<br />

前 言 4<br />

排 版 约 定 ........................................................................................................................................ 4<br />

反 馈 ............................................................................................................................................... 5<br />

关 于 此 文 件 6<br />

交 付 流 程 注 意 事 项 8<br />

部 署 <strong>Panel</strong> 9<br />

独 立 部 署 ...................................................................................................................................... 10<br />

获 取 版 本 ID ....................................................................................................................... 10<br />

获 取 产 品 组 件 列 表 ............................................................................................................. 11<br />

安 装 <strong>Panel</strong> ......................................................................................................................... 13<br />

安 装 程 序 CLI 参 考 ( 简 化 ) .................................................................................................. 14<br />

安 装 脚 本 (Linux/Unix) ....................................................................................................... 16<br />

在 <strong>Parallels</strong> Containers 环 境 中 部 署 ............................................................................................. 17<br />

<strong>Parallels</strong> Containers for Unix ............................................................................................. 18<br />

<strong>Parallels</strong> Containers for Windows ..................................................................................... 21<br />

使 用 Rsync 实 用 程 序 设 置 镜 像 ..................................................................................................... 22<br />

建 立 Linux/Unix 分 发 包 镜 像 .............................................................................................. 23<br />

建 立 Windows 分 发 包 镜 像 ................................................................................................. 26<br />

安 装 操 作 概 要 28<br />

初 始 化 <strong>Panel</strong> ................................................................................................................................ 29<br />

安 装 许 可 证 ................................................................................................................................... 29<br />

定 义 <strong>Panel</strong> 徽 标 ........................................................................................................................... 30<br />

配 置 DNS ..................................................................................................................................... 31<br />

更 改 SOA 记 录 模 板 ........................................................................................................... 31<br />

设 置 资 源 记 录 模 板 ............................................................................................................. 32<br />

安 装 SSL 证 书 .............................................................................................................................. 32<br />

创 建 站 点 及 子 站 点 ........................................................................................................................ 33<br />

安 装 应 用 程 序 ............................................................................................................................... 34<br />

导 入 应 用 程 序 包 ................................................................................................................. 34<br />

安 装 应 用 程 序 ..................................................................................................................... 35<br />

定 义 可 用 的 APS 目 录 .................................................................................................................. 36<br />

APS 目 录 配 置 文 件 ............................................................................................................. 37<br />

通 过 远 程 API 设 置 38


前 言 3<br />

使 用 远 程 API ............................................................................................................................... 39<br />

关 于 远 程 API ..................................................................................................................... 39<br />

API RPC 数 据 包 ................................................................................................................ 40<br />

创 建 客 户 软 件 ..................................................................................................................... 43<br />

设 置 <strong>Panel</strong> ................................................................................................................................... 68<br />

初 始 化 <strong>Panel</strong> ..................................................................................................................... 68<br />

安 装 许 可 证 ........................................................................................................................ 71<br />

配 置 DNS ........................................................................................................................... 77<br />

安 装 SSL 证 书 ................................................................................................................... 99<br />

创 建 站 点 .......................................................................................................................... 105<br />

创 建 子 站 点 ...................................................................................................................... 110<br />

定 义 可 用 的 APS 目 录 ...................................................................................................... 115<br />

安 装 应 用 程 序 ................................................................................................................... 117<br />

通 过 CLI 设 置 160<br />

关 于 <strong>Panel</strong> CLI ........................................................................................................................... 161<br />

设 置 <strong>Panel</strong> ................................................................................................................................. 162<br />

初 始 化 <strong>Panel</strong> ................................................................................................................... 162<br />

安 装 许 可 证 ...................................................................................................................... 163<br />

定 义 <strong>Panel</strong> 徽 标 ............................................................................................................... 164<br />

配 置 DNS ......................................................................................................................... 165<br />

安 装 SSL 证 书 ................................................................................................................. 170<br />

创 建 站 点 .......................................................................................................................... 172<br />

创 建 子 站 点 ...................................................................................................................... 172<br />

定 义 可 用 的 APS 目 录 ...................................................................................................... 174<br />

安 装 应 用 程 序 ................................................................................................................... 175


4 前 言<br />

前 言<br />

排 版 约 定<br />

在 您 开 始 使 用 本 指 南 之 前 , 了 解 其 中 使 用 的 文 档 约 定 十 分 重 要 。<br />

正 文 中 以 下 格 式 类 型 表 示 特 定 信 息 。<br />

格 式 约 定 信 息 类 型 示 例<br />

特 殊 粗 体<br />

您 必 须 选 择 的 项 目 , 如 菜 单<br />

选 项 、 命 令 按 钮 或 列 表 中 的<br />

项 目 。<br />

转 到 “ 系 统 ” 选 项 卡 。<br />

章 、 节 和 小 节 的 标 题 。 请 参 阅 “ 基 本 管 理 ” 一 章 。<br />

斜 体<br />

用 于 强 调 某 段 文 本 的 重 要<br />

性 , 以 介 绍 某 个 术 语 或 指 出<br />

将 用 真 实 名 称 或 实 际 值 来 替<br />

代 的 命 令 行 占 位 符 。<br />

该 系 统 支 持 通 常 所 说 的 “ 通 配 符 ” 搜<br />

索 。<br />

等 宽 字 体<br />

预 定 格 式<br />

预 定 的 粗 体 格 式<br />

命 令 、 文 件 和 目 录 的 名 称 。 许 可 证 文 件 位 于<br />

http://docs/common/licen<br />

ses 目 录 。<br />

屏 幕 上 显 示 的 命 令 行 会 话 中<br />

的 计 算 机 输 出 ; 为 XML、<br />

C++ 或 其 他 编 程 语 言 形 式<br />

的 源 代 码 。<br />

当 您 键 入 时 , 与 计 算 机 屏 幕<br />

输 出 对 比 。<br />

# ls –al /files<br />

total 14470<br />

# cd /root/rpms/php<br />

大 写 键 盘 上 按 键 的 名 称 。 SHIFT、CTRL、ALT<br />

KEY+KEY<br />

按 键 组 合 , 用 户 必 须 按 住 一<br />

个 按 键 然 后 再 按 下 另 一 个 按<br />

键 。<br />

CTRL+P,ALT+F4


前 言 5<br />

反 馈<br />

如 果 您 在 本 指 南 中 发 现 错 误 , 或 您 对 提 升 本 指 南 有 任 何 建 议 或 想 法 , 请 使 用 在 线 表 单 将 反 馈 发<br />

送 到 http://www.parallels.com/en/support/usersdoc/。 请 在 您 的 报 告 中 包 含 本 指 南 的 标 题 、 章<br />

节 和 小 节 标 题 , 以 及 您 在 其 中 发 现 错 误 的 文 本 片 断 。


第 1 章<br />

关 于 此 文 件<br />

目 的<br />

本 文 档 旨 在 阐 述 如 何 配 置 <strong>Parallels</strong> Small Business <strong>Panel</strong> ( 以 下 称 <strong>Panel</strong>), 协 助 HSP ( 主<br />

机 服 务 商 ) 公 司 向 客 户 提 供 完 整 的 主 机 解 决 方 案 。<br />

本 文 档 面 向 需 实 施 <strong>Panel</strong> 配 置 的 HSP 开 发 人 员 , 即 自 动 化 此 软 件 的 安 装 / 部 署 , 以 及 满 足<br />

特 定 客 户 需 求 的 配 置 。<br />

本 文 档 包 含 最 佳 的 建 议 - 经 过 完 全 测 试 和 保 证 - 在 产 品 交 付 范 围 内 安 装 和 配 置 <strong>Panel</strong> 时 。<br />

本 文 档 不 保 证 阐 述 API 的 所 有 功 能 : 不 会 描 述 超 出 范 围 的 操 作 和 选 项 。<br />

范 围<br />

现 在 的 服 务 商 可 以 从 难 管 理 的 基 础 结 构 主 机 转 向 提 供 增 值 的 管 理 服 务 。 出 售 给 客 户 的 主 机<br />

方 案 不 仅 包 含 物 理 或 虚 拟 服 务 器 环 境 , 内 含 可 选 的 控 制 面 板 安 装 , 也 包 含 域 名 和 SSL 证<br />

书 。 随 着 SaaS 模 式 获 得 越 来 越 多 的 客 户 认 可 , 特 别 是 小 型 企 业 , 主 机 程 序 包 也 开 始 包 含<br />

在 客 户 站 点 上 安 装 的 预 置 应 用 程 序 。 其 中 包 括 托 管 的 服 务 , 如 邮 件 、 协 作 工 具 和 内 容 管 理 。<br />

对 <strong>Panel</strong> 安 装 来 说 , 意 味 着 安 装 后 , 服 务 商 即 可 开 始 设 置 面 板 。 特 别 是 可 以 通 过 远 程 API<br />

或 CLI 自 定 义 下 列 设 置 :<br />

• DNS 设 置<br />

• 域 名 设 置<br />

• SSL 证 书 交 付<br />

• 安 装 APS 应 用 程 序<br />

为 了 协 助 服 务 商 推 介 附 加 服 务 ,<strong>Parallels</strong> 推 出 本 文 档 阐 述 如 何 部 署 和 配 置 <strong>Panel</strong>, 以 及 如<br />

何 集 成 到 交 付 应 用 程 序 。<br />

概 述<br />

章 节 “ 交 付 流 程 注 意 事 项 ” 概 述 整 个 交 付 流 程 涉 及 的 重 要 事 项 。<br />

章 节 “ 部 署 面 板 ” 着 重 在 <strong>Panel</strong> 的 交 付 阶 段 。 内 容 涵 盖 <strong>Parallels</strong> Containers 环 境 的 安 装 与<br />

独 立 安 装 , 也 包 括 如 何 创 建 <strong>Parallels</strong> Small Business <strong>Panel</strong> 分 发 库 的 自 定 义 镜 像 。<br />

下 面 三 章 阐 述 <strong>Panel</strong> 交 付 的 安 装 阶 段 :<br />

• 章 节 “ 安 装 操 作 概 要 ” 阐 述 安 装 操 作 的 概 念 和 卷 。


关 于 此 文 件 7<br />

• 章 节 “ 通 过 远 程 API 设 置 ” 阐 述 如 何 通 过 远 程 XML API 安 装 <strong>Panel</strong>。 本 章 阐 述 远 程 API:<br />

提 供 API RPC 协 议 概 要 和 用 来 通 过 协 议 与 <strong>Panel</strong> 服 务 器 互 动 的 工 具 示 例 , 然 后 详 细 阐<br />

述 第 三 方 工 具 如 何 通 过 请 求 信 息 执 行 <strong>Panel</strong> 安 装 操 作 , 以 及 接 收 到 的 每 个 操 作 对 应 的<br />

相 应 信 息 。<br />

• 章 节 “ 通 过 远 程 CLI 设 置 ” 阐 述 如 何 通 过 命 令 行 界 面 安 装 <strong>Panel</strong>。 本 章 首 先 阐 述 CLI 基 本<br />

概 念 , 然 后 详 细 阐 述 应 执 行 哪 些 命 令 来 安 装 <strong>Panel</strong>。


第 2 章<br />

交 付 流 程 注 意 事 项<br />

交 付 <strong>Parallels</strong> Small Business <strong>Panel</strong> for Windows 时 , 包 括 产 品 部 署 和 安 装 之 间 的 五 分<br />

钟 间 隔 。 需 要 此 安 装 延 迟 是 因 为 安 装 后 脚 本 需 要 时 间 来 注 册 和 安 装 第 三 方 组 件 。 在 此 阶<br />

段 执 行 的 交 付 操 作 会 失 败 。


第 3 章<br />

部 署 <strong>Panel</strong><br />

本 章 着 重 阐 述 <strong>Parallels</strong> Small Business <strong>Panel</strong> 交 付 的 部 署 阶 段 。<br />

内 容 涵 盖 <strong>Parallels</strong> Containers 环 境 的 安 装 与 独 立 安 装 , 也 包 括 如 何 创 建 <strong>Panel</strong> 分 发 库 的<br />

自 定 义 镜 像 。<br />

本 章 内 容 :<br />

独 立 部 署 ............................................................................................................ 10<br />

在 <strong>Parallels</strong> Containers 环 境 中 部 署 ................................................................... 17<br />

使 用 Rsync 实 用 程 序 设 置 镜 像 ........................................................................... 22


10 部 署 <strong>Panel</strong><br />

独 立 部 署<br />

本 章 阐 述 如 何 在 非 <strong>Parallels</strong> Containers 环 境 中 自 动 部 署 <strong>Panel</strong>,Linux/Unix 或 Windows。 本 章<br />

简 要 阐 述 <strong>Panel</strong> 安 装 的 基 本 步 骤 , 并 说 明 如 何 使 用 使 用 命 令 行 界 面 安 装 产 品 。<br />

使 用 <strong>Parallels</strong> 安 装 程 序 实 用 工 具 执 行 <strong>Panel</strong> 独 立 部 署 。 实 用 程 序 连 接 到 <strong>Parallels</strong> Small<br />

Business <strong>Panel</strong> 更 新 服 务 器 , 更 新 存 放 <strong>Panel</strong> 程 序 包 的 服 务 器 , 检 索 所 需 程 序 包 , 并 进 行 安 装<br />

。<br />

<strong>Parallels</strong> 安 装 程 序 可 在 互 动 模 式 ,( 通 过 Web 图 形 用 户 界 面 或 命 令 行 ), 或 自 动 模 式 下 运 行 , 通<br />

过 命 令 行 运 行 需 指 定 特 定 选 项 。 自 动 模 式 下 可 使 用 shell 脚 本 来 自 动 化 <strong>Panel</strong> 的 部 署 。<br />

提 供 多 个 版 本 的 <strong>Parallels</strong> 安 装 程 序 , 各 面 向 不 同 操 作 系 统 和 平 台 , 确 定 获 取 与 您 的 主 机 操 作 系<br />

统 兼 容 的 <strong>Parallels</strong> 安 装 程 序 。 通 常 ,<strong>Parallels</strong> 安 装 程 序 版 本 名 使 用 下 列 格 式 :<br />

parallels_installer_v_os__。<br />

注 意 : 描 述 <strong>Parallels</strong> 安 装 程 序 CLI 时 , 假 设 <strong>Parallels</strong> 安 装 程 序 名 称 是<br />

parallels_installer。<br />

官 方 <strong>Parallels</strong> Small Business <strong>Panel</strong> 库 是 autoinstall.plesk.com (Linux/Unix 程 序 包 ) 和<br />

autoinstall-win.parallels.com (Windows 程 序 包 )。 您 可 能 想 要 在 主 机 环 境 中 为 <strong>Panel</strong> 设 置 自 定<br />

义 镜 像 ( 第 22 页 ), 确 保 安 全 安 装 。<br />

获 取 版 本 ID<br />

版 本 ID 是 <strong>Panel</strong> 版 本 的 唯 一 标 示 符 , 如 <strong>Parallels</strong> Small Business <strong>Panel</strong> 10.0。<br />

若 要 获 取 版 本 ID 列 表 , 执 行 下 列 命 令 :<br />

parallels_installer --show-all-releases<br />

在 Linux/Unix 服 务 器 上<br />

parallels_installer.exe --show-all-releases<br />

在 Windows 服 务 器 上<br />

即 可 显 示 产 品 版 本 列 表 。 例 如 :<br />

• PPSMBE_10_0_0 (<strong>Parallels</strong> Small Business <strong>Panel</strong> 10.0.0)


部 署 <strong>Panel</strong> 11<br />

获 取 产 品 组 件 列 表<br />

若 要 获 取 组 件 版 本 列 表 , 执 行 格 式 如 下 的 命 令 :<br />

parallels_installer --select-release-id --show-components<br />

如 <strong>Parallels</strong> Small Business <strong>Panel</strong> 10:<br />

parallels_installer --select-release-id PPSMBE_10_0_0 --show-components<br />

在 Linux/Unix 服 务 器 上<br />

parallels_installer.exe --select-release-id PPSMBE_10_0_0_WIN<br />

--show-components<br />

即 会 显 示 组 件 列 表 , 组 件 名 称 在 左 侧 , 简 短 名 称 在 右 侧 , 如 :<br />

• 基 本 [install] - <strong>Parallels</strong> Small Business <strong>Panel</strong> 基 本 程 序 包<br />

• autoinstaller [install] - <strong>Parallels</strong> 产 品 安 装 程 序<br />

• postfix [install] - Postfix 邮 件 服 务 器<br />

• php5 [install] - PHP5 支 持<br />

• postgresql [install] - PostgreSQL 支 持<br />

• api [install] - <strong>Parallels</strong> Small Business <strong>Panel</strong> 基 本 程 序 包<br />

• siteeditor [install] - 站 点 编 辑 器<br />

• setemplates [install] - 站 点 编 辑 器 模 板<br />

• mod_python [install] - Apache mod_python 模 块<br />

• ruby [install] - Ruby on Rails 支 持<br />

• 防 火 墙 [install] - 防 火 墙 加 载 项<br />

• vpn [install] - VPN 加 载 项<br />

• 文 件 服 务 器 [install] - Fileserver 加 载 项<br />

• watchdog [install] - 系 统 监 控 加 载 项 (Watchdog)<br />

• drweb [install] - Dr. Web 防 病 毒<br />

• spamassassin [install] - SpamAssassin 支 持<br />

• 备 份 [install] - 备 份 管 理 器<br />

• backup-vz [install] - 备 份 管 理 器 PVC 重 装 支 持<br />

• de-DE-locale [install] - 德 文 语 言 包<br />

• ja-JP-locale [install] - 日 文 语 言 包<br />

• es-ES-locale [install] - 西 班 牙 文 语 言 包<br />

• ru-RU-locale [install] - 俄 文 语 言 包<br />

• fr-FR-locale [install] - 法 文 语 言 包<br />

• it-IT-locale [install] - 意 文 语 言 包<br />

• zh-CN-locale [install] - 简 体 中 文 语 言 包<br />

• zh-TW-locale [install] - 繁 体 中 文 语 言 包


12 部 署 <strong>Panel</strong><br />

• nl-NL-locale [install] - 荷 兰 文 语 言 包<br />

• atmail [install] - Atmail 网 络 邮 件 支 持


部 署 <strong>Panel</strong> 13<br />

安 装 <strong>Panel</strong><br />

若 要 安 装 <strong>Parallels</strong> Small Business <strong>Panel</strong>, 执 行 格 式 如 下 的 命 令 :<br />

parallels_installer --select-release-id <br />

[other options]<br />

其 中<br />

• 程 序 包 来 源 选 项 定 义 安 装 程 序 应 获 取 并 安 装 <strong>Panel</strong> 程 序 包 的 位 置<br />

=<br />

--source <br />

若 使 用 <strong>Panel</strong> 更 新 服 务 器 镜 像<br />

或<br />

--source VPS dashboard<br />

若 使 用 本 地 文 件 系 统<br />

或<br />

无<br />

若 从 <strong>Panel</strong> 更 新 服 务 器 安 装<br />

• 组 件 ( 第 11 页 ) 安 装 选 项 定 义 要 安 装 哪 些 <strong>Panel</strong> 组 件<br />

=<br />

--install-everything<br />

或<br />

--install-component component1 [--install-component component2 [...<br />

[--install-component componentN]]]<br />

• 其 他 选 项 包 括 定 义 代 理 服 务 器 设 置 、 安 装 日 志 等 等 。 如 需 详 情 , 请 参 阅 安 装 程 序 CLI 参 考 章<br />

节 ( 第 14 页 )<br />

如 ,Linux/Unix<br />

1. 下 列 命 令 可 用 于 从 服 务 器 上 的 镜 像 设 置 到 。 通 过 HTTP 在 主 机 ppsmbe-mirror.example.com<br />

上 设 置 镜 像 来 安 装 <strong>Parallels</strong> Small Business <strong>Panel</strong> 10 ( 版 本 ID 是 PPSMBE_10_0_0)。 安 装 文<br />

件 会 临 时 存 放 在 /tmp/ppsmbe, 安 装 状 态 会 发 送 到 admin@example.com。 安 装 的 组 件 包 括<br />

<strong>Panel</strong> 程 序 包 、PostgreSQL 服 务 器 和 SpamAssassin 垃 圾 邮 件 过 滤 器 。<br />

./parallels_installer --source http://ppsmbe-mirror.example.com/ --target<br />

/tmp/ppsmbe --select-release-id PPSMBE_10_0_0 --install-component base<br />

--install-component postgresql --install-component spamassassin<br />

--notify-email admin@example.com<br />

2. 下 列 命 令 可 用 于 完 全 安 装 ( 安 装 所 有 产 品 组 件 ) 来 自 <strong>Parallels</strong> 更 新 服 务 器 的 <strong>Parallels</strong> Small<br />

Business <strong>Panel</strong> 10 ( 版 本 ID 是 PPSMBE_10_0_0)。 所 有 安 装 程 序 输 出 会 重 定 向 到 XML 文 件 。<br />

./parallels_installer --select-release-id PPSMBE_10_0_0 --install-everything<br />

--enable-xml-output<br />

示 例 Windows


14 部 署 <strong>Panel</strong><br />

1. 下 列 命 令 可 用 于 从 服 务 器 上 的 镜 像 设 置 到 。 通 过 HTTP 在 主 机 PPSMBE_10_0_0_WIN 上 设<br />

置 镜 像 来 安 装 <strong>Parallels</strong> Small Business <strong>Panel</strong> 10 ( 版 本 ID 是 PPSMBE_10_0_0)。 安 装 文 件 会<br />

临 时 存 放 在 ppsmbe-mirror.example.com, 安 装 状 态 会 发 送 到 admin@example.com。 安 装 的 组<br />

件 包 括 <strong>Panel</strong> 程 序 包 、 绑 定 域 名 服 务 器 、MailEnable 邮 件 服 务 器 、PHP 脚 本 编 译 工 具 、 站 点 编<br />

辑 器 和 Horde Webmail。<br />

parallels_installer.exe --source http://ppsmbe-mirror.example.com/ --target<br />

%SystemDrive%\<strong>Parallels</strong> --select-release-id PPSMBE_10_0_0_WIN<br />

--install-component base --install-component dns --install-component<br />

mailenable --install-component php5 --install-component siteeditor<br />

--install-component webmail --notify-email admin@example.com<br />

2. 下 列 命 令 可 用 于 完 全 安 装 ( 安 装 所 有 产 品 组 件 ) 来 自 <strong>Parallels</strong> 更 新 服 务 器 的 <strong>Parallels</strong> Small<br />

Business <strong>Panel</strong> 10 ( 版 本 ID 是 PPSMBE_10_0_0_WIN)。 所 有 安 装 程 序 输 出 会 重 定 向 到 XML<br />

文 件 。<br />

parallels_installer.exe --select-release-id PPSMBE_10_0_0_WIN<br />

--install-everything --enable-xml-output<br />

安 装 程 序 CLI 参 考 ( 简 化 )<br />

本 参 考 只 涵 盖 使 用 CLI 安 装 <strong>Panel</strong> 的 <strong>Parallels</strong> 安 装 程 序 选 项 。<br />

若 要 了 解 有 关 已 安 装 的 <strong>Panel</strong> 或 主 机 操 作 系 统 升 级 相 关 的 选 项 , 执 行 下 列 命 令 :<br />

parallels_installer --help<br />

选 项<br />

--source VPS<br />

dashboard|<br />

描 述 及 可 能 的 问 题<br />

从 本 地 文 件 系 统 检 索 到 <strong>Panel</strong> 程 序 包 后 , 指 定 --source 选 项 指 向 包 含<br />

要 安 装 的 <strong>Panel</strong> 相 关 的 .inf3 文 件 。<br />

--target VPS<br />

dashboard<br />

--proxy-host < 网 络 地 址<br />

><br />

从 网 络 服 务 器 检 索 到 <strong>Panel</strong> 程 序 包 后 , 指 定 --source 选 项 指<br />

向 <strong>Panel</strong> 更 新 服 务 器 镜 像 所 在 的 目 录 。<br />

默 认 情 况 下 , 安 装 程 序 将 检 索 到 的 文 件 保 存 到 目 录 //psa。 例 如 , 若 root 用 户 执 行 安 装 程 序 , 则 会 创 建 并 使 用<br />

/root/psa 目 录 。 若 要 使 用 自 定 义 目 录 存 放 检 索 到 的 文 件 , 请 使 用<br />

--target 选 项 。<br />

如 :<br />

--target /opt/storage/psa<br />

或<br />

--target D:\temp<br />

使 用 代 理 服 务 器 或 防 火 墙 时 , 请 使 用 此 选 项 指 定 代 理 服 务 器 域 名 或 IP 地<br />

址 。<br />

--proxy-port < 端 口 号 ><br />

如 :<br />

--proxy-host proxy.example.com<br />

连 接 代 理 服 务 器 的 默 认 端 口 是 3128。 若 代 理 服 务 器 使 用 其 他 端 口 号 , 请<br />

使 用 此 选 项 指 定 。<br />

如 :<br />

--proxy-port 5741


部 署 <strong>Panel</strong> 15<br />

选 项<br />

代 理 服 务 器 认 证 选 项 。<br />

--proxy-user<br />

<br />

--proxy-password<br />

<br />

--show-releases<br />

描 述 及 可 能 的 问 题<br />

若 代 理 服 务 器 需 要 认 证 , 请 使 用 这 些 选 项 在 代 理 服 务 器 上 认 证 安 装 程 序 。<br />

示 例 :<br />

--proxy-user smith --proxy-password f1sZ9AnQ4EnO52<br />

指 定 此 选 项 检 索 要 执 行 安 装 程 序 的 可 用 操 作 系 统 版 本 列 表 。 则 会 看 到 版<br />

本 标 识 符 和 版 本 描 述 。 接 下 来 您 需 处 理 版 本 标 识 符 。<br />

--show-all-releases 此 选 项 显 示 <strong>Panel</strong> 更 新 服 务 器 上 所 有 可 用 的 版 本 。<br />

--select-release-id<br />

<br />

--select-release-lat<br />

est<br />

--show-components<br />

--install-component<br />

<br />

使 用 此 选 项 指 定 要 安 装 或 要 查 看 其 属 性 的 版 本 。<br />

使 用 此 选 项 选 择 您 的 操 作 系 统 可 用 的 最 新 版 本 。<br />

指 定 此 选 项 来 获 取 所 选 版 本 可 用 的 组 件 相 关 信 息 。 即 将 显 示 组 件 描 述 和<br />

名 称 。<br />

选 择 要 安 装 的 其 他 组 件 时 , 请 指 定 组 件 名 称 。<br />

使 用 此 选 项 指 定 要 安 装 的 组 件 。 若 要 一 次 安 装 多 个 组 件 , 请 重 复 使 用 此<br />

选 项 。<br />

示 例 :<br />

--install-component base --install-component<br />

postgresql --install-component spamassassin<br />

--install-everything 使 用 此 选 项 安 装 所 选 版 本 的 所 有 组 件 。<br />

--show-os-list 使 用 此 选 项 找 到 所 选 版 <strong>Panel</strong> 支 持 的 操 作 系 统 。<br />

--no-space-check 即 便 磁 盘 空 间 不 足 也 安 装 程 序 包 。<br />

--no-daemon 在 前 台 执 行 安 装 。<br />

--notify-email<br />

<br />

使 用 此 选 项 让 安 装 程 序 通 过 邮 件 发 送 状 态 报 告 。 成 功 的 完 成 报 告 包 括 安<br />

装 / 升 级 的 程 序 包 及 其 详 细 日 志 。<br />

--enable-xml-output 此 选 项 的 功 能 是 与 <strong>Panel</strong> 通 讯 , 也 可 以 与 其 他 应 用 程 序 搭 配 使 用 。<br />

指 定 此 选 项 时 , 安 装 程 序 全 部 输 出 到 XML 文 件 。 注 意 , 此 选 项 会 禁 止 安<br />

装 程 序 通 过 退 出 代 码 报 告 错 误 。 退 出 代 码 是 零 , 报 告 的 所 有 错 误 都 在 XML<br />

输 出 中 。<br />

--query-status<br />

因 RPM 数 据 库 不 允 许 多 进 程 , 安 装 程 序 会 锁 定 它 的 功 能 。 运 行 此 选 项 查<br />

看 安 装 程 序 是 否 启 用 。 这 会 检 查 是 否 锁 定 , 将 会 返 回 退 出 代 码 (0 - 安 装<br />

程 序 闲 置 ,1 - 安 装 程 序 正 在 运 行 且 繁 忙 ), 或 XML 格 式 的 输 出 。<br />

--truncate-log <strong>Parallels</strong> 产 品 安 装 程 序 启 动 后 , 即 清 除 日 志 文 件 。<br />

--separate-log <strong>Parallels</strong> 产 品 安 装 程 序 每 次 启 动 都 使 用 新 日 志 文 件 。


16 部 署 <strong>Panel</strong><br />

选 项<br />

描 述 及 可 能 的 问 题<br />

--debug 启 用 日 志 文 件 详 细 输 出 。<br />

--version 显 示 <strong>Parallels</strong> 产 品 安 装 程 序 版 本 。<br />

安 装 脚 本 (Linux/Unix)<br />

本 章 阐 述 如 何 实 施 和 执 行 安 装 脚 本 , 也 提 供 安 装 脚 本 范 例 。<br />

实 施 与 执 行 注 意 事 项<br />

• 若 要 避 免 通 过 SSH 连 接 安 装 <strong>Panel</strong> 的 服 务 器 时 每 次 都 被 提 醒 输 入 密 码 , 请 将 公 钥 放 到 应 在<br />

每 个 服 务 器 上 执 行 脚 本 的 用 户 授 权 码 列 表 中 ( 参 阅 SSH 文 档 了 解 如 何 操 作 )。<br />

• 若 有 <strong>Panel</strong> 更 新 服 务 器 本 地 镜 像 ( 参 阅 设 置 镜 像 章 节 ( 第 22 页 )), 使 用 下 列 选 项 :<br />

--source <br />

• 默 认 情 况 下 , 所 有 下 载 的 程 序 包 存 放 在 /root/psa 目 录 。 若 要 使 用 另 一 目 录 , 使 用 下 列<br />

选 项 :<br />

--target <br />

样 本 脚 本<br />

1. 此 示 例 脚 本 在 多 数 情 况 下 适 用 ,<strong>Parallels</strong> 安 装 程 序 之 前 上 传 到 目 标 服 务 器 , 已 在 权 限 中 设 置<br />

执 行 。<br />

#!/bin/sh<br />

SERVERS_LIST="node1.example.com node2.example.com"<br />

for current_server in $SERVERS_LIST; do<br />

scp parallels_installer root@$current_server:<br />

ssh -f root@$current_server "parallels_installer --source<br />

http://updates.example.com/ --target /tmp/ppsmbe --select-release-id<br />

PPSMBE_10_0_0 --install-component base --install-component postgresql<br />

--install-component asp --notify-email admin@example.com"<br />

done<br />

2. 当 直 接 从 网 络 位 置 获 取 <strong>Parallels</strong> 安 装 程 序 二 进 制 时 可 使 用 此 示 例 脚 本 ( 示 例 URL<br />

http://example.com/type_parallels_installer_name_here 应 替 换 成 有 效 的 安 装 程 序 下 载 链 接 )。<br />

#!/bin/sh<br />

SERVERS_LIST="node1.example.com node2.example.com"<br />

for current_server in $SERVERS_LIST; do<br />

ssh -f root@$current_server 'wget<br />

http://example.com/type_parallels_installer_name_here -o<br />

parallels_installer;chmod 755 ./parallels_installer;./parallels_installer<br />

--source http://updates.example.com/ --target /tmp/ppsmbe --select-release-id<br />

PPSMBE_10_0_0 --install-component base --install-component postgresql<br />

--install-component spamassassin --notify-email admin@example.com'<br />

done


部 署 <strong>Panel</strong> 17<br />

在 <strong>Parallels</strong> Containers 环 境 中 部 署<br />

本 章 涵 盖 使 用 <strong>Parallels</strong> Containers CLI 部 署 面 板 所 需 的 基 本 步 骤 , 着 重 在 使 用 <strong>Parallels</strong> Small<br />

Business <strong>Panel</strong> 创 建 Container。 如 需 有 关 <strong>Parallels</strong> Container CLI 或 <strong>Parallels</strong> Containers API<br />

(XML 或 SOAP) 功 能 的 更 多 信 息 , 参 阅 <strong>Parallels</strong> Containers 开 发 人 员 文 档<br />

(http://www.parallels.com/ptn/documentation/virtuozzo/)。<br />

在 <strong>Parallels</strong> Containers 环 境 中 部 署 <strong>Panel</strong> 包 括 下 面 两 个 阶 段 :<br />

1 在 硬 件 节 点 上 安 装 <strong>Panel</strong> 应 用 程 序 模 板 。<br />

2 创 建 Container, 并 从 模 板 部 署 应 用 程 序 。<br />

第 一 阶 段 只 在 每 个 硬 件 节 点 上 执 行 一 次 : 应 用 程 序 模 板 安 装 到 硬 件 节 点 上 之 后 , 即 可 根 据 需 要<br />

部 署 尽 可 能 多 的 Container。<br />

无 需 每 次 创 建 新 Container, 每 次 需 要 使 用 <strong>Panel</strong> 部 署 VPS 时 , 提 供 选 项 克 隆 安 装 <strong>Panel</strong> 的 现<br />

有 Container, 并 作 为 模 板 Container 使 用 。


18 部 署 <strong>Panel</strong><br />

<strong>Parallels</strong> Containers for Unix<br />

两 种 EZ 模 板 适 用 于 <strong>Parallels</strong> Small Business <strong>Panel</strong> 10:<br />

• ppsmbe10<br />

包 含 <strong>Panel</strong> 核 心 组 件 。<br />

• ppsmbe10-extended<br />

包 含 所 有 附 加 组 件 , 如 SpamAssassin 垃 圾 邮 件 过 滤 器 、Ruby-on-Rails 框 架 、Dr.Web 防<br />

病 毒 、 站 点 编 辑 器 模 板 和 其 他 组 件 。<br />

若 安 装 扩 展 版 的 <strong>Panel</strong>, 则 需 安 装 两 个 模 板 。<br />

通 过 下 列 方 式 可 在 目 标 硬 件 节 点 上 安 装 <strong>Panel</strong> 模 板 :<br />

• 使 用 vzup2date 实 用 程 序 。 如 需 详 情 , 参 阅 <strong>Parallels</strong> Containers for Linux 参 考 指 南 , 位<br />

于 <strong>Parallels</strong> 技 术 社 区 (http://www.parallels.com/ptn/documentation/virtuozzo/)。<br />

• 直 接 从 <strong>Parallels</strong> 网 站 (http://www.parallels.com) 下 载 模 板 , 并 使 用 vzpkg 实 用 工 具 安 装<br />

在 硬 件 节 点 上 安 装 模 板 时 , 即 可 部 署 文 件 核 心 设 置 , 其 中 包 括 应 用 程 序 库 定 义 。 在 Container<br />

中 安 装 应 用 程 序 后 ,<strong>Parallels</strong> Containers 与 库 通 讯 (<strong>Parallels</strong> Small Business <strong>Panel</strong> for<br />

Linux/Unix 默 认 库 是 <strong>Parallels</strong> 更 新 服 务 器 , 位 于 http://autoinstall.plesk.com), 并 检 索 应 用 程 序<br />

包 , 安 装 到 Container 中 。 清 空 前 程 序 包 存 放 在 节 点 缓 存 中 , 应 用 程 序 安 装 到 Container 中 之 后 ,<br />

再 从 库 中 检 索 程 序 包 。 若 要 保 存 流 量 和 时 间 , 则 需 使 用 <strong>Panel</strong> 库 的 自 定 义 镜 像 。<br />

‣ 若 要 使 用 vzpkg 实 用 程 序 在 <strong>Parallels</strong> Containers 上 安 装 <strong>Panel</strong> 模 板 :<br />

1 从 <strong>Parallels</strong> 网 站 (http://www.parallels.com) 获 取 <strong>Panel</strong> 模 板 , 并 上 传 到<br />

<strong>Parallels</strong> Containers 硬 件 节 点 。<br />

2 执 行 格 式 如 下 的 命 令 安 装 应 用 程 序 模 板 :<br />

vzpkg install template [-q|] ...<br />

其 中<br />

• -q 禁 止 登 录 显 示 器 和 日 志 文 件<br />

-d|--debug 设 置 日 志 级 , 从 0 到 10 例 如 , 下 列 命 令 安 装 <strong>Panel</strong> 的 核 心 和 扩<br />

展 组 件 :<br />

# vzpkg install template<br />

ppsmbe10-debian-5.0-x86-ez-4.0.0-1.prl.284629.noarch.rpm<br />

ppsmbe10-extended-debian-5.0-x86-ez-4.0.0-1.prl.284385.noarch.rpm<br />

‣ 若 要 使 用 自 定 义 镜 像 :<br />

1 若 要 设 置 镜 像 , 参 阅 建 立 Linux/Unix 版 镜 像 章 节 ( 第 23 页 )。<br />

2 在 硬 件 节 点 上 , 编 辑 库 URL 文 件 :


部 署 <strong>Panel</strong> 19<br />

1. 打 开 编 辑 文 件<br />

/vz/template/Linux///config/<br />

app//default/repositories。<br />

即<br />

/vz/template/Linux///config/app/ppsmbe10/<br />

default/repositories 和<br />

/vz/template/Linux///config/app/ppsmbe10-<br />

extended/default/repositories. 若 安 装 了 两 个 模 板 , 则 编 辑 两 个 文 件 。<br />

2. 使 用 镜 像 URL 替 换 相 应 的 <strong>Parallels</strong> 更 新 服 务 器 URL, 并 保 存 文 件 。<br />

3 清 除 或 重 新 获 取 程 序 包 元 数 据 。<br />

使 用 vzpkg clean 命 令 可 执 行 此 操 作 。 如 需 详 情 , 参 阅 <strong>Parallels</strong> Containers for Linux 参<br />

考 指 南 , 位 于 <strong>Parallels</strong> 技 术 社 区 (http://www.parallels.com/ptn/documentation/virtuozzo/)<br />

。<br />

‣ 若 要 创 建 新 Container 并 在 其 中 安 装 <strong>Panel</strong>:<br />

1 创 建 Container, 并 根 据 需 求 配 置 。<br />

执 行 以 下 命 令 :<br />

vzctl create [options]<br />

vzctl set [--save]<br />

其 中<br />

• 定 义 大 于 100 的 唯 一 Container ID, 在 硬 件 节 点 上 唯 一<br />

• --save 选 项 让 vzctl 是 否 将 变 更 保 存 到 Container 配 置 文 件<br />

注 意 : 如 需 有 关 Container 创 建 和 配 置 选 项 的 详 细 信 息 , 参 阅 <strong>Parallels</strong> Containers for<br />

Linux 参 考 指 南 , 位 于 <strong>Parallels</strong> 技 术 社 区<br />

(http://www.parallels.com/ptn/documentation/virtuozzo/)。<br />

如 , 下 面 的 命 令 执 行 :<br />

1. 创 建 Container,ID 为 ,IP 为 192.0.2.44, 基 于 <strong>Parallels</strong> Containers 全 局 配 置 文 件 中<br />

定 义 的 默 认 OS 模 板<br />

2. 设 置 无 法 交 换 的 内 核 内 存 阻 碍 和 限 制 , 专 用 ( 或 潜 在 的 专 用 ) 内 存 , 所 有 Container 进 程 打<br />

开 的 文 件 数 , 以 及 Container 可 分 配 的 磁 盘 空 间 和 磁 盘 inodes( 文 件 、 目 录 、 符 号 链 接 )<br />

总 数<br />

3. 保 存 阻 碍 / 限 制 值 到 Container 配 置 文 件<br />

4. 使 用 Web 浏 览 器 管 理 Container ( 使 用 "--offline_management no" 选 项 阻 止 离 线<br />

管 理 )<br />

注 意 : 请 按 示 例 设 置 此 选 项 。 否 则 无 法 通 过 网 络 浏 览 器 访 问 。<br />

# vzctl create 444 --ipadd 192.0.2.44<br />

# vzctl set 444 --save --kmemsize 24299200:26429120 --privvmpages<br />

362144:392912 --numfile 12000:12000 --diskspace 5117880:5242880<br />

--diskinodes 350000:370000 offline_management no


20 部 署 <strong>Panel</strong><br />

2 启 动 新 近 创 建 的 Container:<br />

# vzctl start <br />

3 将 <strong>Panel</strong> 模 板 安 装 到 Container 中 :<br />

vzpkg install ...<br />

如 , 下 列 命 令 可 以 安 装 <strong>Panel</strong> 核 心 和 附 加 组 件 :<br />

# vzpkg install 444 ppsmbe10 ppsmbe10-extended<br />

‣ 若 要 克 隆 Container:<br />

执 行 格 式 如 下 的 命 令 :<br />

vzmlocal -C {CT List}<br />

{CT List} = :[:[][:]]<br />

[...]<br />

请 指 定 源 Container ID () 和 目 标 Container ID ()。 指 定 目<br />

标 Container 专 用 区 路 径 () 和 根 路 径 () 可 选 ; 它 允 许 您<br />

分 别 覆 盖 默 认 路 径 - /vz/private/ 和 /vz/root/。 如 需 命<br />

令 选 项 详 情 , 参 阅 <strong>Parallels</strong> Containers for Linux 参 考 指 南 , 位 于 <strong>Parallels</strong> 技 术 社 区<br />

(http://www.parallels.com/ptn/documentation/virtuozzo/)。<br />

例 如 , 若 要 使 用 之 前 创 建 的 <strong>Panel</strong> 克 隆 Container:<br />

# vzmlocal -C 444:445


部 署 <strong>Panel</strong> 21<br />

<strong>Parallels</strong> Containers for Windows<br />

‣ 若 要 在 <strong>Parallels</strong> Containers 硬 件 节 点 上 安 装 <strong>Panel</strong>:<br />

1 从 <strong>Parallels</strong> 网 站 (http://www.parallels.com) 获 取 <strong>Panel</strong> 模 板 , 并 上 传 到<br />

<strong>Parallels</strong> Containers 硬 件 节 点 。<br />

2 安 装 <strong>Panel</strong> 的 应 用 程 序 模 板 。 若 是 在 Microsoft Windows Server 2003 上 安 装<br />

, 也 请 执 行 以 下 格 式 的 命 令 安 装 Microsoft .NET Framework v.2.0 或 更 新 版 本<br />

:<br />

vzpkgdeploy [-q|-v] -i <br />

其 中<br />

• -q 禁 止 登 录 显 示 器 和 日 志 文 件<br />

-v 设 置 此 vzpkgdeploy 会 话 的 登 录 级 别 到 最 大 值 例 如 ,<br />

>vzpkgdeploy -i ppsmbe-10.0.0.0-20090707.efb<br />

>vzpkgdeploy -i dotnet2.0_frmwk-2.0.50727.42.efb<br />

注 意 : 仅 有 Windows Server 2003 (PVC 4.0, VZ 3.5.1) 需 安 装 .NET Framework 附 加 模<br />

板 。Windows Server 2008 (PVC 4.5) 不 需 要 。<br />

‣ 若 要 创 建 新 Container 并 在 其 中 安 装 <strong>Panel</strong>:<br />

1 创 建 Container, 并 根 据 需 求 配 置 。<br />

执 行 以 下 命 令 :<br />

vzctl create --pkgset name [options]<br />

vzctl set [--save]<br />

其 中<br />

• 定 义 大 于 100 的 唯 一 Container ID, 在 硬 件 节 点 上 唯 一<br />

• --pkgset name 表 示 要 用 来 创 建 Container 的 OS 模 板<br />

• --save 选 项 让 vzctl 是 否 将 变 更 保 存 到 Container 配 置 文 件<br />

注 意 : 如 需 有 关 Container 创 建 和 配 置 选 项 的 详 细 信 息 , 参 阅 <strong>Parallels</strong> Containers for<br />

Windows 参 考 指 南 , 位 于 <strong>Parallels</strong> 技 术 社 区<br />

(http://www.parallels.com/ptn/documentation/virtuozzo/)。<br />

如 , 下 面 的 命 令 执 行 :<br />

• 创 建 Container,ID 为 444,IP 为 192.0.2.44, 基 于 OS 模 板 w2k3<br />

• 设 置 磁 盘 空 间 限 制 为 4+ Gb, 专 用 空 间 限 制 为 1 Gb, 管 理 员 密 码 为 "P4$$w0rd"<br />

• 使 用 Web 浏 览 器 管 理 Container ( 使 用 "--offline_management no" 选 项 阻 止 离 线<br />

管 理 )<br />

注 意 : 请 按 示 例 设 置 此 选 项 。 否 则 无 法 通 过 网 络 浏 览 器 访 问 <strong>Panel</strong>。<br />

>vzctl create 444 --pkgset w2k3 --ipadd 192.0.2.44


22 部 署 <strong>Panel</strong><br />

>vzctl set 444 --save --diskspace 4500000 --vprvmem 1024 --userpasswd<br />

Administrator:P4$$w0rd --offline_management no<br />

2 启 动 新 近 创 建 的 Container:<br />

>vzctl start <br />

3 安 装 Microsoft .NET framework 2.0 或 以 上 版 本 到 Container 中 :<br />

vzpkgadd <br />

例 如 ,<br />

>vzpkgadd 444 dotnet2.0_frmwk-2.0.50727.42/20070613<br />

4 将 <strong>Parallels</strong> Small Business <strong>Panel</strong> 模 板 安 装 到 Container 中 :<br />

vzpkgadd <br />

例 如 ,<br />

>vzpkgadd 444 ppsmbe-10.0.0.0-20090707<br />

‣ 若 要 克 隆 Container:<br />

执 行 格 式 如 下 的 命 令 :<br />

vzmlocal -C <br />

= :[:] [options]<br />

请 指 定 源 Container ID () 和 目 标 Container ID ()。 指 定 目 标<br />

Container 专 用 区 域 路 径 () 可 选 ; 它 允 许 您 覆 盖<br />

X:\vz\private\ 默 认 路 径 。 如 需 命 令 选 项 详 情 , 参 阅 <strong>Parallels</strong> Containers for<br />

Windows 参 考 指 南 , 位 于 <strong>Parallels</strong> 技 术 社 区<br />

(http://www.parallels.com/ptn/documentation/virtuozzo/)。<br />

例 如 , 若 要 使 用 之 前 创 建 的 <strong>Panel</strong> 克 隆 Container:<br />

>vzmlocal -C 444:445<br />

使 用 Rsync 实 用 程 序 设 置 镜 像<br />

本 章 阐 述 如 何 使 用 Rsync 在 Linux 服 务 器 上 创 建 Linux/Unix 和 Windows 版 <strong>Parallels</strong> Small<br />

Business <strong>Panel</strong> <strong>Parallels</strong> 更 新 服 务 器 本 地 镜 像 。Rsync 是 开 源 实 用 程 序 , 使 用 它 即 可 创 建 支<br />

持 相 应 版 <strong>Panel</strong> 的 镜 像 , 包 括 <strong>Parallels</strong> Containers。<br />

<strong>Parallels</strong> Small Business <strong>Panel</strong> for Linux 库 镜 像 可 支 持 独 立 和 <strong>Parallels</strong> Containers 安 装 ( 取 决<br />

于 镜 像 程 序 包 大 小 )。


部 署 <strong>Panel</strong> 23<br />

建 立 Linux/Unix 分 发 包 镜 像<br />

<strong>Parallels</strong> Small Business <strong>Panel</strong> for Linux/Unix 库 位 于 autoinstall.plesk.com, 结 构 如 下 ( 我 们<br />

只 列 出 建 立 <strong>Panel</strong> 程 序 包 镜 像 相 关 文 件 和 目 录 ):<br />

• _/<br />

根 据 <strong>Panel</strong> 版 本 命 名 多 个 子 目 录 。<br />

子 目 录 介 绍<br />

a<br />

PPSMBE_/<br />

如 ,PPSMBE_10.0.0<br />

其 中 <strong>Panel</strong> 程 序 包 位 于<br />

b SETEMPLATES_/<br />

如 SETEMPLATES_1.0.0<br />

其 中 站 点 编 辑 器 组 件 200+ 站 点 设 计 模 板 程 序 包 所 处 位 置 。 它 是 <strong>Panel</strong> 组 件 而 不 是 一 款<br />

产 品 , 放 入 独 立 产 品 目 录 来 节 省 磁 盘 空 间 和 流 量 。<br />

每 个 子 目 录 包 含 下 列 文 件 :<br />

dist----/ 包 括 <strong>Panel</strong> 分 发 程 序<br />

包 或 设 计 模 板 如 dist-deb-Debian-5.0-x86_64/ 或<br />

dist-deb-Debian-all-all/<br />

update---- 包 含 服 务 器 操 作 系<br />

统 系 统 更 新 ; 是 程 序 包 类 型 。rpm, deb, pkg<br />

thirdparty----/ 包 含 其 他 第<br />

三 方 程 序 包<br />

• _--.inf3<br />

<strong>Parallels</strong> 安 装 程 序 配 置 文 件<br />

如 ppsmbe-10.0.0-suse11.1-x86_64.inf3,<br />

setemplates-1.0.0-deball-all.inf3<br />

• products.inf3<br />

<strong>Parallels</strong> 安 装 程 序 配 置 文 件 描 述 <strong>Panel</strong> 产 品<br />

• ppsmbe.inf3,setemplates.inf3<br />

<strong>Parallels</strong> 安 装 程 序 配 置 文 件 描 述 <strong>Panel</strong> 版 本 和 其 他 组 件<br />

• PPSMBE10/<br />

<strong>Parallels</strong> Small Business <strong>Panel</strong> 元 数 据 用 于 使 用 EZ 模 板 在 <strong>Parallels</strong> Containers 中 安 装<br />

<strong>Panel</strong>。<br />

• debian/,ubuntu/<br />

目 录 apt-get 可 用 来 使 用 EZ 模 板 和 <strong>Parallels</strong> 产 品 安 装 程 序 安 装 <strong>Parallels</strong> 产 品<br />

‣ 若 要 设 置 <strong>Panel</strong> 镜 像 :


24 部 署 <strong>Panel</strong><br />

1 登 录 要 建 立 镜 像 的 服 务 器 。<br />

2 建 立 要 存 放 文 件 的 目 录 。 为 了 演 示 , 我 们 会 调 用 此 目 录<br />

destination_directory/。<br />

3 在 此 目 录 中 创 建 两 个 子 目 录 :debian/ 和 ubuntu/。<br />

4 若 要 设 置 镜 像 , 执 行 下 列 命 令 。<br />

• 此 命 令 可 将 <strong>Parallels</strong> 更 新 库 上 的 /PPSMBE_10.0.0 目 录 下 载 到<br />

destination_directory。<br />

# rsync -au --delete<br />

rsync://rsync.autoinstall.plesk.com/autoinstall/PPSMBE_10.0.0<br />

destination_directory<br />

• 此 命 令 可 将 <strong>Parallels</strong> 更 新 库 上 的 /SETEMPLATES_1.0.0 目 录 下 载 到<br />

destination_directory。<br />

# rsync -au --delete<br />

rsync://rsync.autoinstall.plesk.com/autoinstall/SETEMPLATES_1.0.0<br />

destination_directory<br />

• 这 些 命 令 可 通 过 <strong>Parallels</strong> 安 装 程 序 下 载 <strong>Parallels</strong> Small Business <strong>Panel</strong> 的 Ubuntu 和<br />

Debian 程 序 包 。<br />

# rsync -au --delete<br />

rsync://rsync.autoinstall.plesk.com/autoinstall/debian/PPSMBE_10.0<br />

.0 destination_directory/debian<br />

# rsync -au --delete<br />

rsync://rsync.autoinstall.plesk.com/autoinstall/unbuntu/PPSMBE_10.<br />

0.0 destination_directory/ubuntu<br />

• 这 些 命 令 可 通 过 <strong>Parallels</strong> 安 装 程 序 下 载 用 来 安 装 Ubuntu 和 Debian 程 序 包 的 内 容 。<br />

# rsync -au --delete<br />

rsync://rsync.autoinstall.plesk.com/autoinstall/debian/SETEMPLATES<br />

_1.0.0 destination_directory/debian<br />

# rsync -au --delete<br />

rsync://rsync.autoinstall.plesk.com/autoinstall/unbuntu/SETEMPLATE<br />

S_1.0.0 destination_directory/ubuntu<br />

• 这 些 命 令 可 通 过 <strong>Parallels</strong> Containers EZ 模 板 下 载 用 来 安 装 Ubuntu 和 Debian 程 序 包 的<br />

内 容 。 若 要 设 置 非 <strong>Parallels</strong> Containers 环 境 镜 像 , 略 过 此 步 骤 。<br />

# rsync -au --delete<br />

rsync://rsync.autoinstall.plesk.com/autoinstall/debian/PPSMBE_10.0<br />

.0/ destination_directory/debian/PPSMBE10<br />

# rsync -au --delete<br />

rsync://rsync.autoinstall.plesk.com/autoinstall/ubuntu/PPSMBE_10.0<br />

.0/ destination_directory/ubuntu/PPSMBE10<br />

• 此 命 令 可 用 于 创 建 符 号 链 接 , 使 用 此 链 接 即 可 通 过 <strong>Parallels</strong> Containers EZ 模 板 在 基 于<br />

RPM 的 操 作 系 统 中 安 装 <strong>Panel</strong>。 若 要 设 置 非 <strong>Parallels</strong> Containers 环 境 镜 像 , 略 过 此 步<br />

骤 。<br />

# cd destination_directory; ln -s PPSMBE_10.0.0 PPSMBE10<br />

• 此 命 令 可 下 载 <strong>Parallels</strong> 安 装 程 序 配 置 文 件 。


部 署 <strong>Panel</strong> 25<br />

# rsync -auv --delete<br />

rsync://rsync.autoinstall.plesk.com/'autoinstall/products.inf3<br />

autoinstall/versions.inf3 autoinstall/ppsmbe.inf3<br />

autoinstall/setemplates.inf3' destination_directory<br />

5 编 辑 <strong>Parallels</strong> 安 装 程 序 配 置 文 件 定 义 此 镜 像 支 持 的 产 品 、 版 本 和 平 台 。<br />

1. 编 辑 products.inf3 文 件 移 除 所 有 product 元 素 , 只 保 留 ID ppsmbe<br />

。 若 要 支 持 站 点 编 辑 器 的 其 他 站 点 设 计 模 板 设 置 , 也 略 过 ID 为<br />

setemplates 的 product 元 素 。<br />

2. 编 辑 ppsmbe.inf3 文 件 , 移 除 所 有 build 元 素 , 留 下 镜 像 支 持 的 操 作 系<br />

统 和 架 构 。<br />

3. 编 辑 setemplates.inf3 文 件 , 移 除 所 有 build 元 素 , 留 下 其 他 站 点 编<br />

辑 器 站 点 设 计 模 板 支 持 的 操 作 系 统 和 架 构 。<br />

注 意 : 如 需 有 关 Rsync 实 用 程 序 的 更 多 信 息 , 请 访 问 http://samba.anu.edu.au/rsync/。


26 部 署 <strong>Panel</strong><br />

建 立 Windows 分 发 包 镜 像<br />

<strong>Parallels</strong> Small Business <strong>Panel</strong> for Windows 库 位 于 http://autoinstall-win.parallels.com, 结 构<br />

如 下 ( 我 们 只 列 出 建 立 <strong>Panel</strong> 程 序 包 镜 像 相 关 文 件 和 目 录 ):<br />

• _/<br />

根 据 <strong>Panel</strong> 版 本 命 名 多 个 子 目 录 。<br />

在 此 示 例 中 , 子 目 录 是 PPSMBE-WIN_/, 如 PPSMBE-WIN_10.0.0/<br />

每 个 子 目 录 包 含 下 列 文 件 :<br />

• dist----/<br />

包 括 <strong>Panel</strong> 分 发 程 序 包 或 设 计 模 板 ,<br />

如 dist-msi-Microsoft-2003-i386/<br />

• thirdparty----<br />

其 他 第 三 方 程 序 包<br />

• ppsmbe---.inf3<br />

<strong>Parallels</strong> 安 装 程 序 配 置 文 件<br />

• products.inf3<br />

<strong>Parallels</strong> 安 装 程 序 配 置 文 件 描 述 <strong>Panel</strong> 产 品<br />

• ppsmbe.inf3<br />

<strong>Parallels</strong> 安 装 程 序 配 置 文 件 描 述 <strong>Panel</strong> 版 本 和 其 他 组 件<br />

‣ 若 要 设 置 <strong>Panel</strong> 镜 像 :<br />

1 登 录 要 建 立 镜 像 的 服 务 器 。<br />

2 建 立 要 存 放 文 件 的 目 录 。 为 了 演 示 , 我 们 会 调 用 此 目 录<br />

destination_directory/。<br />

3 若 要 设 置 镜 像 , 执 行 下 列 命 令 。<br />

• 此 命 令 可 将 <strong>Parallels</strong> 更 新 库 上 的 PPSMBE-WIN_10.0.0/ 目 录 下 载 到<br />

destination_directory/。<br />

# rsync -au --delete<br />

rsync://rsync.autoinstall-win.parallels.com/autoinstall/PPSMBE-WIN<br />

_10.0.0 destination_directory<br />

• 此 命 令 可 下 载 <strong>Parallels</strong> 安 装 程 序 配 置 文 件 。<br />

# rsync -auv --delete<br />

rsync://rsync.autoinstall-win.parallels.com/'autoinstall/products.<br />

inf3 autoinstall/ppsmbe.inf3' destination_directory<br />

4 编 辑 <strong>Parallels</strong> 安 装 程 序 配 置 文 件 定 义 此 镜 像 支 持 的 产 品 、 版 本 和 平 台 。<br />

1. 编 辑 products.inf3 文 件 移 除 所 有 product 元 素 , 只 保 留 ID ppsmbe<br />

。 若 要 支 持 站 点 编 辑 器 的 其 他 站 点 设 计 模 板 设 置 , 也 略 过 ID 为<br />

setemplates 的 product 元 素 。


部 署 <strong>Panel</strong> 27<br />

2. 编 辑 ppsmbe.inf3 文 件 , 移 除 所 有 build 元 素 , 留 下 镜 像 支 持 的 操 作 系<br />

统 和 架 构 。<br />

注 意 : 如 需 有 关 Rsync 实 用 程 序 的 更 多 信 息 , 请 访 问 http://samba.anu.edu.au/rsync/。


第 4 章<br />

安 装 操 作 概 要<br />

本 章 简 要 阐 述 <strong>Parallels</strong> Small Business <strong>Panel</strong> 交 付 中 安 装 阶 段 的 操 作 。<br />

本 章 按 照 执 行 顺 序 分 别 介 绍 各 个 操 作 。<br />

本 章 内 容 :<br />

初 始 化 <strong>Panel</strong> ..................................................................................................... 29<br />

安 装 许 可 证 ........................................................................................................ 29<br />

定 义 <strong>Panel</strong> 徽 标 ................................................................................................. 30<br />

配 置 DNS .......................................................................................................... 31<br />

安 装 SSL 证 书 ................................................................................................... 32<br />

创 建 站 点 及 子 站 点 .............................................................................................. 33<br />

安 装 应 用 程 序 ..................................................................................................... 34<br />

定 义 可 用 的 APS 目 录 ........................................................................................ 36


安 装 操 作 概 要 29<br />

初 始 化 <strong>Panel</strong><br />

<strong>Panel</strong> 安 装 后 首 先 要 执 行 的 操 作 是 初 始 化 。 禁 止 在 <strong>Panel</strong> GUI 或 通 过 API 执 行 任 何 操 作 。<br />

初 始 化 配 置 下 列 <strong>Panel</strong> 设 置 :<br />

• 管 理 员 的 电 子 邮 件<br />

• 管 理 员 新 密 码 , 不 是 默 认 密 码<br />

• ( 可 选 ) <strong>Panel</strong> 语 言<br />

若 在 <strong>Panel</strong> 初 始 化 中 未 设 置 语 言 , 则 会 使 用 默 认 的 美 国 英 语 (en-US)。<br />

<strong>Panel</strong> 管 理 员 可 稍 后 更 改 界 面 语 言 ( 安 装 所 需 语 言 组 件 ( 第 11 页 ))。<br />

快 速 链 接<br />

使 用 远 程 API 安 装 <strong>Panel</strong> ( 第 68 页 )<br />

使 用 CLI 初 始 化 <strong>Panel</strong> ( 第 162 页 )<br />

安 装 许 可 证<br />

<strong>Panel</strong> 分 发 版 随 附 支 持 有 限 用 户 帐 户 的 默 认 许 可 证 。 您 需 获 取 并 安 装 满 足 用 户 需 求 的 许 可 证 。<br />

除 定 义 <strong>Panel</strong> 主 要 功 能 的 主 许 可 证 之 外 , 也 可 安 装 附 加 许 可 证 , 即 可 使 用 <strong>Panel</strong> 加 载 项 , 如<br />

Dr.Web 防 病 毒 解 决 方 案 。<br />

快 速 链 接<br />

使 用 远 程 API 安 装 许 可 证 ( 第 71 页 )<br />

使 用 CLI 安 装 许 可 证 ( 第 163 页 )


30 安 装 操 作 概 要<br />

定 义 <strong>Panel</strong> 徽 标<br />

<strong>Panel</strong> 交 付 范 围 内 的 <strong>Panel</strong> 商 标 信 息 :<br />

• <strong>Panel</strong> 徽 标 类 型 图 像 和 URL<br />

• 支 持 按 钮 链 接<br />

注 意 :CLI 中 支 持 两 者 。<br />

徽 标<br />

<strong>Panel</strong> 徽 标 类 型 显 示 在 <strong>Panel</strong> 左 上 角 。 默 认 是 141*29 像 素 的 GIF 图 像 ,<strong>Parallels</strong> Small<br />

Business <strong>Panel</strong> 产 品 徽 标 类 型 , 点 击 它 即 可 打 开 <strong>Parallels</strong> 网 站 。 可 更 改 默 认 徽 标 图 像 和 URL。<br />

支 持<br />

支 持 按 钮 位 于 <strong>Panel</strong> 管 理 员 可 以 使 用 的 设 置 选 项 卡 上 。 默 认 情 况 下 , 点 击 按 钮 即 可 打 开 <strong>Parallels</strong><br />

网 站 上 的 技 术 支 持 请 求 表 单 , 假 定 由 管 理 员 完 成 和 提 交 。<br />

若 要 向 客 户 提 供 技 术 支 持 , 单 击 支 持 按 钮 即 可 更 改 URL。<br />

快 速 链 接<br />

使 用 CLI 建 立 <strong>Panel</strong> 徽 标 ( 第 164 页 )


安 装 操 作 概 要 31<br />

配 置 DNS<br />

安 装 在 DNS 服 务 器 上 , 该 DNS 服 务 器 设 置 成 用 于 创 建 站 点 和 托 管 <strong>Panel</strong> 的 主<br />

控 域 名 服 务 器 。 配 置 <strong>Panel</strong> 时 , 即 可 停 用 DNS 服 务 , 或 按 照 需 求 进 行 配 置 。<br />

若 您 的 工 作 环 境 中 域 名 服 务 器 设 置 成 服 务 多 个 托 管 的 域 名 , 且 安 装 了 <strong>Panel</strong>, 则 无 需 独 立 的 DNS<br />

服 务 器 。 在 <strong>Parallels</strong> Containers 环 境 中 , 安 装 <strong>Panel</strong> 的 Container 中 ,DNS 服 务 器 运 行 需 消 耗<br />

稍 多 资 源 , 即 可 降 低 主 机 环 境 的 密 度 。<br />

若 要 让 <strong>Panel</strong> 管 理 的 站 点 DNS 区 域 由 远 程 DNS 服 务 器 服 务 , 配 置 <strong>Panel</strong> 实 例 时 停 用 DNS 服<br />

务 。 客 户 若 确 定 站 点 由 本 地 DNS 服 务 器 支 持 , 也 可 稍 后 启 用 。<br />

若 要 让 <strong>Panel</strong> 管 理 的 站 点 由 本 地 DNS 服 务 支 持 , 则 可 通 过 合 适 方 式 修 改 DNS 区 域 。<br />

<strong>Panel</strong> 提 供 可 自 定 义 的 DNS 区 域 模 板 , 包 含 DNS SOA 模 板 和 其 他 资 源 记 录 。 创 建 站 点 帐 户 时 ,<br />

基 于 此 模 板 创 建 其 DNS 区 域 。 若 要 设 置 <strong>Panel</strong> 管 理 站 点 的 DNS 区 域 , 只 需 编 辑 DNS 区 域 模<br />

板 。<br />

快 速 链 接<br />

使 用 远 程 API 配 置 DNS ( 第 77 页 )<br />

使 用 CLI 配 置 DNS ( 第 165 页 )<br />

更 改 SOA 记 录 模 板<br />

SOA 记 录 的 <strong>Panel</strong> 模 板 允 许 更 改 下 列 记 录 字 段 :<br />

• ttl ( 生 效 时 间 )<br />

• 刷 新<br />

• 重 试<br />

• 过 期<br />

• 最 小<br />

• ( 仅 限 Unix CLI) sn (= 序 列 号 ) 格 式<br />

区 域 序 列 号 格 式 :yyyymmdd 或 Unix 时 间 戳


32 安 装 操 作 概 要<br />

设 置 资 源 记 录 模 板<br />

DNS 区 域 的 <strong>Panel</strong> 模 板 支 持 下 列 资 源 记 录 类 型 :<br />

• A<br />

• NS<br />

• CNAME<br />

• MX<br />

• PTR<br />

• TXT<br />

• AXFR<br />

• SRV<br />

安 装 SSL 证 书<br />

在 站 点 上 使 用 安 全 套 接 字 层 协 议 需 先 安 装 SSL 证 书 。<br />

在 <strong>Panel</strong> 中 ,SSL 证 书 通 过 IP 地 址 连 接 到 站 点 : 证 书 分 配 到 IP 地 址 , 访 问 该 IP 托 管 的 站 点 时<br />

会 用 到 此 证 书 。 实 际 上 , 通 过 https 访 问 该 IP 上 托 管 的 站 点 时 会 用 到 此 证 书 。<br />

安 装 SSL 证 书 意 味 着 将 证 书 导 入 到 <strong>Panel</strong> 并 分 配 IP 地 址 给 它 。 若 在 此 类 IP 上 创 建 站 点 帐 户 ,<br />

则 会 自 动 启 用 "SSL 支 持 ", 安 装 的 证 书 用 于 访 问 站 点 。<br />

快 速 链 接<br />

使 用 远 程 API 安 装 SSL 证 书 ( 第 99 页 )<br />

使 用 CLI 安 装 SSL 证 书 ( 第 170 页 )


安 装 操 作 概 要 33<br />

创 建 站 点 及 子 站 点<br />

站 点<br />

<strong>Parallels</strong> Small Business <strong>Panel</strong> 中 新 型 的 站 点 和 子 站 点 创 建 与 配 置 流 程 简 单 且 轻 松 。 创 建 站 点<br />

或 子 站 点 时 , 请 指 定 最 基 本 的 主 机 参 数 , 其 他 主 机 设 置 会 自 动 完 成 。<br />

因 此 , 若 要 创 建 站 点 , 请 指 定 下 列 函 数 :<br />

• 域 名<br />

• IP 地 址<br />

若 IP 地 址 与 SSL 证 书 关 联 ( 第 32 页 ), 则 会 自 动 启 用 使 用 此 IP 创 建 站 点 的 SSL 支 持 。<br />

• 要 求 的 虚 拟 主 机 属 性 : 用 来 上 传 网 站 内 容 的 FTP 帐 户 登 录 名 和 密 码 。<br />

在 站 点 上 安 装 Web 应 用 程 序 时 ,<strong>Panel</strong> 会 自 动 设 置 应 用 程 序 所 需 的 所 有 服 务 。 因 此 必 须 在<br />

站 点 创 建 过 程 中 指 定 IP 地 址 、FTP 登 录 名 和 密 码 。<br />

快 速 链 接<br />

使 用 远 程 API 创 建 站 点 ( 第 105 页 )<br />

使 用 CLI 创 建 站 点 ( 第 172 页 )<br />

子 站 点<br />

创 建 子 站 点 时 , 至 少 要 指 定 子 站 点 和 主 站 点 的 前 缀 名 。<br />

子 站 点 内 容 通 常 位 于 站 点 虚 拟 主 机 的 /httpdocs/subdomains/subdomain-name 目 录 中 。<br />

Windows 版 <strong>Panel</strong> 支 持 子 文 件 夹 中 的 子 站 点 - 子 站 点 映 射 到 /httpdocs 文 件 夹 中 的 任 何 目 录<br />

。 若 要 让 安 装 的 Web 应 用 程 序 可 作 为 子 站 点 访 问 , 此 站 点 会 很 有 用 。 如 ,WordPress 应 用 程<br />

序 可 通 过 类 似 http://domain-name/URL-prefix 的 URL 访 问 , 也 就 是<br />

http://example.com/WordPress。 若 有 子 站 点 在 子 文 件 夹 中 , 则 可 通 过<br />

http://blog.example.com 访 问 。<br />

• 若 要 创 建 常 规 子 站 点 , 指 定 主 站 点 名 、 子 站 点 名 和 子 站 点 主 机 属 性 。<br />

注 意 : 默 认 情 况 下 , 通 过 主 站 点 的 同 一 FTP 帐 户 即 可 访 问 子 站 点 内 容 。 因 此 , 指 定 FTP 帐<br />

户 属 性 是 可 选 项 , 仅 当 需 要 访 问 子 站 点 内 容 的 FTP 帐 户 时 才 需 要 指 定 。<br />

• 若 要 在 子 文 件 夹 中 创 建 子 站 点 ( 仅 有 Windows 支 持 ), 指 定 主 站 点 名 / 子 站 点 名 , 以 及 要 创 建<br />

子 站 点 的 文 件 夹 路 径 。<br />

注 意 : 对 于 子 文 件 夹 的 子 站 点 , 无 法 创 建 独 立 的 FTP 用 户 帐 户 : 会 用 户 主 站 点 / 子 站 点 的 FTP<br />

用 户 帐 户 。


34 安 装 操 作 概 要<br />

快 速 链 接<br />

使 用 远 程 API 创 建 子 站 点 ( 第 110 页 )<br />

使 用 CLI 创 建 子 站 点 ( 第 172 页 )<br />

安 装 应 用 程 序<br />

<strong>Parallels</strong> Small Business <strong>Panel</strong> 支 持 APS 应 用 程 序 。 这 些 是 按 APS - 应 用 程 序 交 付 标 准<br />

(http://www.apsstandard.org/) 打 包 的 Web 应 用 程 序 , 将 SaaS 模 式 推 向 主 机 页 。<br />

术 语 应 用 程 序 包 - 以 APS 格 式 打 包 的 Web 应 用 程 序 zip 存 档 。 与 应 用 程 序 不 同 , 它 从 程 序 包<br />

直 接 安 装 。<br />

在 站 点 或 子 站 点 上 安 装 应 用 程 序 分 两 步 完 成 :<br />

1 获 取 应 用 程 序 包 , 并 导 入 <strong>Panel</strong>。<br />

2 在 站 点 或 子 站 点 上 从 程 序 包 安 装 应 用 程 序 。<br />

快 速 链 接<br />

使 用 远 程 API 安 装 应 用 程 序 ( 第 117 页 )<br />

使 用 远 程 CLI 安 装 应 用 程 序 ( 第 175 页 )<br />

导 入 应 用 程 序 包<br />

有 两 种 方 法 可 获 取 并 导 入 应 用 程 序 包 :<br />

• 通 常 是 自 行 创 建 的 程 序 包 , 手 动 上 传 到 安 装 <strong>Panel</strong> 的 主 机 上 , 并 手 动 导 入 到 <strong>Panel</strong>。<br />

下 载 程 序 包 , 并 自 动 从 APS 目 录 导 入 到 <strong>Panel</strong> ( 提 供 应 用 程 序 包 远 程 存 储 的 网 络 服 务 )。 即<br />

可 一 次 性 下 载 并 导 入 多 个 应 用 程 序 ,<strong>Panel</strong> 支 持 下 载 状 态 追 踪 。<br />

<strong>Panel</strong> 支 持 从 多 个 APS 目 录 实 例 获 取 应 用 程 序 包 。 可 用 的 APS 目 录 在 APS 目 录 配 置 文 件 ( 第 36<br />

页 ) 中 有 定 义 , 可 自 定 义 来 满 足 特 定 主 机 环 境 中 的 <strong>Panel</strong> 示 例 需 要 。


安 装 操 作 概 要 35<br />

安 装 应 用 程 序<br />

安 装 应 用 程 序 后 , 请 指 定 下 列 内 容 :<br />

• 安 装 应 用 程 序 的 应 用 程 序 包 位 置 。<br />

按 名 称 - 版 本 - 发 行 号 信 息 或 程 序 包 ID 分 类 。 检 索 可 用 程 序 包 即 可 获 得 这 些 数 据 。 在 详 细 应 用<br />

程 序 包 列 表 中 检 索 到 可 用 程 序 包 结 果 导 入 到 <strong>Panel</strong>, 包 括 所 需 标 识 符 。<br />

• 目 标 站 点 或 子 站 点 。<br />

• 安 装 属 性 。<br />

这 些 是 特 定 应 用 程 序 , 也 可 以 是 没 有 任 何 安 装 属 性 或 设 置 的 应 用 程 序 。<strong>Panel</strong> API 不 支 持 应<br />

用 程 序 设 置 信 息 的 获 取 , 请 使 用 APS 目 录 API<br />

(http://www.apsstandard.org/r/doc/aps-catalog-1.1-api/index.htm) 或 分 析 程 序 包 元 数 据 文<br />

件 来 获 取 。 如 需 有 关 APS 格 式 技 术 规 格 中 的 APS 格 式 的 更 多 信 息 , 请 访 问<br />

http://www.apsstandard.org/providers/documentation/。


36 安 装 操 作 概 要<br />

定 义 可 用 的 APS 目 录<br />

列 出 配 置 文 件 中 定 义 的 APS 目 录 , 可 用 于 :<br />

1 通 过 <strong>Panel</strong> API 直 接 从 这 些 目 录 将 应 用 程 序 安 装 到 站 点 上 。<br />

注 意 : 从 APS 目 录 安 装 应 用 程 序 不 可 能 没 有 列 出 在 配 置 文 件 中 。<br />

2 <strong>Panel</strong> 用 户 可 以 从 应 用 程 序 & 脚 本 屏 幕 看 到 这 些 目 录 , 用 户 可 以 自 行 安 装 应 用 程 序 。<br />

APS 目 录 由 服 务 生 成 名 称 , 格 式 如 下 :<br />

• APS 目 录 位 于 apscatalog.com (http://apscatalog.com)。<strong>Parallels</strong> 正 式 支 持 APS 目 录 服 务<br />

。<br />

• 自 定 义 APS 目 录 , 服 务 的 本 地 镜 像 部 署 到 主 机 环 境 中 , 并 提 供 特 定 应 用 程 序 的 访 问 。<br />

如 需 有 关 如 何 实 施 APS 目 录 本 地 镜 像 的 信 息 , 请 参 阅 APS 标 准 官 方 网 站 文 档<br />

http://www.apsstandard.org/providers/documentation/。<br />

下 列 情 况 下 , 需 定 义 APS 目 录 :<br />

a 配 置 <strong>Panel</strong> 时 , 您 可 能 需 要 从 自 定 义 的 APS 目 录 安 装 应 用 程 序 。<br />

在 此 情 况 下 , 需 添 加 目 录 项 目 到 配 置 文 件 中 。<br />

b 您 可 能 需 <strong>Panel</strong> 用 户 访 问 自 定 义 APS 目 录 , 而 不 是 <strong>Panel</strong> 默 认 提 供 的 项 目 。<br />

在 此 情 况 下 , 需 添 加 目 录 项 目 到 配 置 文 件 中 , 可 以 移 除 现 有 项 目 。<br />

c 您 可 能 不 希 望 <strong>Panel</strong> 用 户 访 问 任 何 APS 目 录 。<br />

在 此 情 况 下 , 需 从 配 置 文 件 中 移 除 所 有 项 目 。<br />

若 要 更 改 可 用 APS 目 录 列 表 , 请 执 行 下 列 操 作 :<br />

1 按 需 要 修 改 APS 目 录 样 本 ( 第 37 页 )。<br />

2 导 入 配 置 文 件 到 <strong>Panel</strong> 中 。<br />

快 速 链 接<br />

使 用 远 程 API 定 义 可 用 的 APS 目 录 ( 第 115 页 )<br />

使 用 CLI 定 义 可 用 的 APS 目 录 ( 第 174 页 )


安 装 操 作 概 要 37<br />

APS 目 录 配 置 文 件<br />

APS 目 录 配 置 文 件 是 格 式 如 下 的 配 置 文 件 :<br />

[apscatalog]<br />

; 作 为 内 部 标 识 符 服 务 APS 应 用 程 序 资 源 的 关 键 字 。<br />

type = apscatalog<br />

;APS 应 用 程 序 资 源 类 型 定 义 , 可 以 是 商 城 或 apscatalog<br />

; 商 城 是 用 于 表 示 应 用 程 序 商 城 服 务 的 类 型<br />

;apscatalog 是 可 用 于 任 何 APS 目 录 的 一 般 类 型 ( 正 式 APS 目 录 服 务 和 本 地 镜 像 )<br />

url = http://apscatalog.com<br />

;APS 应 用 程 序 资 源 URL<br />

[marketplace]<br />

type = marketplace<br />

url = http://catalog.marketplace.parallels.com<br />

protocol = all-app<br />

[APSCatalogLocalMirror]<br />

type = apscatalog<br />

name.en-US = "APS Catalog (local)"<br />

;APS 应 用 程 序 资 源 标 题 会 显 示 在 相 应 语 言 的 <strong>Panel</strong> GUI 中<br />

description.en-US = "Local instance of APS catalog"<br />

;APS 应 用 程 序 资 源 描 述 会 显 示 在 相 应 语 言 的 <strong>Panel</strong> GUI 中<br />

url = apscatalog.example.com<br />

若 要 更 改 <strong>Panel</strong> 用 户 可 用 的 APS 目 录 , 编 辑 配 置 文 件 并 导 入 到 <strong>Panel</strong>。


第 5 章<br />

通 过 远 程 API 设 置<br />

本 章 阐 述 如 何 通 过 <strong>Panel</strong> 的 远 程 API 设 置 <strong>Panel</strong>。<br />

使 用 远 程 API 章 节 ( 第 39 页 ) 包 括 API RPC 协 议 概 要 和 用 于 通 过 协 议 与 <strong>Panel</strong> 管 理 的 服<br />

务 器 通 讯 的 工 具 样 本 。<br />

设 置 <strong>Panel</strong> 章 节 ( 第 68 页 ) 描 述 第 三 方 工 具 应 执 行 <strong>Panel</strong> 设 置 操 作 的 请 求 信 息 详 情 , 以 及<br />

从 每 个 操 作 返 回 的 响 应 信 息 。<br />

本 章 内 容 :<br />

使 用 远 程 API ..................................................................................................... 39<br />

设 置 <strong>Panel</strong> ......................................................................................................... 68


通 过 远 程 API 设 置 39<br />

使 用 远 程 API<br />

本 章 阐 述 <strong>Panel</strong> 远 程 API 的 定 义 、 操 作 , 以 及 如 何 创 建 通 过 远 程 API 与 <strong>Panel</strong> 通 讯 的 客 户 端 应<br />

用 程 序 。<br />

关 于 远 程 API<br />

若 要 支 持 <strong>Panel</strong> 与 第 三 方 软 件 之 间 的 通 讯 ,<strong>Panel</strong> 提 供 基 于 XML 的 API。 此 界 面 包 括 管 理 <strong>Panel</strong><br />

逻 辑 对 象 的 功 能 设 置 。API RPC 协 议 可 以 远 程 调 用 API 功 能 。 此 XML-over-HTTP 协 议 通 过 指<br />

定 格 式 的 数 据 包 交 换 数 据 。<br />

<strong>Panel</strong> 与 第 三 方 软 件 之 间 的 互 动 基 于 客 户 端 服 务 器 编 程 模 式 。<br />

表 1: <strong>Parallels</strong> <strong>Panel</strong> 与 第 三 方 客 户 软 件 之 间 的 通 讯<br />

服 务 器 部 分 由 <strong>Panel</strong> API RPC 服 务 器 代 表 ( 以 下 称 为 此 服 务 器 ),<strong>Panel</strong> 的 一 部 分 。 客 户 端 软<br />

件 应 由 第 三 方 创 建 。 通 讯 场 景 如 下 :<br />

1 客 户 端 应 用 程 序 组 成 了 基 于 XML 的 请 求 数 据 包 ( 以 下 称 为 API RPC 数 据 包 或 此 数 据 包 ),<br />

添 加 标 准 HTTP 标 头 , 并 发 送 给 服 务 器 。<br />

2 服 务 器 接 收 数 据 包 , 验 证 数 据 包 , 并 调 用 内 容 <strong>Panel</strong> 功 能 执 行 所 需 操 作 。<br />

3 服 务 器 发 回 响 应 数 据 包 , 包 括 所 执 行 操 作 的 详 细 信 息 。<br />

4 客 户 接 收 到 结 果 数 据 包 ( 操 作 状 态 、 可 能 的 错 误 信 息 或 操 作 参 数 ) 并 检 索 信 息 。<br />

通 讯 终 止 。<br />

支 持 的 API 版 本<br />

当 前 版 <strong>Panel</strong> 仅 支 持 1.6.2.0 版 API RPC 协 议 。


40 通 过 远 程 API 设 置<br />

API RPC 数 据 包<br />

API RPC 数 据 包 是 包 含 在 HTTP 邮 件 正 文 中 的 简 易 XML 文 件 。<br />

区 别 下 面 两 种 数 据 包 :<br />

• 申 请 数 据 包 - 客 户 端 软 件 通 过 远 程 API 发 送 给 服 务 器<br />

• 响 应 数 据 包 - 服 务 器 发 给 客 户<br />

数 据 包 结 构<br />

响 应 数 据 包 包 含 所 请 求 操 作 的 执 行 状 态 , 若 操 作 失 败 , 还 会 包 含 错 误 信 息 。<br />

区 分 下 列 两 个 API RPC 数 据 包 组 件 :<br />

1 HTTP 标 头 - 传 送 部 分 。 除 标 准 信 息 之 外 , 还 需 包 含 要 在 其 中 执 行 操 作 的 服 务 器 数 据 , 以 及<br />

<strong>Panel</strong> 管 理 员 凭 据 。<br />

2 数 据 包 标 头 指 定 API RPC 协 议 版 本 。<br />

3 数 据 包 内 容 定 义 服 务 器 要 执 行 的 操 作 。<br />

数 据 包 内 容 结 构 如 下 :<br />

<br />

<br />

…<br />

...<br />

…<br />

…<br />

<br />

<br />

本 示 例 展 示 数 据 包 内 容 的 基 本 结 构 , 内 含 一 个 [operator] 元 素 和 一 个 [operation] 元 素 。 在 特<br />

定 实 施 中 , 标 签 [operator]、[operation]、[parameter] 会 被 真 正 的 运 算 子 、 操 作 和 参 数 替 换 。<br />

注 意 : 一 个 运 算 子 中 有 多 个 操 作 区 , 多 个 操 作 区 位 于 一 个 数 据 包 中 。<br />

一 下 ,XML 数 据 包 标 题 和 内 容 统 称 为 数 据 包 。


通 过 远 程 API 设 置 41<br />

数 据 包 实 例<br />

此 为 发 送 给 服 务 器 的 申 请 API RPC 消 息 :<br />

POST<br />

/enterprise/control/agent.php<br />

HTTP/1.1<br />

主 机 :10.58.83.1:8443<br />

接 受 :*/*<br />

HTTP_AUTH_LOGIN:admin<br />

HTTP_AUTH_PASSWD: 设 置<br />

Pragma:no-cache<br />

Content-Length:1398<br />

Content-Type:text/xml<br />

<br />

<br />

HTTP 标 头<br />

HTTP 标 头 表 示 在 POST 中 使 用 HTTP 方 式 , 处 理 代 理<br />

位 于 /enterprise/control/agent.php, ,TTP<br />

版 本 是 1.1。 主 机 元 素 指 消 息 相 关 的 <strong>Panel</strong> 服 务 器 IP 地<br />

址 和 端 口 。HTTP_AUTH_LOGIN 和<br />

HTTP_AUTH_PASSWD 元 素 是 <strong>Panel</strong> 管 理 员 凭 证 。<br />

Content-Type 必 须 是 "text/xml"。 消 息 长 度 也 有 限 制<br />

。<br />

XML 部 分 开 头<br />

数 据 包 标 题<br />

版 本 属 性 指 定 <strong>Panel</strong> API RPC 协 议 所 需 的 版 本 。<br />

<br />

<br />

P4$$w0rd<br />

johndoe@example.com<br />

de-DE<br />

<br />

<br />

<br />

数 据 包 内 容<br />

从 相 关 运 算 子 标 签 开 始 。<br />

特 定 数 据 包 使 用 smb 运 算 子 来 初 始 化 新 近 安 装 的 <strong>Panel</strong><br />

软 件 。initial_setup 节 点 上 的 元 素 包 括 初 始 化 <strong>Panel</strong> 所 需<br />

的 数 据 :<strong>Panel</strong> 管 理 员 的 邮 件 和 密 码 , 以 及 面 板 语 言 。<br />

关 闭 数 据 包 的 追 踪 标 签<br />

请 求 数 据 包 和 响 应 数 据 包 结 构 类 似 , 但 它 们 的 HTTP 标 头 和 内 容 不 同 。 服 务 器 响 应 请 求 发 出 的<br />

消 息 类 似 :<br />

HTTP/1.1 200 OK<br />

Transfer-Encoding:chunked<br />

Content-type:text/html<br />

日 期 :Fri, 03 Apr 2009 18:54:56 GMT<br />

服 务 器 :sw-cp-server/1.0.0<br />

<br />

HTTP 服 务 器 响 应 标 准 标 头<br />

MIME 类 型 是 text/xml。 服 务 器 元 素 显 示 服 务 器 上 <strong>Panel</strong><br />

处 理 的 请 求 。<br />

有 效 XML 文 件 标 准 标 头


42 通 过 远 程 API 设 置<br />

<br />

<br />

<br />

<br />

ok<br />

<br />

<br />

<br />

<br />

XML 数 据 包 标 头<br />

数 据 包 内 容<br />

数 据 包 内 容 的 根 节 点 是 smb 运 算 子 。<br />

下 列 行 表 示 <strong>Panel</strong> 初 始 化 成 功 。<br />

关 闭 数 据 包 的 追 踪 标 签<br />

数 据 包 验 证<br />

<strong>Panel</strong> API RPC 服 务 器 处 理 成 代 理 设 置 - 或 运 算 子 - 由 代 理 工 具 管 理 。 每 个 代 理 的 逻 辑 区 处 理<br />

特 定 数 量 的 命 令 , 代 理 工 具 作 为 数 据 包 分 离 器 工 作 。<br />

此 外 , 代 理 工 具 与 多 个 XML 计 划 文 件 设 置 相 关 。 每 个 设 置 与 特 定 的 API RPC 版 本 相 关 。 每 个<br />

版 本 的 进 入 点 在 agent_input.xsd 文 件 中 包 含 同 一 版 本 的 所 有 输 入 计 划 参 考 。<br />

<strong>Panel</strong> API RPC 服 务 器 功 能 如 下 : 首 个 XML 数 据 包 , 其 HTTP 标 题 删 除 , 转 到 代 理 工 具 。 代 理<br />

工 具 从 数 据 包 标 头 检 索 API RPC 版 本 , 选 择 合 适 的 XML 模 板 , 并 切 换 到 正 确 的<br />

agent_input.xsd 模 板 。 使 用 正 确 的 数 据 包 的 运 算 子 级 别 , 此 模 板 验 证 数 据 包 的 运 算 子 级 别 。<br />

表 2: 服 务 器 验 证 数 据 包<br />

若 数 据 包 被 视 为 无 效 , 代 理 工 具 将 错 误 报 告 发 送 给 客 户 。 若 数 据 包 的 所 有 元 素 验 证 成 功 , 代 理<br />

工 具 检 查 是 否 所 有 的 代 理 模 块 需 要 进 一 步 处 理 , 并 按 顺 序 调 用 。<br />

调 用 的 每 个 代 理 ( 运 算 子 ) 接 收 到 运 算 子 数 据 包 部 分 , 解 析 并 调 用 内 部 功 能 , 并 将 命 令 执 行 结 果 返<br />

回 到 代 理 工 具 。


通 过 远 程 API 设 置 43<br />

创 建 客 户 软 件<br />

客 户 应 用 程 序 应 实 施 下 列 数 据 交 换 :<br />

• 转 换 请 求 的 命 令 到 API RPC XML 数 据 包<br />

• 准 备 通 过 HTTP 交 付 数 据 包 , 并 发 送 给 <strong>Panel</strong><br />

• 从 <strong>Panel</strong> 接 收 响 应 , 并 从 数 据 包 获 取 结 果 信 息<br />

表 3: 客 户 端 应 用 程 序 结 构<br />

上 图 显 示 客 户 应 用 程 序 结 构 , 以 及 此 结 构 如 何 处 理 数 据 。 样 本 应 用 程 序 的 每 个 模 块 处 理 特 定 任<br />

务 :<br />

1 XML 数 据 包 创 建 器 从 应 用 程 序 GUI 或 第 三 方 模 块 接 受 命 令 。XML 数 据 包 创 建 器 包 含 每 个 已<br />

知 命 令 的 XML 命 令 转 换 器 。 最 终 XML 数 据 包 格 式 与 客 户 应 用 程 序 支 持 的 API RPC 版 本 完<br />

全 兹 容 。<br />

2 HTTP 数 据 包 发 送 器 接 受 XML 数 据 包 。 此 数 据 包 不 包 含 目 标 服 务 器 相 关 的 任 何 信 息 和 访 问<br />

详 情 , 因 此 HTTP 数 据 包 发 送 者 可 以 存 放 这 些 设 置 , 或 按 需 要 取 用 。HTTP 数 据 包 发 送 器 在<br />

<strong>Panel</strong> 用 户 登 录 凭 据 中 加 入 HTTP 标 题 , 并 通 过 API RPC 协 议 将 数 据 包 发 送 给 <strong>Panel</strong> API<br />

RPC 服 务 器 。<br />

3 HTTP 数 据 包 接 收 器 从 服 务 器 获 取 最 终 HTTP 数 据 包 , 删 除 HTTP 标 题 , 并 移 动 XML 响 应<br />

到 XML 数 据 包 解 析 器 。<br />

4 XML 数 据 包 解 析 器 分 析 响 应 XML 数 据 包 的 执 行 状 态 , 若 结 果 为 负 则 会 生 成 错 误 消 息 。 然 后<br />

将 提 取 和 处 理 的 数 据 返 回 给 GUI 或 调 用 模 块 。<br />

上 图 显 示 HTTP 操 作 部 分 的 HTTP 库 。 这 些 操 作 可 从 头 进 行 , 较 快 的 方 法 是 使 用 就 绪 并 经 过 测<br />

试 的 HTTP 库 。 分 开 HTTP 发 送 器 和 HTTP 接 收 器 是 有 条 件 的 : 仅 当 需 要 分 开 发 送 和 接 收 HTTP<br />

图 形 操 作 时 才 执 行 此 操 作 。


44 通 过 远 程 API 设 置<br />

创 建 申 请 数 据 包<br />

请 求 API RPC 数 据 包 , 客 户 从 GUI 或 软 件 模 块 获 取 命 令 对 一 或 多 个 <strong>Panel</strong> 对 象 执 行 操 作 。 此<br />

应 用 程 序 会 将 请 求 的 命 令 转 换 成 与 <strong>Panel</strong> XML API 兹 容 的 XML 数 据 包 格 式 。<br />

若 要 实 施 XML 数 据 包 转 换 器 命 令 , 了 解 API RPC 架 构 , 以 及 如 何 通 过 <strong>Panel</strong> 服 务 器 处 理 ( 第 40<br />

页 )。<br />

若 要 添 加 创 建 的 请 求 数 据 包 验 证 到 转 换 器 , 从 <strong>Panel</strong> 安 装 即 使 用 XML 模 板 文 件 设 置 :<br />

PRODUCT_ROOT_D/admin/htdocs/schemas/rpc/1.6.2.0 - Linux/Unix 其 中<br />

PRODUCT_ROOT_D 定 义 <strong>Panel</strong> 安 装 目 录 。<br />

%plesk_dir%\admin\htdocs\schemas\rpc\1.6.2.0 - Windows 其 中 %plesk_dir%<br />

定 义 <strong>Panel</strong> 安 装 目 录 。 确 定 使 用 agent_input.xsd 作 为 验 证 输 入 点 。


通 过 远 程 API 设 置 45<br />

发 送 请 求 信 息<br />

<strong>Panel</strong> API RPC 数 据 包 就 绪 后 , 应 删 除 HTTP 标 头 , 并 发 送 到 指 定 服 务 器 。 若 要 执 行 这 些 任 务 ,<br />

建 议 使 用 HTTP/FTP 客 户 库 。 本 章 阐 述 如 何 使 用 CURL 在 PHP 中 完 成 此 操 作 - PHP 4.0.2 或<br />

更 高 版 本 支 持 的 免 费 、 开 源 客 户 端 URL 传 输 库 。<br />

若 要 建 立 HTTP 标 题 ,CURL 工 具 需 要 下 列 参 数 :<br />

• 目 标 服 务 器 URL 格 式 如 下 :<br />

定 义 (‘HOST’, ’10.58.97.81’);<br />

定 义 (‘PORT’, 8443);<br />

定 义 (‘PATH’, ’enterprise/control/agent.php’);<br />

…<br />

$url = ‘https://’ .HOST .‘:’ . PORT .‘/’ . PATH;<br />

• 标 题 元 素 队 列 如 下 :<br />

$headers = array(<br />

‘HTTP_AUTH_LOGIN:admin’,<br />

‘HTTP_AUTH_PASSWD:setup’,<br />

‘Content-Type:text/xml’<br />

);<br />

然 后 CURL 工 具 初 始 化 , 并 设 置 使 用 HTTPS, 并 传 送 来 所 需 的 HTTP 标 头 :<br />

// initialize the curl engine<br />

$ch = curl_init();<br />

// set the curl options:<br />

// do not check the name of SSL certificate of the remote server curl_setopt($ch,<br />

CURLOPT_SSL_VERIFYHOST, 0);<br />

// do not check up the remote server certificate curl_setopt($ch,<br />

CURLOPT_SSL_VERIFYPEER, false);<br />

// pass in the header elements curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);<br />

// pass in the url of the target server<br />

curl_setopt($ch, CURLOPT_URL, $url);<br />

CURL 工 具 所 需 的 另 一 个 参 数 是 <strong>Panel</strong> API RPC 数 据 包 。 数 据 包 示 例 如 下 :<br />

$packet =


46 通 过 远 程 API 设 置<br />

现 在 示 意 CURL 工 具 从 服 务 器 接 收 请 求 , 接 受 要 交 付 的 数 据 包 , 开 始 迁 移 :<br />

// 示 意 CURL 返 回 结 果 , 而 不 是 加 载 结 果 到 浏 览 器 中<br />

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br />

// 接 受 要 交 付 的 数 据 包<br />

curl_setopt($ch, CURLOPT_POSTFIELDS, $packet);<br />

// 执 行 CURL 请 求 并 返 回 结 果<br />

$retval = curl_exec($ch);<br />

// 关 闭 CURL 会 话<br />

curl_close($ch);<br />

执 行 请 求 后 ,CURL 在 客 户 端 获 取 最 终 HTTP 数 据 包 , 删 除 HTTP 标 头 ,$retval 参 数 获 取 ’<br />

响 应 ’ 数 据 包 的 XML 部 分 。


通 过 远 程 API 设 置 47<br />

解 析 响 应<br />

您 可 以 使 用 任 一 HTTP/FTP 客 户 库 传 输 请 求 到 <strong>Panel</strong>, 并 获 取 结 果 。 多 数 情 况 下 , 最 终 HTTP<br />

数 据 包 结 构 , 参 阅 数 据 包 结 构 章 节 ( 第 40 页 )。 若 使 用 CURL 工 具 , 返 回 的 最 终 结 果 是 纯 XML<br />

格 式 。<br />

<strong>Panel</strong> API RPC 服 务 器 返 回 的 纯 XML 数 据 包 由 XML 模 板 定 义 。<br />

数 据 包 是 每 个 响 应 XML 数 据 包 的 根 节 点 , 版 本 属 性 返 回 服 务 器 上 运 行 的 <strong>Panel</strong> API RPC 协 议<br />

版 本 。<br />

特 定 运 算 子 包 含 数 据 包 响 应 , 或 返 回 的 系 统 <strong>Panel</strong> 应 用 程 序 错 误 。<br />

有 关 系 统 和 输 出 节 点 方 式 相 关 信 息 , 参 阅 处 理 错 误 章 节 ( 第 49 页 )。<br />

若 要 了 解 响 应 结 构 , 则 需 agent_output.xsd 模 板 。 此 模 板 列 举 指 定 API RPC 版 本 支 持 的 所<br />

有 运 算 子 响 应 数 据 类 型 , 说 明 符 合 这 些 操 作 的 输 出 模 板 。<br />

响 应 数 据 包 的 每 个 [operator] 元 素 中 , 典 型 的 响 应 数 据 类 型 包 含 一 或 多 个 结 果 元 素 。 此 元 素 由<br />

复 杂 类 型 表 示 , 通 常 包 含 common.xsd 模 板 中 定 义 的 类 型 resultType:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

结 果 元 素 也 包 含 可 选 元 素 , 若 在 复 杂 类 型 中 定 义 。<br />

一 般 ,<strong>Panel</strong> API RPC 服 务 器 返 回 的 数 据 包 格 式 类 似 于 :


48 通 过 远 程 API 设 置<br />

<br />

<br />

<br />

<br />

<br />

...<br />

<br />

[<br />

<br />

...<br />

<br />

...<br />

<br />

...<br />

<br />

]<br />

<br />

<br />

<br />

此 处 [operator] 指 请 求 数 据 包 中 所 用 的 运 算 子 ,[operation] 指 执 行 的 操 作 。RESULT 元 素 总<br />

是 用 于 隔 开 请 求 信 息 和 操 作 执 行 状 态 。RESULT 部 分 包 含 表 示 操 作 执 行 状 态 的 STATUS 元 素 。<br />

注 意 : 若 多 个 操 作 请 求 一 个 输 入 数 据 包 , 真 实 响 应 XML 程 序 包 在 一 个 运 算 子 中 包 含 多 个 操 作 ;<br />

若 多 个 面 板 对 象 需 要 多 个 输 入 数 据 包 , 响 应 数 据 包 可 以 包 含 多 个 运 算 子 区 域 。


通 过 远 程 API 设 置 49<br />

处 理 错 误<br />

服 务 器 报 告 两 类 客 户 软 件 错 误 , 检 查 错 误 和 执 行 错 误 ( 若 执 行 请 求 的 操 作 )。<br />

若 出 现 错 误 ,<strong>Panel</strong> 管 理 的 服 务 器 返 回 的 描 述 包 含 下 列 参 数 :<br />

• 状 态 带 值 " 错 误 "<br />

• 错 误 码 – 错 误 码 , 识 别 错 误 的 唯 一 数 字<br />

• 错 误 文 本 – 错 误 文 本 , 错 误 的 文 字 描 述<br />

common.xsd 模 板 中 的 类 型 resultType 或 按 错 误 类 型 定 义 错 误 描 述 ( 取 决 于 运 算 子 )。<br />

检 查 错 误<br />

确 定 有 效 并 执 行 之 前 , 传 入 在 服 务 器 上 经 过 多 次 检 查 的 HTTP 数 据 包 。 检 查 包 括 :<br />

• HTTP-POST 标 头 检 查<br />

• 检 查 指 定 的 API RPC 协 议 版 本 是 否 受 支 持<br />

• 检 查 受 权 方 式 ( 登 录 凭 据 或 密 钥 )<br />

• 检 查 用 户 的 ‘remote_access_interface’ 权 限 状 态<br />

• ...<br />

• 检 查 数 据 包 是 否 有 效<br />

• 检 查 当 前 版 <strong>Panel</strong> 中 的 所 需 代 理 是 否 可 用<br />

检 查 若 失 败 , 则 无 法 进 一 步 检 查 或 执 行 命 令 。 若 服 务 器 在 任 一 检 查 步 骤 停 止 ( 如 尚 未 执 行 所 需<br />

操 作 ), 响 应 数 据 包 由 下 列 元 素 组 成 :<br />

• 系 统 包 含 错 误 描 述 ; 由 common.xsd 模 板 中 的 类 型 resultType 定 义<br />

• 输 出 , 包 含 错 误 组 件 标 准 错 误 信 息 的 可 选 元 素 ( 若 不 为 空 ); 由 plesk_common.xsd 模 板 中<br />

的 类 型 garbageOutput 定 义<br />

例 如 , 若 从 <strong>Panel</strong> API RPC 服 务 器 接 到 响 应 , 尝 试 使 用 不 存 在 的 API RPC 协 议 版 本 , 结 果 类<br />

似 于 :<br />

<br />

<br />

error<br />

1005<br />

API RPC 协 议 版 本 不 受 支 持 。<br />

<br />

…<br />

<br />

执 行 错 误 码<br />

若 所 有 检 查 都 通 过 , 所 选 代 理 将 按 顺 序 执 行 请 求 的 操 作 。 若 操 作 失 败 , 相 关 代 理 报 告 执 行 错 误 。<br />

所 有 报 告 由 代 理 工 具 收 集 , 组 成 基 于 输 出 XML 模 板 的 响 应 程 序 包 。 如 若 创 建 站 点 失 败 , 站 点 运<br />

算 子 会 使 用 domain_output.xsd 模 板 生 成 错 误 响 应 :


50 通 过 远 程 API 设 置<br />

<br />

<br />

<br />

<br />

error<br />

2300<br />

Failed to add domain.<br />

<br />

<br />

<br />

<br />

客 户 码 示 例<br />

本 章 介 绍 PHP,C# 和 VB.NET 中 的 客 户 应 用 程 序 样 本 , 演 示 如 何 使 用 API RPC 协 议 。<br />

PHP 客 户 应 用 程 序<br />

下 列 代 码 样 本 是 用 PHP 编 写 的 即 用 型 客 户 应 用 程 序 。<br />

注 意 : 若 要 使 用 此 样 本 需 安 装 PHP 4.0.2 或 更 高 版 本 。<br />

更 多 信 息 , 请 访 问 http://php.net/manual/en/ref.dom.php 或<br />

http://php.net/manual/en/ref.curl.php。<br />

注 释<br />

class<br />

ApiRequestException<br />

function<br />

domainsInfoRequest()<br />

扩 展 标 准 异 类 。 访 问<br />

http://www.php.net/manual/en/language.exceptions.php<br />

了 解 详 情 。<br />

使 用 DOM 模 块 编 写 XML 请 求 数 据 包 。 返 回 最 终 DOM 对<br />

象 。<br />

function curlInit() 初 始 化 CURL 会 话 :<br />

CURLOPT_URL<br />

CURLOPT_RETURNTRANS<br />

FER<br />

CURLOPT_POST<br />

指 定 目 标 URL:<br />

设 置 成 true 表 示 将 从 服 务<br />

器 返 回 字 符 串 格 式 的 最 终<br />

输 出 。<br />

设 置 成 true 表 示 即 将 通 过<br />

HTTP POST 发 送 数 据 包 。


通 过 远 程 API 设 置 51<br />

CURLOPT_SSL_VERIFYPE<br />

ER<br />

CURLOPT_SSL_VERIFYHO<br />

ST<br />

CURLOPT_HTTPHEADER<br />

设 置 成 false 让 CURL 停 止<br />

验 证 同 类 证 书 。<br />

设 置 成 false 让 CURL 停 止<br />

验 证 主 机 。<br />

指 定 要 设 置 的 HTTP 标 头<br />

字 段 。<br />

返 回 URL 会 话 处 理 器 。<br />

function sendRequest()<br />

function parseResponse()<br />

通 过 CURL 发 送 HTTP 数 据 包 , 并 获 取 纯 XML 响 应 数 据<br />

包 ( 无 需 HTTP 标 头 )。 关 闭 CURL 会 话 , 返 回 最 终 数 据 包<br />

( 带 XML 标 签 的 纯 文 本 )。 有 关 CURL 工 具 的 更 多 信 息 , 访<br />

问 http://www.php.net/manual/en/ref.curl.php。<br />

获 取 响 应 数 据 包 ( 纯 文 本 ) 参 数 。 使 用 SimpleXML 分 析 数<br />

据 包 , 返 回 SimpleXMLElement 对 象 。 有 关 PHP<br />

SimpleXML 扩 展 的 更 多 信 息 , 访 问<br />

http://www.php.net/manual/en/ref.simplexml.php。<br />

function checkResponse() 获 取 相 应 数 据 包 SimpleXMLEelement 并 查 看 结 果 节 点 。<br />

若 节 点 ' 错 误 ', 则 函 数 出 现 异 常 , 字 符 串 传 到 errtext 节 点 。<br />

main() 函 数 按 顺 序 调 用 这 些 函 数 。 首 先 调 用 domainInfoRequest() 组 成 如 下 的 数 据 包 :<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

然 后 调 用 curlInit() 来 初 始 化 CURL 会 话 。sendRequest 函 数 发 送 HTTP 标 头 如 下 的 数 据 包 :<br />

POST /enterprise/control/agent.php HTTP/1.1<br />

Host:10.58.32.100:8443<br />

HTTP_AUTH_LOGIN:login<br />

HTTP_AUTH_PASSWD:qwedsa<br />

HTTP_PRETTY_PRINT:TRUE


52 通 过 远 程 API 设 置<br />

Content-Length:294<br />

Content-Type:text/xml<br />

从 <strong>Panel</strong> 管 理 的 服 务 器 接 收 到 的 响 应 XML 数 据 包 如 下 :<br />

<br />

<br />

<br />

<br />

<br />

ok<br />

1234<br />

<br />

<br />

1154513574<br />

example.com<br />

example<br />

64<br />

0<br />

46<br />

192.0.2.33<br />

none<br />

<br />

<br />

<br />

<br />

<br />

<br />

收 到 相 应 数 据 包 后 , 经 过 parseResponse() 函 数 解 析 , 循 环 执 行 iterator, 模 拟 结 果 节 点 上 的<br />

内 容 。<br />

代 码 样 本<br />

formatOutput = true;<br />

// <br />

$packet = $xmldoc->createElement('packet');<br />

$packet->setAttribute('version', '1.6.2.0');<br />

$xmldoc->appendChild($packet);<br />

//


通 过 远 程 API 设 置 53<br />

$domain = $xmldoc->createElement('domain');<br />

$packet->appendChild($domain);<br />

// <br />

$get = $xmldoc->createElement('get');<br />

$domain->appendChild($get);<br />

}<br />

// <br />

$filter = $xmldoc->createElement('filter');<br />

$get->appendChild($filter);<br />

// <br />

$dataset = $xmldoc->createElement('dataset');<br />

$get->appendChild($dataset);<br />

// dataset elements<br />

$dataset->appendChild($xmldoc->createElement('hosting'));<br />

$dataset->appendChild($xmldoc->createElement('gen_info'));<br />

return $xmldoc;<br />

/**<br />

* Prepares CURL to perform the <strong>Panel</strong> API request<br />

* @return resource<br />

*/<br />

function curlInit($host, $login, $password)<br />

{<br />

$curl = curl_init();<br />

curl_setopt($curl, CURLOPT_URL,<br />

"https://{$host}:8443/enterprise/control/agent.php");<br />

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);<br />

curl_setopt($curl, CURLOPT_POST,<br />

true);<br />

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);<br />

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);<br />

curl_setopt($curl, CURLOPT_HTTPHEADER,<br />

array("HTTP_AUTH_LOGIN:{$login}",<br />

"HTTP_AUTH_PASSWD:{$password}",<br />

"HTTP_PRETTY_PRINT:TRUE",<br />

"Content-Type:text/xml")<br />

);<br />

}<br />

return $curl;<br />

/**<br />

* Performs a <strong>Panel</strong> API request, returns raw API response text<br />

*<br />

* @return string<br />

* @throws ApiRequestException<br />

*/<br />

function sendRequest($curl, $packet)<br />

{<br />

curl_setopt($curl, CURLOPT_POSTFIELDS, $packet);<br />

$result = curl_exec($curl);<br />

if (curl_errno($curl)) {<br />

$errmsg = curl_error($curl);<br />

$errcode = curl_errno($curl);<br />

curl_close($curl);<br />

throw new ApiRequestException($errmsg, $errcode);<br />

}<br />

curl_close($curl);<br />

return $result;<br />

}


54 通 过 远 程 API 设 置<br />

/**<br />

* Looks if API responded with correct data<br />

*<br />

* @return SimpleXMLElement<br />

* @throws ApiRequestException<br />

*/<br />

function parseResponse($response_string)<br />

{<br />

$xml = new SimpleXMLElement($response_string);<br />

if (!is_a($xml, 'SimpleXMLElement'))<br />

throw new ApiRequestException("Cannot parse server<br />

response:{$response_string}");<br />

return $xml;<br />

}<br />

/**<br />

* Check data in API response<br />

* @return void<br />

* @throws ApiRequestException<br />

*/<br />

function checkResponse(SimpleXMLElement $response)<br />

{<br />

$resultNode = $response->domain->get->result;<br />

// check if request was successful<br />

if ('error' == (string)$resultNode->status)<br />

throw new ApiRequestException("The <strong>Panel</strong> API returned an error:"<br />

. (string)$resultNode->result->errtext);<br />

}<br />

//<br />

// int main()<br />

//<br />

$host = '10.58.32.100';<br />

$login = 'admin';<br />

$password = 'qwedsa';<br />

$curl = curlInit($host, $login, $password);<br />

try {<br />

$response = sendRequest($curl, domainsInfoRequest()->saveXML());<br />

$responseXml = parseResponse($response);<br />

checkResponse($responseXml);<br />

} catch (ApiRequestException $e) {<br />

echo $e;<br />

die();<br />

}<br />

// Explore the result<br />

foreach ($responseXml->xpath('/packet/domain/get/result') as $resultNode) {<br />

echo "Domain id:" . (string)$resultNode->id ." ";<br />

echo (string)$resultNode->data->gen_info->name ." (" .<br />

(string)$resultNode->data->gen_info->dns_ip_address .")\n";<br />

}<br />

>


通 过 远 程 API 设 置 55<br />

C# Client Application<br />

下 列 代 码 样 本 是 用 C# 编 写 的 即 用 型 客 户 应 用 程 序 。<br />

注 释<br />

类 Request 通 过 HTTP 发 送 请 求 到 <strong>Panel</strong> 管 理 的 服 务 器 并 接 收 响 应 数 据 包 。 内 容 如 下 :<br />

公 共 字 符 串 主 机 名<br />

公 共 字 符 串 登 录<br />

公 共 字 符 串 密 码<br />

请 求 数 据 包 要 发 送 到 的 <strong>Panel</strong> 管 理 的 服 务 器 主 机 名<br />

(IP 地 址 )。 默 认 是 "localhost"。<br />

持 有 <strong>Panel</strong> 管 理 员 登 录 名 。 默 认 是 "admin"。<br />

持 有 默 认 管 理 员 的 密 码 。 默 认 是 "setup"。<br />

公 共 字 符 串 协 议 持 有 与 <strong>Panel</strong> 互 动 的 API RPC 协 议 。<br />

public ValidationEventHandler<br />

XmlSchemaValidation<br />

公 共 字 符 串 AgentEntryPoint<br />

公 共 字 符 串 InputValidationSchema<br />

公 共 字 符 串<br />

OutputValidationSchema<br />

public XmlDocument Send<br />

(XmlDocument)<br />

public XmlDocument Send<br />

(Stream)<br />

public XmlDocument Send<br />

(string)<br />

private HttpWebRequest<br />

SendRequest (string)<br />

private XmlDocument<br />

ParseAndValidate (TextReader,<br />

string)<br />

private XmlDocument GetResponse<br />

(HttpWebRequest)<br />

用 来 接 收 模 板 验 证 错 误 的 处 理 器 。<br />

持 有 处 理 服 务 器 上 请 求 数 据 包 的 <strong>Panel</strong> 代 理 URL。<br />

持 有 发 送 给 服 务 器 之 前 应 用 到 请 求 数 据 包 的 验 证 模<br />

板 URL。<br />

持 有 客 户 接 受 之 后 要 应 用 到 响 应 数 据 包 的 验 证 模 板<br />

URL。<br />

获 取 请 求 数 据 包 ( 在 XmlDocument 对 象 表 单 中 ) 到<br />

输 入 参 数 。 在 XmlDocument 对 象 表 单 中 发 送 请 求 ,<br />

获 取 响 应 。<br />

获 取 请 求 数 据 包 ( 流 ) 到 输 入 参 数 。 使 用<br />

agent_input.xsd 验 证 模 板 验 证 请 求 数 据 包 。 调<br />

用 Send(XmlDocument) 子 函 数 。<br />

获 取 请 求 数 据 包 URI (XML 文 件 ) 到 输 入 参 数 。 使 用<br />

agent_input.xsd 验 证 模 板 验 证 请 求 数 据 包 。 调<br />

用 Send(XmlDocument) 子 函 数 。<br />

生 成 HTTP 请 求 : 将 HTTP 标 头 和 连 续 XML 数 据 包<br />

到 HttpWebRequest 类 型 的 对 象 。 返 回 此 对 象 。<br />

获 取 agent_input.xsd URI 和 字 符 串 阅 读 器<br />

( 要 验 证 的 XML 数 据 包 URI) 到 输 入 参 数 。 验 证 数 据<br />

包 , 并 返 回 树 状 结 构 图 (XmlDocument 对 象 )。<br />

获 取 请 求 数 据 包 (HttpWebRequest 对 象 ) 到 输 入 参<br />

数 。 通 过 HTTP 发 送 数 据 包 , 从 服 务 器 接 收 响 应 数<br />

据 包 , 使 用 agent_output.xsd 模 板 验 证 , 并 返<br />

回 树 状 结 构 的 响 应 XML 数 据 包 (XmlDocument 对<br />

象 )。


56 通 过 远 程 API 设 置<br />

类 Program 执 行 ' 客 户 ' 控 制 台 应 用 程 序 。<br />

static void Main (string[])<br />

<strong>Panel</strong>ApiRpcClient 应 用 程 序 进 入 点 。 获 取 函 数 队<br />

列 ( 字 符 串 ) 到 输 入 参 数 。 选 项 有 :<br />

[0] - <strong>Panel</strong> 管 理 的 服 务 器 主 机 名 (IP 地 址 )<br />

[1] - <strong>Panel</strong> 管 理 员 登 录 名<br />

[2] - <strong>Panel</strong> 管 理 员 密 码<br />

[3] - 所 用 的 API RPC 协 议<br />

[4] - 内 有 XML 请 求 数 据 包 的 XML 文 件 。<br />

函 数 生 成 请 求 类 数 据 包 ( 如 上 所 示 ), 验 证 , 发 送 请<br />

求 到 <strong>Panel</strong>, 然 后 打 印 出 最 终 XML 数 据 包 。<br />

private static bool<br />

RemoteCertificateValidation<br />

(object, X509Certificate,<br />

X509Chain, SslPolicyErrors)<br />

private static void<br />

XmlSchemaValidation (object,<br />

ValidationEventArgs)<br />

static void<br />

PrintResult(XmlDocument)<br />

函 数 验 证 远 程 SSL 证 书 来 授 权 服 务 器 。 若 服 务 器 未<br />

经 授 权 , 返 回 false。<br />

验 证 错 误 事 件 处 理 器 。<br />

函 数 输 出 响 应 数 据 包 (XmlDocument 对 象 ) 到 控 制<br />

台 。


通 过 远 程 API 设 置 57<br />

可 从 命 令 行 启 动 客 户 应 用 程 序 :<br />

<strong>Panel</strong>ApiRpcClient 192.0.2.168 admin_login admin_passwd 1.6.2.0<br />

"c:\requests\AddNewDomain.xml"<br />

请 求 数 据 包 川 到 AddNewDomain.xml 文 件 :<br />

<br />

<br />

<br />

<br />

<br />

example.com<br />

192.0.2.48<br />

<br />

<br />

<br />

<br />

ftp_login<br />

fpt16se4fdf0<br />

<br />

<br />

ftp_password<br />

qweqwe<br />

<br />

192.0.2.48<br />

<br />

<br />

<br />

<br />

<br />

从 管 理 的 服 务 器 接 收 到 的 响 应 数 据 包 如 下 :<br />

<br />

<br />

<br />

<br />

<br />

ok<br />

6<br />

5c0e3881-22a2-4401-bcc0-881d691bfdef<br />

<br />

<br />

<br />

<br />

此 数 据 包 返 回 add 操 作 结 果 , 以 及 刚 创 建 站 点 的 ID 和 GUID。<br />

代 码 样 本<br />

使 用 系 统 ;<br />

使 用 System.Net;<br />

使 用 System.Text;<br />

使 用 System.IO;<br />

使 用 System.Xml;<br />

使 用 System.Xml.Schema;<br />

使 用 System.Security.Cryptography.X509Certificates;


58 通 过 远 程 API 设 置<br />

使 用 System.Net.Security;<br />

命 名 空 间 <strong>Panel</strong>ApiRpcClient<br />

{<br />

公 共 类 请 求<br />

{<br />

// Public interface<br />

//<br />

public string Hostname = "localhost"; // <strong>Panel</strong> Hostname<br />

public string Login = "admin_login"; //<br />

Administrator's Login<br />

public string Password = "admin_passwd"; //<br />

Administrator's Password<br />

public string Protocol = "1.6.2.0"; // API RPC Version<br />

Protocol.<br />

(DTD),<br />

(XSD)<br />

// Handler for receiving information about document type definition<br />

// XML-Data Reduced (XDR) schema, and XML Schema definition language<br />

// schema validation errors.<br />

public ValidationEventHandler XmlSchemaValidation = null;<br />

public Request()<br />

{<br />

}<br />

public string AgentEntryPoint { get { return "https://" +<br />

Hostname + ":8443/enterprise/control/agent.php"; } }<br />

public string InputValidationSchema { get { return "https://" +<br />

Hostname + ":8443/schemas/rpc/" + Protocol + "/agent_input.xsd"; } }<br />

public string OutputValidationSchema { get { return "https://" +<br />

Hostname + ":8443/schemas/rpc/" + Protocol + "/agent_output.xsd"; } }<br />

public XmlDocument Send(XmlDocument packet)<br />

{<br />

HttpWebRequest request = SendRequest(packet.OuterXml);<br />

XmlDocument result = GetResponse(request);<br />

return result;<br />

}<br />

public XmlDocument Send(Stream packet)<br />

{<br />

using (TextReader reader = new StreamReader(packet))<br />

{<br />

return Send(ParseAndValidate(reader,<br />

InputValidationSchema));<br />

}<br />

}<br />

public XmlDocument Send(string packetUri)<br />

{<br />

using (TextReader reader = new StreamReader(packetUri))<br />

{<br />

return Send(ParseAndValidate(reader,<br />

InputValidationSchema));<br />

}<br />

}<br />

// Private interface<br />

//


通 过 远 程 API 设 置 59<br />

// Sending a request message<br />

//<br />

private HttpWebRequest SendRequest(string message)<br />

{<br />

HttpWebRequest request =<br />

(HttpWebRequest)WebRequest.Create(AgentEntryPoint);<br />

request.Method = "POST";<br />

request.Headers.Add("HTTP_AUTH_LOGIN", Login);<br />

request.Headers.Add("HTTP_AUTH_PASSWD", Password); request.ContentType =<br />

"text/xml"; request.ContentLength = message.Length;<br />

ASCIIEncoding encoding = new ASCIIEncoding(); byte[] buffer<br />

= encoding.GetBytes(message);<br />

using (Stream stream = request.GetRequestStream())<br />

{<br />

stream.Write(buffer, 0, message.Length);<br />

}<br />

}<br />

return request;<br />

// Parsing and validating packet<br />

//<br />

private XmlDocument ParseAndValidate(TextReader xml, string<br />

schemaUri)<br />

{<br />

XmlSchemaSet schemas = new XmlSchemaSet();<br />

schemas.Add(null, schemaUri);<br />

XmlReaderSettings settings = new XmlReaderSettings(); if<br />

(XmlSchemaValidation != null)<br />

settings.ValidationEventHandler += new<br />

ValidationEventHandler(XmlSchemaValidation);<br />

settings.ValidationType = ValidationType.Schema;<br />

settings.ValidationFlags |=<br />

XmlSchemaValidationFlags.ProcessSchemaLocation;<br />

settings.Schemas = schemas;<br />

XmlDocument document = new XmlDocument();<br />

using (XmlReader reader = XmlTextReader.Create(xml,<br />

settings))<br />

{<br />

document.Load(reader);<br />

}<br />

return document;<br />

}<br />

private XmlDocument GetResponse(HttpWebRequest request)<br />

{<br />

using (HttpWebResponse response =<br />

(HttpWebResponse)request.GetResponse())<br />

using (Stream stream = response.GetResponseStream())<br />

using (TextReader reader = new StreamReader(stream))<br />

{<br />

return ParseAndValidate(reader,<br />

OutputValidationSchema);<br />

}<br />

}<br />

}<br />

class Program<br />

{<br />

static void Main(string[] args)


60 通 过 远 程 API 设 置<br />

{<br />

if (args.Length < 5)<br />

{<br />

Console.WriteLine("Usage:<strong>Panel</strong>ApiRpcClient<br />

");<br />

Console.WriteLine(" ");<br />

Console.WriteLine(" Hostname - <strong>Panel</strong> host name");<br />

Console.WriteLine(" Login - Administrator's<br />

login");<br />

Console.WriteLine(" Password - Administrator's<br />

password");<br />

Console.WriteLine(" Protocol - API RPC protocol<br />

version");<br />

Console.WriteLine(" Request - Request file path<br />

(*.xml)");<br />

return;<br />

}<br />

// Verifies the remote Secure Sockets Layer (SSL) certificate<br />

// used for authentication.<br />

ServicePointManager.ServerCertificateValidationCallback =<br />

new<br />

RemoteCertificateValidationCallback(RemoteCertificateValidation);<br />

Request request = new Request(); request.XmlSchemaValidation<br />

= XmlSchemaValidation;<br />

request.Hostname = args[0]; // "10.49.8.120";<br />

request.Login = args[1]; // "admin";<br />

request.Password = args[2]; // "setup";<br />

request.Protocol = args[3]; // "1.6.2.0";<br />

string packet<br />

= args[4]; // "request.xml";<br />

}<br />

try<br />

{<br />

XmlDocument result = request.Send(packet);<br />

PrintResult(result);<br />

}<br />

catch (Exception e)<br />

{<br />

Console.WriteLine("Request error:{0}", e.Message);<br />

}<br />

// The following method is invoked by the<br />

RemoteCertificateValidationDelegate.<br />

private static bool RemoteCertificateValidation(object sender,<br />

X509Certificate certificate, X509Chain chain,<br />

SslPolicyErrors sslPolicyErrors)<br />

{<br />

if (sslPolicyErrors !=<br />

SslPolicyErrors.RemoteCertificateNotAvailable)<br />

return true;<br />

Console.WriteLine("Certificate error:{0}",<br />

sslPolicyErrors);<br />

// Do not allow this client to communicate with<br />

unauthenticated servers.<br />

return false;<br />

}<br />

//


通 过 远 程 API 设 置 61<br />

private static void XmlSchemaValidation(object sender,<br />

ValidationEventArgs e)<br />

{<br />

Console.WriteLine("Validation error:{0}", e.Message);<br />

}<br />

}<br />

}<br />

static void PrintResult(XmlDocument document)<br />

{<br />

XmlTextWriter writer = new XmlTextWriter(Console.Out);<br />

writer.Formatting = Formatting.Indented;<br />

document.WriteTo(writer);<br />

writer.Flush();<br />

Console.WriteLine();<br />

}<br />

VB.NET 客 户 应 用 程 序<br />

下 列 代 码 样 本 是 用 VB.NET 编 写 的 即 用 型 客 户 应 用 程 序 。<br />

注 释<br />

类 Request 通 过 HTTP 发 送 请 求 到 <strong>Panel</strong> 管 理 的 服 务 器 并 接 收 响 应 数 据 包 。 内 容 如 下 :<br />

公 共 字 符 串 主 机 名<br />

公 共 字 符 串 登 录<br />

公 共 字 符 串 密 码<br />

请 求 数 据 包 要 发 送 到 的 <strong>Panel</strong> 管 理 的 服 务 器 主 机 名<br />

(IP 地 址 )。 默 认 是 "localhost"。<br />

持 有 <strong>Panel</strong> 管 理 员 登 录 名 。 默 认 是 "admin"。<br />

持 有 默 认 管 理 员 的 密 码 。 默 认 是 "setup"。<br />

公 共 字 符 串 协 议 持 有 与 <strong>Panel</strong> 互 动 的 API RPC 协 议 。<br />

public XmlSchemaValidation 用 来 接 收 模 板 验 证 错 误 的 处 理 器 。<br />

Public ReadOnly Property<br />

AgentEntryPoint<br />

Public ReadOnly Property<br />

InputValidationSchema<br />

Public ReadOnly Property<br />

OutputValidationSchema<br />

Public Function Send(ByVal<br />

packet As XmlDocument)<br />

Public Function Send(ByVal<br />

packet As Stream)<br />

Public Function Send(ByVal<br />

packetUri As String)<br />

持 有 处 理 服 务 器 上 请 求 数 据 包 的 <strong>Panel</strong> 代 理 URL。<br />

持 有 发 送 给 服 务 器 之 前 应 用 到 请 求 数 据 包 的 验 证 模<br />

板 URL。<br />

持 有 客 户 接 受 之 后 要 应 用 到 响 应 数 据 包 的 验 证 模 板<br />

URL。<br />

获 取 请 求 数 据 包 ( 在 XmlDocument 对 象 表 单 中 ) 到<br />

输 入 参 数 。 在 XmlDocument 对 象 表 单 中 发 送 请 求 ,<br />

获 取 响 应 。<br />

获 取 请 求 数 据 包 ( 流 ) 到 输 入 参 数 。Validates the<br />

request packet using the validation schema. 调 用<br />

Send(XmlDocument) 子 函 数 。<br />

获 取 请 求 数 据 包 URI (XML 文 件 ) 到 输 入 参 数 。<br />

Validates the request packet using the validation<br />

schema. 调 用 Send(XmlDocument) 子 函 数 。


62 通 过 远 程 API 设 置<br />

Private Function<br />

SendRequest(ByVal message As<br />

String)<br />

Private Function<br />

ParseAndValidate(ByVal xml As<br />

TextReader, ByVal schemaUri As<br />

String)<br />

Private Function<br />

GetResponse(ByVal request As<br />

HttpWebRequest)<br />

生 成 HTTP 请 求 : 将 HTTP 标 头 和 连 续 XML 数 据 包<br />

到 HttpWebRequest 类 型 的 对 象 。 返 回 此 对 象 。<br />

获 取 验 证 模 板 URI 和 字 符 串 阅 读 器 ( 要 验 证 的 XML<br />

数 据 包 URI) 到 输 入 参 数 。 验 证 数 据 包 , 并 返 回 树 状<br />

结 构 图 (XmlDocument 对 象 )。<br />

获 取 请 求 数 据 包 (HttpWebRequest 对 象 ) 到 输 入 参<br />

数 。 通 过 HTTP 发 送 数 据 包 , 从 服 务 器 接 收 响 应 数 据<br />

包 , 使 用 模 板 验 证 , 并 返 回 树 状 结 构 的 响 应 XML 数<br />

据 包 (XmlDocument 对 象 )。


通 过 远 程 API 设 置 63<br />

类 Program 执 行 ' 客 户 ' 控 制 台 应 用 程 序 。<br />

Shared Sub Main(ByVal args As<br />

String())<br />

Private Shared Function<br />

RemoteCertificateValidation(<br />

ByVal sender As Object, ByVal<br />

certificate As<br />

X509Certificate, ByVal chain<br />

As X509Chain, ByVal<br />

sslPolicyErrors As<br />

SslPolicyErrors)<br />

<strong>Panel</strong>ApiRpcClient 应 用 程 序 进 入 点 。 获 取 函 数<br />

队 列 ( 字 符 串 ) 到 输 入 参 数 。 选 项 有 :<br />

[0] - <strong>Panel</strong> 管 理 的 服 务 器 主 机 名 (IP 地 址 )<br />

[1] - <strong>Panel</strong> 管 理 员 登 录 名<br />

[2] - <strong>Panel</strong> 管 理 员 密 码<br />

[3] - 所 用 的 API RPC 协 议<br />

[4] - 内 有 XML 请 求 数 据 包 的 XML 文 件 。<br />

函 数 生 成 请 求 类 数 据 包 ( 如 上 所 示 ), 验 证 , 发 送<br />

请 求 到 <strong>Panel</strong>, 然 后 打 印 出 最 终 XML 数 据 包 。<br />

函 数 验 证 远 程 SSL 证 书 来 授 权 服 务 器 。 若 服 务<br />

器 未 经 授 权 , 返 回 false。<br />

Private Shared Sub<br />

XmlSchemaValidation(ByVal<br />

sender As Object, ByVal e As<br />

ValidationEventArgs)<br />

验 证 错 误 事 件 处 理 器 。<br />

Private Shared Sub<br />

PrintResult(ByVal document As<br />

XmlDocument)<br />

函 数 输 出 响 应 数 据 包 (XmlDocument 对 象 ) 到<br />

控 制 台 。<br />

可 从 命 令 行 启 动 客 户 应 用 程 序 :<br />

<strong>Panel</strong>ApiRpcClient 192.0.2.168 admin_login admin_passwd 1.6.2.0<br />

"c:\requests\request.xml"<br />

请 求 数 据 包 川 到 request.xml 文 件 :<br />

<br />

<br />

<br />

<br />

<br />

example.com<br />

192.0.2.48


64 通 过 远 程 API 设 置<br />

<br />

<br />

<br />

<br />

ftp_login<br />

fp16se4fdf0<br />

<br />

<br />

ftp_password<br />

qweqwe<br />

<br />

192.0.2.48<br />

<br />

<br />

<br />

<br />

<br />

从 管 理 的 服 务 器 接 收 到 的 响 应 数 据 包 如 下 :<br />

<br />

<br />

<br />

<br />

<br />

ok<br />

6<br />

5c0e3881-22a2-4401-bcc0-881d691bfdef<br />

<br />

<br />

<br />

<br />

此 数 据 包 返 回 add 操 作 结 果 , 以 及 刚 创 建 站 点 的 ID 和 GUID。<br />

代 码 样 本<br />

导 入 系 统<br />

Imports System.Net<br />

Imports System.Text<br />

Imports System.IO<br />

Imports System.Xml<br />

Imports System.Xml.Schema<br />

Imports System.Security.Cryptography.X509Certificates<br />

Imports System.Net.Security<br />

Namespace <strong>Parallels</strong><strong>Panel</strong>ApiRpcClient<br />

Public Class Request<br />

' Public interface<br />

Public Hostname As String = "localhost" 'The <strong>Panel</strong> Host name<br />

Public Login As String = "admin_login" //<br />

Administrator's Login<br />

Public Password As String = "admin_setup"<br />

'Administrator's Password<br />

Public Protocol As String = "1.6.2.0" 'API RPC Version<br />

Protocol<br />

(DTD),<br />

(XSD)<br />

' Handler for receiving information about document type definition<br />

' XML-Data Reduced (XDR) schema, and XML Schema definition language


通 过 远 程 API 设 置 65<br />

' schema validation errors.<br />

Public XmlSchemaValidation As ValidationEventHandler<br />

Public ReadOnly Property AgentEntryPoint As String<br />

Get<br />

Return ("https://" & Me.Hostname &<br />

":8443/enterprise/control/agent.php")<br />

End Get<br />

End Property<br />

Public ReadOnly Property InputValidationSchema As String<br />

Get<br />

Return String.Concat(New String() { "https://",<br />

Me.Hostname, ":8443/schemas/rpc/", Me.Protocol, "/agent_input.xsd" })<br />

End Get<br />

End Property<br />

Public ReadOnly Property OutputValidationSchema As String<br />

Get<br />

Return String.Concat(New String() { "https://",<br />

Me.Hostname, ":8443/schemas/rpc/", Me.Protocol, "/agent_output.xsd" })<br />

End Get<br />

End Property<br />

Public Function Send(ByVal packet As XmlDocument) As XmlDocument<br />

Dim request As HttpWebRequest =<br />

Me.SendRequest(packet.OuterXml)<br />

Return Me.GetResponse(request)<br />

End Function<br />

Public Function Send(ByVal packet As Stream) As XmlDocument<br />

Using reader As TextReader = New StreamReader(packet)<br />

Return Me.Send(Me.ParseAndValidate(reader,<br />

Me.InputValidationSchema))<br />

End Using<br />

End Function<br />

Public Function Send(ByVal packetUri As String) As XmlDocument<br />

Using reader As TextReader = New StreamReader(packetUri)<br />

Return Me.Send(Me.ParseAndValidate(reader,<br />

Me.InputValidationSchema))<br />

End Using<br />

End Function<br />

' Private interface<br />

'<br />

' Sending a request message<br />

'<br />

Private Function SendRequest(ByVal message As String) As<br />

HttpWebRequest<br />

Dim request As HttpWebRequest =<br />

DirectCast(WebRequest.Create(Me.AgentEntryPoint), HttpWebRequest)<br />

request.Method = "POST"<br />

request.Headers.Add("HTTP_AUTH_LOGIN", Me.Login)<br />

request.Headers.Add("HTTP_AUTH_PASSWD", Me.Password)<br />

request.ContentType = "text/xml"<br />

request.ContentLength = message.Length<br />

Dim bytes As Byte() = New ASCIIEncoding().GetBytes(message)<br />

Using stream As Stream = request.GetRequestStream<br />

stream.Write(bytes, 0, message.Length)<br />

End Using<br />

Return request<br />

End Function<br />

' Parsing and validating packet<br />

'


66 通 过 远 程 API 设 置<br />

Private Function ParseAndValidate(ByVal xml As TextReader, ByVal<br />

schemaUri As String) As XmlDocument<br />

Dim schemas As New XmlSchemaSet<br />

schemas.Add(Nothing, schemaUri)<br />

Dim settings As New XmlReaderSettings<br />

If (Not Me.XmlSchemaValidation Is Nothing) Then<br />

AddHandler settings.ValidationEventHandler, New<br />

ValidationEventHandler(AddressOf Me.XmlSchemaValidation.Invoke)<br />

End If<br />

settings.ValidationType = ValidationType.Schema<br />

settings.ValidationFlags = (settings.ValidationFlags Or<br />

XmlSchemaValidationFlags.ProcessSchemaLocation)<br />

settings.Schemas = schemas<br />

Dim document As New XmlDocument<br />

Using reader As XmlReader = XmlReader.Create(xml, settings)<br />

document.Load(reader)<br />

End Using<br />

Return document<br />

End Function<br />

Private Function GetResponse(ByVal request As HttpWebRequest) As<br />

XmlDocument<br />

Using response As HttpWebResponse =<br />

DirectCast(request.GetResponse, HttpWebResponse)<br />

Using stream As Stream = response.GetResponseStream<br />

Using reader As TextReader = New<br />

StreamReader(stream)<br />

return Me.ParseAndValidate(reader,<br />

Me.OutputValidationSchema)<br />

End Using<br />

End Using<br />

End Using<br />

End Function<br />

End Class<br />

友 好 类 程 序<br />

Shared Sub Main(ByVal args As String())<br />

If (args.Length < 5) Then<br />

Console.WriteLine("Usage:<strong>Panel</strong>ApiRpcClient<br />

")<br />

Console.WriteLine(" ")<br />

Console.WriteLine(" Host name - The <strong>Panel</strong>'s host name")<br />

Console.WriteLine(" Login - Administrator's login")<br />

Console.WriteLine(" Password - Administrator's<br />

password")<br />

Console.WriteLine(" Protocol - API RPC protocol<br />

version")<br />

Console.WriteLine(" Request - Request file path<br />

(*.xml)")<br />

Else<br />

' Verifies the remote Secure Sockets Layer (SSL)<br />

certificate<br />

' used for authentication.<br />

ServicePointManager.ServerCertificateValidationCallback = New<br />

RemoteCertificateValidationCallback(AddressOf<br />

Program.RemoteCertificateValidation)<br />

Dim request As New Request


通 过 远 程 API 设 置 67<br />

request.XmlSchemaValidation = New<br />

ValidationEventHandler(AddressOf Program.XmlSchemaValidation)<br />

request.Hostname = args(0)<br />

'<br />

"10.49.8.120";<br />

request.Login = args(1)<br />

' "admin";<br />

request.Password = args(2)<br />

' "setup";<br />

request.Protocol = args(3)<br />

'<br />

"1.6.2.0";<br />

Dim packetUri As String = args(4) ' "request.xml";<br />

Try<br />

Program.PrintResult(request.Send(packetUri))<br />

Catch exception As Exception<br />

Console.WriteLine("Request error:{0}",<br />

exception.Message)<br />

End Try<br />

End If<br />

End Sub<br />

' The following method is invoked by the<br />

RemoteCertificateValidationDelegate.<br />

Private Shared Function RemoteCertificateValidation(ByVal sender<br />

As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal<br />

sslPolicyErrors As SslPolicyErrors) As Boolean<br />

If (sslPolicyErrors <br />

SslPolicyErrors.RemoteCertificateNotAvailable) Then<br />

Return True<br />

End If<br />

Console.WriteLine("Certificate error:{0}",<br />

sslPolicyErrors)<br />

' Do not allow this client to communicate with unauthenticated<br />

servers.<br />

Return False<br />

End Function<br />

'<br />

Private Shared Sub XmlSchemaValidation(ByVal sender As Object,<br />

ByVal e As ValidationEventArgs)<br />

Console.WriteLine("Validation error:{0}", e.Message)<br />

End Sub<br />

Private Shared Sub PrintResult(ByVal document As XmlDocument)<br />

Dim w As New XmlTextWriter(Console.Out)<br />

w.Formatting = Formatting.Indented<br />

document.WriteTo(w)<br />

w.Flush<br />

Console.WriteLine<br />

End Sub<br />

End Class<br />

End Namespace


68 通 过 远 程 API 设 置<br />

设 置 <strong>Panel</strong><br />

本 章 详 细 阐 述 如 何 使 用 远 程 API 执 行 <strong>Panel</strong> 设 置 操 作 。<br />

初 始 化 <strong>Panel</strong><br />

若 要 通 过 API RPC 初 始 化 <strong>Panel</strong>, 使 用 smb/initial_setup 操 作 模 式 执 行 XML 请 求 数 据 包 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

请 求 数 据 包 结 构<br />

initial_setup 节 点 结 构 如 下 :<br />

• password, required<br />

指 定 <strong>Panel</strong> 管 理 员 新 密 码 。 数 据 类 型 :serverPassword (plesk_server.xsd).5 到 14 个<br />

字 符 。<br />

• admin_email, required<br />

指 定 <strong>Panel</strong> 管 理 员 邮 件 地 址 。 数 据 类 型 :emailType (common.xsd).3 到 255 个 字 符 。<br />

• locale, optional<br />

指 定 <strong>Panel</strong> 语 言 - <strong>Panel</strong> 界 面 上 要 使 用 的 语 言 数 据 类 型 : 字 符 串 。


通 过 远 程 API 设 置 69<br />

请 求 样 本<br />

初 始 化 <strong>Panel</strong> 的 请 求 数 据 包 类 似 于 :<br />

<br />

<br />

<br />

P4$$w0rd<br />

johndoe@example.com<br />

<br />

<br />

<br />

初 始 化 <strong>Panel</strong> 的 请 求 数 据 包 默 认 语 言 是 德 语 ( 德 国 ) 类 似 于 :<br />

<br />

<br />

<br />

P4$$w0rd<br />

johndoe@example.com<br />

de-DE<br />

<br />

<br />

<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 initial_setup 节 点 结 构 如 下 :


70 通 过 远 程 API 设 置<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

特 定 操 作 错 误<br />

• 1003, 代 理 工 具 初 始 化 错 误 。<br />

<strong>Panel</strong> 已 初 始 化 。<br />

• 1019, 无 效 值 。<br />

指 定 语 言 不 可 用 。


通 过 远 程 API 设 置 71<br />

响 应 样 本<br />

从 服 务 器 接 收 到 的 正 响 应 如 下 :<br />

<br />

<br />

<br />

<br />

ok<br />

<br />

<br />

<br />

<br />

若 <strong>Panel</strong> 已 初 始 化 , 则 有 下 列 负 响 应 。<br />

<br />

<br />

<br />

<br />

error<br />

1003<br />

Initial setup already completed<br />

<br />

<br />

<br />

<br />

若 指 定 语 言 不 可 用 , 则 有 下 列 负 响 应 。<br />

<br />

<br />

<br />

<br />

error<br />

1019<br />

Locale en-US2 is not installed on server<br />

<br />

<br />

<br />

<br />

安 装 许 可 证<br />

若 要 使 用 API RPC 安 装 许 可 证 , 使 用 server/lic_install 操 作 模 式 执 行 XML 请 求 数 据 包 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />


72 通 过 远 程 API 设 置<br />

请 求 数 据 包 结 构<br />

安 装 许 可 证 的 请 求 XML 数 据 包 , 包 括 server/lic_install 操 作 模 式 , 结 构 如 下 :<br />

• license, required<br />

包 含 许 可 证 数 据 。 数 据 类 型 :base64。<br />

• additional_key, optional<br />

若 要 安 装 附 加 许 可 证 , 请 指 定 。 数 据 类 型 : 无 。


通 过 远 程 API 设 置 73<br />

请 求 样 本<br />

此 数 据 包 安 装 <strong>Parallels</strong> Small Business <strong>Panel</strong> for Linux/Unix 默 认 许 可 证 :<br />

<br />


74 通 过 远 程 API 设 置<br />

<br />

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+IA0KLSA8cHAtc2<br />

1iLXVuaXgtMTA6a2V5IGNvcmU6Zm9ybWF0PSJvcGVuZnVzaW9uLTMiIHhtbG5zOmNvcmU9Imh0d<br />

HA6Ly9wYXJhbGxlbHMuY29tL3NjaGVtYXMva2V5cy9jb3JlLzMiIHhtbG5zOnBwLXNtYi11bml4<br />

LTEwPSJodHRwOi8vcGFyYWxsZWxzLmNvbS9zY2hlbWFzL2tleXMvcHJvZHVjdHMvcHAtc21iL3V<br />

uaXgvMTAuMCI+DQotIDwhLS0gVW5pcXVlIHByb2R1Y3QgS2V5IG51bWJlcg0KICAtLT4gDQogID<br />

xjb3JlOmtleS1udW1iZXIgY29yZTp0eXBlPSJzdHJpbmciPlNNQi4wMDAwMDAwMDwvY29yZTprZ<br />

XktbnVtYmVyPiANCi0gPCEtLSBLZXkgdmVyc2lvbg0KICAtLT4gDQogIDxjb3JlOmtleS12ZXJz<br />

aW9uIGNvcmU6dHlwZT0ic3RyaW5nIj4wMDAwPC9jb3JlOmtleS12ZXJzaW9uPiANCi0gPCEtLSB<br />

LZXkgZGVzY3JpcHRpb24NCiAgLS0+IA0KLSA8Y29yZTpkZXNjcmlwdGlvbj4NCiAgPGNvcmU6a2<br />

V5dHlwZT5QYXJhbGxlbHMgUGFuZWwgMTAgU01CIEVkaXRpb24gZm9yIFVuaXgvTGludXg8L2Nvc<br />

mU6a2V5dHlwZT4gDQogIDwvY29yZTpkZXNjcmlwdGlvbj4NCi0gPCEtLSBQcm9kdWN0IHdoaWNo<br />

IHRoaXMgbGljZW5zZSBpcyBpbnRlbmRlZCB0byB3b3JrIG9uDQogIC0tPiANCiAgPGNvcmU6cHJ<br />

vZHVjdCBjb3JlOnR5cGU9InN0cmluZyI+cHAtc21iLXVuaXg8L2NvcmU6cHJvZHVjdD4gDQotID<br />

whLS0gU3VwcG9ydGVkIHByb2R1Y3QgdmVyc2lvbg0KICAtLT4gDQogIDxjb3JlOnZlcnNpb24gY<br />

29yZTp0eXBlPSJzdHJpbmciPjEwLjA8L2NvcmU6dmVyc2lvbj4gDQotIDwhLS0gRGF0ZSBhZnRl<br />

ciB3aGljaCB0aGlzIGxpY2Vuc2UgYmVjb21lcyB1c2FibGUgKGluY2x1c2l2ZSkNCiAgLS0+IA0<br />

KICA8Y29yZTpzdGFydC1kYXRlIGNvcmU6dHlwZT0iZGF0ZSI+aW5zdGFudDwvY29yZTpzdGFydC<br />

1kYXRlPiANCi0gPCEtLSBEYXRlIGJlZm9yZSB3aGljaCB0aGlzIGxpY2Vuc2UgaXMgdXNhYmxlI<br />

ChleGNsdXNpdmUpDQogIC0tPiANCiAgPGNvcmU6ZXhwaXJhdGlvbi1kYXRlIGNvcmU6dHlwZT0i<br />

ZGF0ZSI+bmV2ZXI8L2NvcmU6ZXhwaXJhdGlvbi1kYXRlPiANCi0gPCEtLSBVUkwgb2YgdGhlIHN<br />

lcnZpY2UgZW5kcG9pbnQgdG8gdXNlIHdoZW4gcGVyZm9ybWluZyBhbiBhdXRvdXBkYXRlDQogIC<br />

0tPiANCiAgPGNvcmU6bGljZW5zZS1zZXJ2ZXItdXJsIGNvcmU6dHlwZT0ic3RyaW5nIj5odHRwc<br />

zovL2thLnBhcmFsbGVscy5jb206NTIyNC94bWxycGM8L2NvcmU6bGljZW5zZS1zZXJ2ZXItdXJs<br />

PiANCi0gPCEtLSBEYXRlIHdoZW4gcHJvZHVjdCB3aWxsIHRyeSB0byBwZXJmb3JtIGFuIGF1dG9<br />

1cGRhdGUNCiAgLS0+IA0KICA8Y29yZTp1cGRhdGUtZGF0ZSBjb3JlOnR5cGU9ImRhdGUiPmluc3<br />

RhbnQ8L2NvcmU6dXBkYXRlLWRhdGU+IA0KICA8Y29yZTp1cGRhdGUtdGlja2V0IGNvcmU6aGlkZ<br />

GVuPSJ0cnVlIiBjb3JlOnR5cGU9InN0cmluZyI+LS0tLS0tc21iXzEwX3VuaXhfZGVmYXVsdC0t<br />

LS0tLS08L2NvcmU6dXBkYXRlLXRpY2tldD4gDQotIDwhLS0gU01CIFVzZXJzDQogIC0tPiANCiA<br />

gPHBwLXNtYi11bml4LTEwOnNtYi11c2VycyBjb3JlOnR5cGU9ImludGVnZXIiPjE8L3BwLXNtYi<br />

11bml4LTEwOnNtYi11c2Vycz4gDQotIDwhLS0gTnVtYmVyIG9mIGRvbWFpbnMNCiAgLS0+IA0KI<br />

CA8cHAtc21iLXVuaXgtMTA6ZG9tYWlucyBjb3JlOnR5cGU9ImludGVnZXIiPjE8L3BwLXNtYi11<br />

bml4LTEwOmRvbWFpbnM+IA0KLSA8IS0tIEFiaWxpdHkgdG8gdXNlIFNwYW1Bc3Nhc3Npbg0KICA<br />

tLT4gDQogIDxwcC1zbWItdW5peC0xMDpzcGFtYXNzYXNpbi1zdXBwb3J0IGNvcmU6dHlwZT0iYm<br />

9vbGVhbiI+dHJ1ZTwvcHAtc21iLXVuaXgtMTA6c3BhbWFzc2FzaW4tc3VwcG9ydD4gDQotIDwhL<br />

S0gQVBTIEFwcGxpY2F0aW9uDQogIC0tPiANCiAgPHBwLXNtYi11bml4LTEwOmFwcy1hcHAgY29y<br />

ZTp0eXBlPSJzdHJpbmciPmh0dHA6Ly93d3cubWFnaWNzcGFtLmNvbS88L3BwLXNtYi11bml4LTE<br />

wOmFwcy1hcHA+IA0KLSA8IS0tIEFQUyBBcHBsaWNhdGlvbg0KICAtLT4gDQogIDxwcC1zbWItdW<br />

5peC0xMDphcHMtYXBwIGNvcmU6dHlwZT0ic3RyaW5nIj5odHRwOi8vd3d3LnBpbm5hY2xlY2Fyd<br />

C5jb20vPC9wcC1zbWItdW5peC0xMDphcHMtYXBwPiANCi0gPCEtLSBBUFMgQXBwbGljYXRpb24N<br />

CiAgLS0+IA0KICA8cHAtc21iLXVuaXgtMTA6YXBzLWFwcCBjb3JlOnR5cGU9InN0cmluZyI+aHR<br />

0cHM6Ly93d3cua2VlcGl0LmNvbS91bmxpbWl0ZWQ8L3BwLXNtYi11bml4LTEwOmFwcy1hcHA+IA<br />

0KLSA8IS0tIEFQUyBBcHBsaWNhdGlvbg0KICAtLT4gDQogIDxwcC1zbWItdW5peC0xMDphcHMtY<br />

XBwIGNvcmU6dHlwZT0ic3RyaW5nIj5odHRwOi8vd3d3LnN5bWFudGVjLmNvbS9ub3J0b24vaW50<br />

ZXJuZXQtc2VjdXJpdHk8L3BwLXNtYi11bml4LTEwOmFwcy1hcHA+IA0KLSA8IS0tIEFQUyBBcHB<br />

saWNhdGlvbg0KICAtLT4gDQogIDxwcC1zbWItdW5peC0xMDphcHMtYXBwIGNvcmU6dHlwZT0ic3<br />

RyaW5nIj5odHRwOi8vd3d3LmludGVyc3BpcmUuY29tL2VtYWlsbWFya2V0ZXIvPC9wcC1zbWItd<br />

W5peC0xMDphcHMtYXBwPiANCi0gPCEtLSBBUFMgQXBwbGljYXRpb24NCiAgLS0+IA0KICA8cHAt<br />

c21iLXVuaXgtMTA6YXBzLWFwcCBjb3JlOnR5cGU9InN0cmluZyI+aHR0cDovL3d3dy5pbnRlcnN<br />

waXJlLmNvbS9rbm93bGVkZ2VtYW5hZ2VyLzwvcHAtc21iLXVuaXgtMTA6YXBzLWFwcD4gDQotID<br />

xkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htb<br />

GRzaWcjIj4NCi0gPGRzaWc6U2lnbmVkSW5mbz4NCiAgPGRzaWc6Q2Fub25pY2FsaXphdGlvbk1l<br />

dGhvZCBBbGdvcml0aG09Imh0dHA6Ly9wYXJhbGxlbHMuY29tL3NjaGVtYXMva2V5cy9jb3JlLzM<br />

jY2Fub25pY2FsaXplIiAvPiANCiAgPGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaH<br />

R0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIgLz4gDQotI<br />

Dxkc2lnOlJlZmVyZW5jZSBVUkk9IiI+DQotIDxkc2lnOlRyYW5zZm9ybXM+DQogIDxkc2lnOlRy<br />

YW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTR<br />

uLTIwMDEwMzE1I1dpdGhDb21tZW50cyIgLz4gDQogIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG<br />

09Imh0dHA6Ly9wYXJhbGxlbHMuY29tL3NjaGVtYXMva2V5cy9jb3JlLzMjdHJhbnNmb3JtIiAvP<br />

iANCiAgPC9kc2lnOlRyYW5zZm9ybXM+DQogIDxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09


通 过 远 程 API 设 置 75<br />

Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIgLz4gDQogIDxkc2lnOkR<br />

pZ2VzdFZhbHVlPlRrUzk2YnlycEpVdTVpUTdIbkhZYUhhMTIra2lPYmZhRXBYMC9TWU5iV2M9PC<br />

9kc2lnOkRpZ2VzdFZhbHVlPiANCiAgPC9kc2lnOlJlZmVyZW5jZT4NCiAgPC9kc2lnOlNpZ25lZ<br />

EluZm8+DQogIDxkc2lnOlNpZ25hdHVyZVZhbHVlPmZvcUxYVFErTWhRUm44Y2NzSmdoU1ZhNUJU<br />

Vi9kaUtaVGJjdk9qUnBXcW5XaDlXei9NQmFKY0pDNnFnZUNkMHJ4OFZsWERxcm0yVUYgS1I1d0d<br />

WeFM1ZSt6NWNqREFEcVUyRStGOXRaUndubXRuamZ4dHV0THZibjVyS0FYc1VtWTQ2OU1EcjNQeF<br />

RYbi9mYjZycmpvbGZOOCBOWVE1WUVtMDkyd3IrWTg2TGNIVkhKM2ZXK01sQWd3WXpua0lzdFVQS<br />

E1JMVVkYlgwZWkvWTFmcStSc0dSSnNhZ2dRNW56MzgralV5IFRvUDBRK2VrUnAxcUFVa09OWUYy<br />

M21FT1FuQ2V5eFNqQ3FrejNyZEhkaVFFQTBKcmhYMGowYWZYWDJkL2JRUnZVeU93UFBsVWhzNU4<br />

gY3FjcndRRDdMQ0lsOE9Udk5FaFRrNFo0OGdaM1ZIRzJ2bitpVGc9PTwvZHNpZzpTaWduYXR1cm<br />

VWYWx1ZT4gDQotIDxkc2lnOktleUluZm8+DQotIDxkc2lnOlg1MDlEYXRhPg0KICA8ZHNpZzpYN<br />

TA5Q2VydGlmaWNhdGU+TUlJRW5EQ0NBb1FDQVJFd0RRWUpLb1pJaHZjTkFRRUZCUUF3Z2FZeEN6<br />

QUpCZ05WQkFZVEFrSk5NUXN3Q1FZRFZRUUlFd0pJVFRFUiBNQThHQTFVRUJ4TUlTR0Z0YVd4MGI<br />

yNHhIREFhQmdOVkJBb1RFMU5YYzI5bWRDQkliMnhrYVc1bmN5Qk1kR1F4SFRBYkJnTlZCQXNUIE<br />

ZFbHVkR1Z5Ym1Gc0lFUmxkbVZzYjNCdFpXNTBNUnd3R2dZRFZRUURFeE5MUVNCeWIyOTBJR05sY<br />

25ScFptbGpZWFJsTVJ3d0dnWUogS29aSWh2Y05BUWtCRmcxcllVQnpkM052Wm5RdVkyOXRNQjRY<br />

RFRBNU1EWXdNakEyTURrek0xb1hEVE0yTVRBeE9EQTJNRGt6TTFvdyBnWUF4Q3pBSkJnTlZCQVl<br />

UQWtKTk1Rc3dDUVlEVlFRSUV3SklUVEVSTUE4R0ExVUVCeE1JU0dGdGFXeDBiMjR4SERBYUJnTl<br />

ZCQW9UIEUxTlhjMjltZENCSWIyeGthVzVuY3lCTWRHUXhIVEFiQmdOVkJBc1RGRWx1ZEdWeWJtR<br />

nNJRVJsZG1Wc2IzQnRaVzUwTVJRd0VnWUQgVlFRREV3dHdjQzF6YldJdGRXNXBlRENDQVNJd0RR<br />

WUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNYzR0RWVhRFMzciBDS0sxQ1RaUm9<br />

aMTdGVzU5Z0tBbTlOQmt6V3ZwZW9VM0lnZU5SMTMrdWs0My9lYW1EQkNHZTBtQnNwb05vWjErWD<br />

k3RXVGYzB4b2RvIGg0NVgrRUNIZk5kME1adzVrSFljWWF1M2kxSVBBakZMdm5DcE52ZXc1WHpXQ<br />

zcwZ0xlenZNaWxRbWxTYWpLSEFEL0EvMGhzYkI0aDkgeVdxNTZPcDRiT1hUTDVKN0NZV1JHeVRS<br />

aFV1MnFPbjZ2Y2o3Q2Rkb05oeWhRdDJTYlArNDlVMXFJdjMvOFZ3YnZrMzZhTVlTVlBlMSBHRk5<br />

0MlE3RkhKUUxicW1pY1doL0JBWkpjU2FGMWlPSUhuZ2VIbG9uSGptbzdJWUEvSXcyTUZMT0dPam<br />

82Kzg2M0dUbDJUOXA0dGxGIHZHNWhOMWFpNHkybDdOVzFTczhVT1JSclVlMENBd0VBQVRBTkJna<br />

3Foa2lHOXcwQkFRVUZBQU9DQWdFQUgrcnFFdkhNdEFRaStWOHEgSDdFM3VSRk8xaVA1QzBVejlD<br />

QVdMZ0QyNWthWTlSaUV1K1ZNcGtyZ2RwMkRKZUxIaWd5Q3MyM3dUbkZ6SS9qMUJNRjJ1VGdKS1B<br />

6MiBSOTA2YVcyR0tJWWpIencvd3BmUDUxck9CWTVQNlhpdXNtM2NGdk8zTnJ4Z0hJSy9WV3N5WW<br />

1EN25mMksyZUptQmsvZU85TklaalBoIGRkS2NrYmNZRVhRN3dzd2l0dDlYcTFuckg2eFNXT1lIV<br />

UUwcHI0QW1jVXc3TDdRQVUzdDBVM0lIQzNHYmVyVE1RNERSL2xDTFV5a24gUkl3aDNKQXZkYVFJ<br />

ZnA2TW9yNkY0VWtrMWh2bzkwVTR1VHFEbXc4RFJHcVRoOCtPUEY1V1dTL0MyK0o0bThOWTNDWjZ<br />

pa3FIc0FpcCB5Si9uR1pqU3cvdHc4N0xMWHBMMzJhRkFLcGpjOGc1MkZuc3YzVDlwdjRHd0Q2V0<br />

hHYU1DNUVsL21XSWplSE5pLytPTk5hbkdHbHJxIHVLQ1p2UktHenJRNjV4bHIyeEovTXFTWDV3c<br />

WdTK3R5SE1XY3BwVFpZdmF6cXZtZFRUbllNWlhwd1M1YWxqQlAwb3FWd09wVDFLUksgY0o3bXVa<br />

YzNUWlJ1OHY0b2pWa1dWTlF2QVNUUFNsdXFkcW42RFdwV2V3UEQ0ZXg3c2ZJam52N1phWmtZV2t<br />

PL3VDam9SeE4wbmFtVSBlVk5QemZSNXJ5emVjalozb0g0L1NXTGFYeHFiQ2k0QzBjMFlVeTZBMk<br />

ZkejVKK3RwWUdFbkVFMENpcDFyRjVnMFJhMURBZXV4ZFFaIEMwang3NlNsQ1VjSWhGQ0p4RmRxM<br />

k5JMHZJVnlVNTl6R2NrY3E3WVZZVlJ2czNVc2crb1pNRTBKbTFjPTwvZHNpZzpYNTA5Q2VydGlm<br />

aWNhdGU+IA0KICA8L2RzaWc6WDUwOURhdGE+DQogIDwvZHNpZzpLZXlJbmZvPg0KICA8L2RzaWc<br />

6U2lnbmF0dXJlPg0KICA8L3BwLXNtYi11bml4LTEwOmtleT4=<br />

<br />

<br />

<br />

此 请 求 数 据 包 安 装 附 加 许 可 证 。<br />

注 意 许 可 证 节 点 内 容 是 有 效 的 base64 节 点 , 不 是 许 可 证 。 执 行 此 请 求 数 据 包 会 出 现 错 误 1020。<br />

<br />

<br />

<br />

TGV0IHVzIGp1c3QgcHJldGVuZCB0aGF0IHRoaXMgaXMgYSBQYXJhbGxlbHMgUGFuZW<br />

wgbGljZW5zZSBrZXkuCk9mIGNvdXJzZSwgd2UgY291bGQgbm90IGluY2x1ZGUgYSByZWFsIGxpY<br />

2Vuc2Uga2V5IGluIHRoZSBkb2N1bWVudGF0aW9uLgpUaGFuayB5b3UgZm9yIHVuZGVyc3RhbmRp<br />

bmcu<br />


76 通 过 远 程 API 设 置<br />

<br />

<br />

<br />

响 应 数 据 包 结 构<br />

输 出 响 应 数 据 包 的 lic_install 节 点 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 :unsignedInt.<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。


通 过 远 程 API 设 置 77<br />

响 应 样 本<br />

从 服 务 器 接 收 到 的 正 响 应 如 下 :<br />

<br />

<br />

<br />

<br />

ok<br />

<br />

<br />

<br />

<br />

若 请 求 数 据 包 尝 试 安 装 无 效 许 可 证 , 则 收 到 错 误 。<br />

<br />

<br />

<br />

<br />

error<br />

1020<br />

上 传 的 许 可 证 文 件 无 效 或 不 包 含 许 可 证 。<br />

<br />

<br />

<br />

<br />

配 置 DNS<br />

若 要 通 过 API RPC 协 议 配 置 <strong>Panel</strong> DNS 服 务 , 使 用 dns 运 算 子 。<br />

停 用 DNS 服 务<br />

若 要 使 用 API RPC 停 用 <strong>Panel</strong> DNS 服 务 , 执 行 包 含 dns/disable 操 作 节 点 的 XML 请 求 :<br />

<br />

<br />

<br />

<br />


78 通 过 远 程 API 设 置<br />

请 求 数 据 包<br />

下 列 请 求 数 据 包 停 用 DNS 服 务 :<br />

<br />

<br />

<br />

<br />

<br />

响 应 数 据 包<br />

输 出 XML 数 据 包 的 停 用 节 点 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。<br />

• status, required<br />

数 据 类 型 :resultType (common.xsd).<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

样 本<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

正 响 应 类 似 于 :<br />

<br />

<br />

<br />

<br />

ok<br />

<br />

<br />

<br />


通 过 远 程 API 设 置 79<br />

更 改 SOA 记 录 模 板<br />

若 要 设 置 新 SOA 记 录 模 板 , 执 行 包 含 dns/set 操 作 节 点 的 XML 请 求 数 据 包 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

请 求 数 据 包 结 构<br />

若 要 设 置 新 SOA 记 录 模 板 , 执 行 包 含 dns/set 操 作 节 点 的 XML 请 求 数 据 包 :<br />

• soa, required<br />

指 定 SOA 参 数 。 数 据 类 型 :SOAType (plesk_dns.xsd).<br />

• ttl, optional<br />

指 定 ttl 参 数 值 。<strong>Panel</strong> 设 置 的 默 认 值 为 一 天 。 数 据 类 型 :unsignedInt.<br />

• refresh, optional<br />

指 定 refresh 参 数 值 。<strong>Panel</strong> 设 置 的 默 认 值 为 三 小 时 。 数 据 类 型 :unsignedInt.<br />

• retry, optional<br />

指 定 retry 参 数 值 。<strong>Panel</strong> 设 置 的 默 认 值 为 一 小 时 。 数 据 类 型 :unsignedInt.<br />

• expire, optional<br />

指 定 expire 参 数 值 。( 即 时 签 署 32 位 值 。)<br />

<strong>Panel</strong> 设 置 的 默 认 值 为 一 周 。 数 据 类 型 :unsignedInt.<br />

• minimum, optional<br />

指 定 minimum 参 数 值 。<strong>Panel</strong> 设 置 的 默 认 值 为 三 小 时 。 数 据 类 型 :unsignedInt.


80 通 过 远 程 API 设 置<br />

请 求 样 本<br />

此 数 据 包 更 新 SOA 记 录 模 板 , 设 置 TTL 间 隔 为 32 小 时 , 刷 新 间 隔 为 6 小 时 , 重 试 间 隔 为 15<br />

分 钟 , 保 留 <strong>Panel</strong> 过 期 和 最 小 间 隔 默 认 值 。<br />

<br />

<br />

<br />

<br />

115200<br />

21600<br />

900<br />

<br />

<br />

<br />

<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 set 节 点 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。


通 过 远 程 API 设 置 81<br />

响 应 样 本<br />

从 服 务 器 接 收 到 的 正 响 应 如 下 :<br />

<br />

<br />

<br />

<br />

ok<br />

<br />

<br />

<br />

<br />

若 指 定 的 值 过 长 , 则 返 回 负 响 应 :<br />

REQUEST PACKET<br />

<br />

<br />

<br />

<br />

4320000000<br />

<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />

<br />

error<br />

1014<br />

Parser error:Request is invalid<br />

<br />

设 置 资 源 记 录 模 板<br />

使 用 API RPC, 您 可 以 按 下 列 方 式 在 DNS 区 域 模 板 中 修 改 资 源 记 录 :<br />

• 添 加 新 资 源 记 录<br />

• 删 除 现 有 资 源 记 录 ( 可 在 模 板 中 检 索 到 RR 列 表 )


82 通 过 远 程 API 设 置<br />

添 加 RR 模 板<br />

若 要 添 加 DNS 区 域 资 源 记 录 模 板 , 执 行 包 含 dns/add-rec 操 作 模 式 的 XML 请 求 数 据 包 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

请 求 数 据 包 结 构<br />

添 加 DNS 记 录 到 DNS 区 域 模 板 的 请 求 XML 数 据 包 包 括 dns/add_rec 操 作 节 点 , 由 dnsRecord<br />

类 型 (plesk_dns.xsd) 表 示 , 结 构 如 下 :


通 过 远 程 API 设 置 83<br />

• type, required<br />

指 定 DNS 记 录 类 型 。 数 据 类 型 : 字 符 串 。<br />

允 许 的 值 :A | NS | CNAME | MX | PTR | TXT | SOA | AXFR | SRV.<br />

• host, required<br />

指 定 记 录 设 置 要 应 用 到 的 主 机 名 。 数 据 类 型 : 字 符 串 。<br />

• value, required<br />

指 定 即 将 链 接 host 值 的 值 。 数 据 类 型 : 字 符 串 。<br />

站 点 创 建 后 即 创 建 DNS 区 域 文 件 , 占 位 符 或 会 被 真 实 IP 地 址 / 主 机 名<br />

替 换 。<br />

• opt, optional<br />

持 有 DNS 记 录 可 选 信 息 。 数 据 类 型 : 字 符 串 。<br />

注 意 : 若 是 SRV 记 录 ,opt 节 点 可 以 包 含 附 加 XML 代 码 , 格 式 如 下 :。<br />

可 使 用 单 个 数 据 包 添 加 多 个 DNS 记 录 。 执 行 多 少 次 操 作 , 即 可 添 加 多 个 条 DNS 记<br />

录 。<br />

<br />

<br />

...<br />

<br />

...<br />

<br />

...<br />

<br />


84 通 过 远 程 API 设 置<br />

请 求 样 本<br />

NS 请 求 样 本<br />

<br />

<br />

<br />

NS<br />

<br />

ns.&lt;domain&gt;<br />

<br />

<br />

<br />

创 建 example.com 站 点 后 即 可 创 建 DNS 区 域 , 包 含 下 列 RR:<br />

example.com.NS ns.example.com.<br />

让 ns.example.com 名 称 服 务 器 成 为 主 机 example.com。<br />

此 请 求 数 据 包 将 请 求 数 据 包 作 为 记 录 添 加 到 DNZ 区 域 模 板 ,<br />

provider-dns-server.example.com 站 点 名 称 服 务 器 。<br />

<br />

<br />

<br />

NS<br />

<br />

provider-dns-server.example.com<br />

<br />

<br />

<br />

记 录 模 板<br />

<br />

<br />

<br />

A<br />

mail<br />

&lt;ip&gt;<br />

<br />

<br />

<br />

创 建 example.com 站 点 ( 站 点 IP 192.0.2.12) 后 即 可 创 建 DNS 区 域 , 包 含 下 列 RR:<br />

mail.example.com.A 192.0.2.12<br />

定 义 主 机 mail.example.com 的 IP 地 址 192.0.2.12。<br />

CNAME 记 录 模 板<br />


通 过 远 程 API 设 置 85<br />

<br />

<br />

CNAME<br />

www<br />

ns.&lt;domain&gt;<br />

<br />

<br />

<br />

创 建 example.com 站 点 后 即 可 创 建 DNS 区 域 , 包 含 下 列 RR:<br />

www NS ns<br />

让 ns.example.com 成 为 www.example.com 别 名 。<br />

MX 记 录 模 板<br />

<br />

<br />

<br />

MX<br />

<br />

exchange.&lt;domain&gt;<br />

0<br />

<br />

<br />

<br />

创 建 example.com 站 点 后 即 可 创 建 DNS 区 域 , 包 含 下 列 RR:<br />

example.com.MX<br />

0 exchange.example.com.<br />

让 mail.example.com 成 为 example.com 站 点 邮 件 服 务 器 。<br />

PTR 记 录 模 板<br />

<br />

<br />

<br />

PTR<br />

&lt;ip&gt;<br />

community<br />

24<br />

<br />

<br />

<br />

创 建 example.com 站 点 ( 站 点 IP 192.0.2.12) 后 即 可 创 建 DNS 区 域 , 包 含 下 列 RR:<br />

192.0.2.12/24 PTR community.example.com<br />

让 community.example.com 站 点 成 为 子 网 192.0.2.12/24 的 域 名 指 示 器 。<br />

TXT 记 录 模 板<br />

<br />

<br />


86 通 过 远 程 API 设 置<br />

TXT<br />

about<br />

由 服 务 商 提 供 <br />

<br />

<br />

<br />

创 建 example.com 站 点 后 即 可 创 建 DNS 区 域 , 包 含 下 列 RR:<br />

关 于<br />

TXT 由 服 务 商 提 供<br />

添 加 文 字 描 述 " 由 服 务 商 提 供 " 到 域 名 about.example.com。<br />

SRV 记 录 模 板<br />

<br />

<br />

<br />

SRV<br />

_LDAP._tcp<br />

192.0.2.4.<br />

5 25 220<br />

<br />

<br />

<br />

创 建 example.com 站 点 后 即 可 创 建 DNS 区 域 , 包 含 下 列 RR:<br />

_LDAP._tcp SRV 5 25 220 192.0.2.4.<br />

让 站 点 example.com 上 的 客 户 LDAP 执 行 SRV 192.0.2.4 查 询 。<br />

添 加 多 条 记 录<br />

下 列 请 求 数 据 包 从 样 本 一 次 添 加 所 有 记 录 :<br />

<br />

<br />

<br />

NS<br />

<br />

ns.&lt;domain&gt;<br />

<br />

<br />

NS<br />

<br />

provider-dns-server.example.com<br />

<br />

<br />

A<br />

mail<br />

&lt;ip&gt;<br />

<br />


通 过 远 程 API 设 置 87<br />

CNAME<br />

www<br />

ns.&lt;domain&gt;<br />

<br />

<br />

MX<br />

<br />

exchange.&lt;domain&gt;<br />

0<br />

<br />

<br />

PTR<br />

&lt;ip&gt;<br />

community<br />

24<br />

<br />

<br />

TXT<br />

about<br />

由 服 务 商 提 供 <br />

<br />

<br />

SRV<br />

_LDAP._tcp<br />

192.0.2.4.<br />

5 25 220<br />

<br />

<br />

<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 add_rec 节 点 结 构 如 下 :


88 通 过 远 程 API 设 置<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• id, 若 操 作 成 功 需 提 供<br />

返 回 刚 添 加 的 DNS 记 录 唯 一 标 识 符 。 数 据 类 型 : 整 数 。


通 过 远 程 API 设 置 89<br />

响 应 样 本<br />

正 响 应 类 似 于 :<br />

<br />

<br />

<br />

<br />

ok<br />

17<br />

<br />

<br />

<br />

若 指 定 的 请 求 数 据 包 添 加 的 RR 值 错 误 ( 示 例 中 是 理 解 错 误 , 并 为 SRV 记 录 指 定 主 机 ), 则 返 回<br />

下 列 负 响 应 :<br />

REQUEST PACKET<br />

<br />

<br />

<br />

SRV<br />

_LDAP._tcp.ldap.domain-test-480908606.tst.<br />

192.0.2.4.<br />

5 25 220<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />

<br />

<br />

<br />

error<br />

1019<br />

指 定 的 DNS 记 录 值 错 误 。<br />

<br />

<br />

<br />


90 通 过 远 程 API 设 置<br />

检 索 DNS 区 域 模 板 相 关 信 息<br />

若 要 在 DNS 区 域 模 板 中 检 索 资 源 记 录 相 关 信 息 , 执 行 包 含 dns/get_rec 操 作 节 点 的 XML 数 据 包<br />

:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 get_rec 节 点 结 构 如 下 :


通 过 远 程 API 设 置 91<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。<br />

• status, required<br />

数 据 类 型 :resultType (common.xsd).<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• id, 若 操 作 成 功 需 提 供<br />

返 回 DNS 记 录 唯 一 标 识 符 。 数 据 类 型 : 整 数 。<br />

• data, 若 操 作 成 功 需 提 供<br />

资 源 记 录 数 据 。<br />

• type, required<br />

指 定 DNS 记 录 类 型 。 数 据 类 型 : 字 符 串 。<br />

允 许 的 值 :A | NS | CNAME | MX | PTR | TXT | SOA | AXFR | SRV.<br />

• host, required<br />

指 定 DNS 所 用 的 主 机 名 。 数 据 类 型 : 字 符 串 。<br />

• value, required<br />

指 定 即 将 链 接 host 值 的 值 。 数 据 类 型 : 字 符 串 。<br />

站 点 创 建 后 即 创 建 DNS 区 域 文 件 , 占 位 符 或 会 被 真 实 IP 地 址 / 主 机<br />

名 替 换 。<br />

• opt, optional<br />

持 有 DNS 记 录 可 选 信 息 。 数 据 类 型 : 字 符 串 。


92 通 过 远 程 API 设 置<br />

响 应 样 本<br />

若 DNS 区 域 模 板 不 包 含 一 条 资 源 记 录 , 返 回 下 列 响 应 :<br />

REQUEST PACKET<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />

<br />

<br />

<br />

<br />

下 列 响 应 包 含 <strong>Panel</strong> 默 认 DNS 区 域 模 板 描 述 :<br />

REQUEST PACKET<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />

<br />

<br />

<br />

ok<br />

1<br />

<br />

NS<br />

&lt;domain&gt;.<br />

ns.&lt;domain&gt;.<br />

<br />

<br />

<br />

<br />

ok<br />

2<br />

<br />

A<br />

ns.&lt;domain&gt;.<br />

&lt;ip&gt;<br />

<br />


<br />

ok<br />

3<br />

<br />

A<br />

&lt;domain&gt;.<br />

&lt;ip&gt;<br />

<br />

<br />

<br />

<br />

ok<br />

4<br />

<br />

A<br />

webmail.&lt;domain&gt;.<br />

&lt;ip&gt;<br />

<br />

<br />

<br />

<br />

ok<br />

5<br />

<br />

MX<br />

&lt;domain&gt;.<br />

mail.&lt;domain&gt;.<br />

10<br />

<br />

<br />

<br />

ok<br />

6<br />

<br />

A<br />

mail.&lt;domain&gt;.<br />

&lt;ip&gt;<br />

<br />

<br />

<br />

<br />

ok<br />

7<br />

<br />

CNAME<br />

ftp.&lt;domain&gt;.<br />

&lt;domain&gt;.<br />

<br />

<br />

<br />

<br />

ok<br />

8<br />

<br />

PTR<br />

&lt;ip&gt; / 24<br />

&lt;domain&gt;.<br />

24<br />

<br />

通 过 远 程 API 设 置 93


94 通 过 远 程 API 设 置<br />

<br />

<br />

<br />

<br />

删 除 RR 模 板<br />

若 要 从 DNS 区 域 模 板 删 除 RR, 执 行 包 含 dns/del_rec 操 作 节 点 的 XML 数 据 包 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

请 求 数 据 包 结 构<br />

删 除 DNS 记 录 的 请 求 XML 数 据 包 , 包 括 del_rec 操 作 模 式 , 结 构 如 下 :<br />

• filter, required<br />

指 定 过 滤 规 则 。 数 据 类 型 :dnsSelectionFilterType (dns_input.xsd).<br />

若 留 空 (), 则 会 删 除 所 有 记 录 模 板 。<br />

• id, optional<br />

指 定 要 删 除 资 源 记 录 模 板 的 ID。 数 据 类 型 :id_type (common.xsd).<br />

• template, required<br />

指 定 要 删 除 的 记 录 模 板 。 数 据 类 型 : 无 。


通 过 远 程 API 设 置 95<br />

请 求 样 本<br />

此 请 求 数 据 包 从 DNS 区 域 模 板 删 除 记 录 ID 7。<br />

<br />

<br />

<br />

<br />

7<br />

<br />

<br />

<br />

<br />

<br />

此 请 求 数 据 包 从 DNS 区 域 模 板 删 除 记 录 ID 1-5。<br />

<br />

<br />

<br />

<br />

1<br />

2<br />

3<br />

4<br />

5<br />

<br />

<br />

<br />

<br />

<br />

此 数 据 包 从 DNS 区 域 模 板 删 除 所 有 记 录 :<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />


96 通 过 远 程 API 设 置<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 del_rec 节 点 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• id, 若 操 作 成 功 需 提 供<br />

返 回 DNS 记 录 删 除 的 唯 一 标 识 符 。 数 据 类 型 : 整 数 。


通 过 远 程 API 设 置 97<br />

响 应 样 本<br />

从 服 务 器 返 回 的 正 响 应 如 下 ( 成 功 删 除 所 有 DNS 区 域 模 板 记 录 ):<br />

REQUEST PACKET<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />

<br />

<br />

<br />

ok<br />

1<br />

<br />

<br />

ok<br />

2<br />

<br />

<br />

ok<br />

3<br />

<br />

<br />

ok<br />

4<br />

<br />

<br />

ok<br />

5<br />

<br />

<br />

ok<br />

6<br />

<br />

<br />

ok<br />

7<br />

<br />

<br />

ok<br />

8<br />

<br />

<br />

ok<br />

9<br />

<br />

<br />

ok


98 通 过 远 程 API 设 置<br />

10<br />

<br />

<br />

ok<br />

11<br />

<br />

<br />

ok<br />

12<br />

<br />

<br />

<br />

<br />

若 指 定 要 删 除 记 录 簿 存 在 , 则 返 回 负 响 应 :<br />

REQUEST PACKET<br />

<br />

<br />

<br />

<br />

1<br />

2<br />

3<br />

4<br />

5<br />

<br />

<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />

<br />

<br />

<br />

error<br />

1013<br />

指 定 的 DNS 记 录 不 存 在 。<br />

1<br />

<br />

<br />

error<br />

1013<br />

指 定 的 DNS 记 录 不 存 在 。<br />

2<br />

<br />

<br />

error<br />

1013<br />

指 定 的 DNS 记 录 不 存 在 。<br />

3<br />

<br />

<br />

error<br />

1013<br />

指 定 的 DNS 记 录 不 存 在 。


通 过 远 程 API 设 置 99<br />

4<br />

<br />

<br />

error<br />

1013<br />

指 定 的 DNS 记 录 不 存 在 。<br />

5<br />

<br />

<br />

<br />

<br />

安 装 SSL 证 书<br />

若 要 安 装 SSL 证 书 , 执 行 包 含 certificate/install 操 作 节 点 的 XML 请 求 数 据 包 :<br />

<br />

< 证 书 ><br />

<br />

…<br />

<br />

<br />

<br />

请 求 数 据 包 结 构<br />

请 求 XML 数 据 包 的 安 装 节 点 结 构 如 下 :


100 通 过 远 程 API 设 置<br />

• name, required<br />

指 定 证 书 要 在 <strong>Panel</strong> 中 显 示 的 名 称 。 数 据 类 型 : 字 符 串 。<br />

• admin, required<br />

指 定 要 导 入 到 服 务 器 库 的 证 书 。 数 据 类 型 : 无 。<br />

• content, required<br />

包 含 证 书 相 关 所 有 数 据 。 数 据 类 型 : 无 。<br />

• csr, required<br />

指 定 证 书 CSR ( 证 书 签 署 请 求 )。 数 据 类 型 : 字 符 串 。<br />

• pvt, required<br />

指 定 证 书 密 钥 。 数 据 类 型 : 字 符 串 。<br />

• cert, optional<br />

包 含 证 书 内 容 。 数 据 类 型 : 字 符 串 。<br />

• ca, optional<br />

包 含 证 书 授 权 内 容 。 数 据 类 型 : 字 符 串 。<br />

• ip_address, required<br />

指 定 证 书 要 分 配 到 的 IP 地 址 。 数 据 类 型 :ip_type (common.xsd).


通 过 远 程 API 设 置 101<br />

请 求 样 本<br />

此 数 据 库 安 装 要 显 示 在 <strong>Panel</strong> 中 的 CA 证 书 , 名 称 common, 并 分 配 到 IP 地 址 192.0.2.14。<br />

<br />

< 证 书 ><br />

<br />

common<br />

<br />

<br />

-----BEGIN CERTIFICATE REQUEST-----<br />

MIICwTCCAakCAQAwfDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB2dlb3JnaWExEDAO<br />

BgNVBAcTB0F0bGFudGExEjAQBgNVBAoTCURvZSwgTHRkLjEUMBIGA1UEAxMLam9o<br />

bmRvZS5vcmcxHzAdBgkqhkiG9w0BCQEWEGpkb2VAam9obmRvZS5vcmcwggEiMA0G<br />

CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7AQlX0pXqCs61ZUZ28zJ9PAG0yxvV<br />

2pJnJTMqrudyi/3vV8IZrBUUWMthf7tQmMSSyZWAqM+7n4Q9Y4f5WuR+3ReM5kxC<br />

hbQnOrjpdUmv1+ZhB9Q21UFA5eEptyDM/LR2JAjpKJD078rh76pVZm3EsJMl3+UE<br />

3Dg0DeKDelDKa4SYzW1JJnoen4UXX37lIHdBnIj+NCQbHRSiGD6w6mMyiCMOzXCp<br />

SBiGXgRRcaOVl50OeAdVKkwpJaae1K7K3q9j/LkAlOa1C8kuwdaCtKC+jFCE72I0<br />

Q8TnIn7ahPy0yd2EgzZ42Ys8D3PziqGax8I/e6BbEOfzi0n1HD9GCzaPAgMBAAGg<br />

ADANBgkqhkiG9w0BAQQFAAOCAQEAhoSVmInXLQDJu8jrZTVvFUx6O6aHOUkUf/G8<br />

Wnc2x7w+Qo7XHMHVDCUcP3K+bEw9oKxfpvRXP9XTVhX2jABHrxywLyjg4cXwaUgR<br />

t7ULvpLQ0Sum5XNtBypAdSQZZ7ktAa6Q3OMAFNdY8YG9J/L2zlcL9JJZLAUnRWzN<br />

fMBn9Ip3pCC8N9OF9+PFpxGvhtlc1O27w9wj0RdK3hF6Rg37qcUJSnn6XxOB41Q8<br />

ZZbX2Vbskz0WJ1IcxsfWDJ/HFdho7GrrD/wujNpwkTPc3xe2AHcfQX8c/92xyra/<br />

kdzxsDdFD7IwA5bBWGm8QwlL9yWuDPiZ8vSGw96D/Qije9UVkA==<br />

-----END CERTIFICATE REQUEST-----<br />

-----BEGIN RSA PRIVATE KEY-----<br />

MIIEpQIBAAKCAQEAyxfczy4HqgwOI6yxEa+dLaMLe5zC0ijcawsha8oFtJlxv/DM<br />

9INpdKjv9HaInrR0StjG9HgqTpYrhOCJxeB07/gGsQ82xsvbcKANuCSQKInpwVim<br />

GUsisGNrfnbKIoAewN21ENCZQrufcQNWNzTx/GjVCXqa/Sy4pXJ6Jud0dzA/+Vis<br />

SBw5Oo4IqI2MDvuoDk+exQLdgM45Vgq4d3A9+ESzmRmjmdovhNxnXdvMxA5RSrF+<br />

GZlBTFftsLQsnfnNiMR6ZTFgNCt2vdDmUAV9iix2B1PuoH94TRCJRG5tVCFtfVzS<br />

Rjo4ZzoiUs57efb3Oe56Lb64Ubi9ZRzNhdkGLwIDAQABAoIBABJdOAQr31mK+YRU<br />

SzaUMJw9z/3/cMZcF4I+YWlDvTxVW6nFdmLttw1rcTcjuLrRCmryKxtT+k9c2NaN<br />

DygrYaeJP+GmxIc5S8BlWJg8BiUEQ3TONUa4OozEkKXAzApOl3lNEuBQXGtiV8p6<br />

SMN5MCBowkq3IWifMJsVPOJjr25Pby04HCPeeM+cnEiPnMrBjK4OGH8/pKqedf05<br />

EcjnFKGFP2G0BUEhLX7ooMhB+AbjoIbGFXlBIzhaofs8zzSjNkKJ9i4LQMEe0GDf<br />

zCgE4GehW+FdcUlhG1zO7FOJc0LdVUR4deoMzaiNRIwdWxbokVwgSEnM20yXYdCl<br />

t+dsREECgYEA+sNPkzdQC0vF6me6WO8EqMu6AbPjObKnw0i8+g8ndRkMcJQ8FEXD<br />

+D447fCMORUdqGFH8aMWDp392z4JX3+ksSN9XtyEEKB3fsknENsDZKVJvh9U+gUD<br />

DO12mC1PleQBHBjN7Wlsg4mPZNv3cxUQLhFU0qW/moQdy0JrDfv+51ECgYEAz1Ww<br />

OJolOjKhPkGxiDY9sh95E/rpuwkGjb0qiS/UFHHuLc9pDYHyKRpPggdT4nEuBz34<br />

cRpihMgxBKEzuXGEPvdIST0aObOwcqfY4HAJ8PS08rZupCJsk413gYeI/ckXacQK<br />

bYYHLKSEavrcmMFc98i2fmbbNp+ckeLHfzVYtX8CgYEAyP6X39YsEIHRx4sQ8IvU<br />

3j89fnPjo7GxinPZFU3kQJWtROdsKIurAmVNWFrA6lgkh3xCIEqqOVklyv+0n5k+<br />

NsXNjaWPLYyRe0xcRcRmudtKelu+zxAJW+lSb7OR4QD6arzvAmbIFb7C8wLlGpc9<br />

es9lf9pe88kF4JACIxljPaECgYEAj4sWtwlZbsJwygZ3YAOVkUWi8QdNXLVx+R2X<br />

XmVjokgCi2rGo5hszLIvi6mBFQwgvtjTsZJ/1Mg4z6i/g8sosONJA5OvHXXfWnIE<br />

f9Zxu4Xf5Q4S6cX/f+R4cZAhcvsPH6WfRpZ9TxYTq3FE2uk8cTxfxIF3kYjNwF7O<br />

ma6YXQcCgYEApqdVVr92YSYZuDTKYGN5Rd5BaJSGPYWpShS5lPKBQ4n/TkSZzO1v<br />

Bxq2AbPRohXasWEAdfgfss1mcwX9xnKO/DhnxXE8KVFXKVehGmUth0WqA5qtL4xD<br />

h4hm3V7DcMqYbVzpmlWXFz5Is1fIflAhlfeX4h3s1rirTj+T6hODVf4=<br />

-----END RSA PRIVATE KEY-----<br />

-----BEGIN CERTIFICATE-----<br />

MIIDiTCCAnECBETUDecwDQYJKoZIhvcNAQEEBQAwgYgxCzAJBgNVBAYTAlJVMQww<br />

CgYDVQQIEwNOU08xDDAKBgNVBAcTA05TSzEUMBIGA1UEChMLRGFtYWdlIEluYy4x<br />

CzAJBgNVBAsTAlFBMRcwFQYDVQQDEw53d3cuc3dzb2Z0LmNvbTEhMB8GCSqGSIb3


102 通 过 远 程 API 设 置<br />

DQEJARYScmJ1c3lndWluQHBsZXNrLnJ1MB4XDTA2MDgwNTAzMTgwMVoXDTA3MDgw<br />

NTAzMTgwMVowgYgxCzAJBgNVBAYTAlJVMQwwCgYDVQQIEwNOU08xDDAKBgNVBAcT<br />

A05TSzEUMBIGA1UEChMLRGFtYWdlIEluYy4xCzAJBgNVBAsTAlFBMRcwFQYDVQQD<br />

Ew53d3cuc3dzb2Z0LmNvbTEhMB8GCSqGSIb3DQEJARYScmJ1c3lndWluQHBsZXNr<br />

LnJ1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyxfczy4HqgwOI6yx<br />

Ea+dLaMLe5zC0ijcawsha8oFtJlxv/DM9INpdKjv9HaInrR0StjG9HgqTpYrhOCJ<br />

xeB07/gGsQ82xsvbcKANuCSQKInpwVimGUsisGNrfnbKIoAewN21ENCZQrufcQNW<br />

NzTx/GjVCXqa/Sy4pXJ6Jud0dzA/+VisSBw5Oo4IqI2MDvuoDk+exQLdgM45Vgq4<br />

d3A9+ESzmRmjmdovhNxnXdvMxA5RSrF+GZlBTFftsLQsnfnNiMR6ZTFgNCt2vdDm<br />

UAV9iix2B1PuoH94TRCJRG5tVCFtfVzSRjo4ZzoiUs57efb3Oe56Lb64Ubi9ZRzN<br />

hdkGLwIDAQABMA0GCSqGSIb3DQEBBAUAA4IBAQBH8mTX3Q3csBUjzwfy3kIVobgh<br />

yElljOQ87Qv5rht5yktuTyS3oGXsDD0sO/uSG/akL34CTPkjl/vqYtzKMsfQ5pXY<br />

MlY6Q+GCd9FgL5pBn1S8HSZLpTBWZc25mNe3mXbCQzI03r4W+dQajAgAgDKpnRjg<br />

mblRg98+HwOL033pVgUnRwPoS3LO5jia5z3F0MkS8sV3x18DuoSLeVILhj0ttZ/p<br />

B7x0kIUee8A95Q00EDh+4IaPSMOqiFrVIlsHEuPV33aCAz2Dk2TxzplsoNz61BFA<br />

i3Cm04Gz1h9W/yzkcYCqiwUMIzSgUSBLn0hBeTid1u/NaDtic776YGuyaI+/<br />

-----END CERTIFICATE-----<br />

<br />

-----BEGIN CERTIFICATE-----<br />

MIIEjDCCA3SgAwIBAgIJAL4AGzKhkL5wMA0GCSqGSIb3DQEBBQUAMIGKMQswCQYD<br />

VQQGEwJSVTELMAkGA1UECBMCTlYxFDASBgNVBAcTC05vdm9zaWJpcnNrMRIwEAYD<br />

VQQKEwlQYXJhbGxlbHMxDjAMBgNVBAsTBVBsZXNrMQ0wCwYDVQQDEwRhYmVsMSUw<br />

IwYJKoZIhvcNAQkBFhZhYmVseWFldkBwYXJhbGxlbHMuY29tMB4XDTA5MDQyODAz<br />

NDMxMloXDTEwMDQyODAzNDMxMlowgYoxCzAJBgNVBAYTAlJVMQswCQYDVQQIEwJO<br />

VjEUMBIGA1UEBxMLTm92b3NpYmlyc2sxEjAQBgNVBAoTCVBhcmFsbGVsczEOMAwG<br />

A1UECxMFUGxlc2sxDTALBgNVBAMTBGFiZWwxJTAjBgkqhkiG9w0BCQEWFmFiZWx5<br />

YWV2QHBhcmFsbGVscy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB<br />

AQDlslx5nXTQTvoic3GgW4HH5n5PoCz95Z9XNtCykwv0M2HdhMeNvde1NYDvkipa<br />

FHzVPEH7eBgjAsHR4y1J4zVGAs2KiJF0W81vi5YAVMOJ7Ysyz8WLP0PQWTmUoMFM<br />

aE0P7m788tphL328chdPJTjlCF6w9FKzddzrvdeK04ojp2cRO6fFMH7WJPcajvh/<br />

3EuYpc7xBNC6Wf8Gk6tB5kCCe7wpHyXsc7ve97nn30p6rUXypBNHYmLujMCtS90I<br />

K2xOCaSsCwkeUQ4mpXrr5lK7yM07b322vNZBiMTHV8DnaOWDPIcEIFl8NmOJovub<br />

dG5wdXopA6seCQLaf95lvULrAgMBAAGjgfIwge8wHQYDVR0OBBYEFLSg4V0zc0i0<br />

pRFtcygaiTgz5ikCMIG/BgNVHSMEgbcwgbSAFLSg4V0zc0i0pRFtcygaiTgz5ikC<br />

oYGQpIGNMIGKMQswCQYDVQQGEwJSVTELMAkGA1UECBMCTlYxFDASBgNVBAcTC05v<br />

dm9zaWJpcnNrMRIwEAYDVQQKEwlQYXJhbGxlbHMxDjAMBgNVBAsTBVBsZXNrMQ0w<br />

CwYDVQQDEwRhYmVsMSUwIwYJKoZIhvcNAQkBFhZhYmVseWFldkBwYXJhbGxlbHMu<br />

Y29tggkAvgAbMqGQvnAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA<br />

dEkV4DZMr7Rp0dlYqDpdviGu7FE+7R5u87Mz3E9cTApycbg4KTZAS53B3ItsAQv2<br />

yjXnkTQw2/l5XusW+OxhGpWC0z58jScyqNW/HkvheUrgbylIOOaKs9vAayi3mA0T<br />

O1cB1vnAgmB8puV6IdEKuvUimgbJhiGIpqTiL+2/YgSnkGhRuYlxuFB6U8WPgrUN<br />

UMt0linQtUsxMJCghMA3T8cODGon4ugZ0cCJmDfpkStI3jUuoxulSX2I8xmUQtGe<br />

2Q/sUQaWgJhe4RDoth6w7E9GE8733WGhC1mIjxyJMx4vmu4ofLAwN6XUzJJ3eC7s<br />

P34vOGq/sqxG/U+BbUu71A==<br />

-----END CERTIFICATE-----<br />

<br />

<br />

192.0.2.14<br />

<br />

<br />


通 过 远 程 API 设 置 103<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 install 节 点 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 :unsignedInt.<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。


104 通 过 远 程 API 设 置<br />

响 应 样 本<br />

正 响 应 类 似 于 :<br />

<br />

< 证 书 ><br />

<br />

<br />

ok<br />

<br />

<br />

<br />

<br />

服 务 器 负 响 应 类 似 于 :<br />

<br />

< 证 书 ><br />

<br />

<br />

error<br />

8002<br />

Unable to set csr content to certificate :CSR 字 段 包 含 错 误 值 :<br />

openssl 失 败 :<br />

<br />

<br />

<br />

<br />

<br />

< 证 书 ><br />

<br />

<br />

error<br />

8006<br />

Unable to set certificate name :<br />

<br />

<br />

<br />


通 过 远 程 API 设 置 105<br />

创 建 站 点<br />

若 要 创 建 站 点 帐 户 , 执 行 包 含 domain/add 操 作 节 点 的 XML 请 求 数 据 包 :<br />

<br />

<br />

<br />

…<br />

<br />

<br />

<br />

请 求 数 据 包 结 构<br />

创 建 站 点 帐 户 的 请 求 XML 数 据 包 , 包 括 domain/add 操 作 模 式 , 结 构 如 下 :


106 通 过 远 程 API 设 置<br />

• gen_setup, required<br />

站 点 帐 户 重 要 信 息 。 数 据 类 型 : 无 。<br />

• name, required<br />

指 定 站 点 名 称 。 数 据 类 型 :domainName (plesk_domain.xsd).<br />

• ip_address, required<br />

指 定 托 管 站 点 的 IP。 数 据 类 型 :ip_address (common.xsd).<br />

• hosting, required<br />

指 定 站 点 主 机 设 置 。 数 据 类 型 :domainHostingAgentSet (plesk_domain.xsd).<br />

• vrt_hst, required<br />

指 定 站 点 主 机 设 置 。 数 据 类 型 :domainPhHostingSet (plesk_domain.xsd).<br />

结 构 如 下 :<br />

• property, required<br />

指 定 主 机 参 数 。 数 据 类 型 :PleskPhysHostingPropertyType (plesk_domain.xsd).<br />

• name, required<br />

指 定 主 机 参 数 名 。 数 据 类 型 : 字 符 串 。<br />

• value, required<br />

指 定 主 机 参 数 值 。 数 据 类 型 : 任 何 。<br />

• ip_address, required<br />

指 定 站 点 IP 地 址 。 数 据 类 型 :ip_address (common.xsd).


通 过 远 程 API 设 置 107<br />

请 求 样 本<br />

此 请 求 创 建 站 点 example.com, 托 管 在 IP 192.0.2.48。<br />

<br />

<br />

<br />

<br />

example.com<br />

192.0.2.48<br />

<br />

<br />

<br />

<br />

ftp_login<br />

fp16se4fdf0<br />

<br />

<br />

ftp_password<br />

qweqwe<br />

<br />

192.0.2.48<br />

<br />

<br />

<br />

<br />

<br />

响 应 数 据 包 结 构<br />

输 出 响 应 数 据 包 的 add 节 点 结 构 如 下 :


108 通 过 远 程 API 设 置<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• id, 若 操 作 成 功 需 提 供<br />

返 回 刚 添 加 的 站 点 帐 户 唯 一 标 识 符 。 数 据 类 型 : 整 数 。<br />

• guid, 若 操 作 成 功 需 提 供<br />

返 回 刚 添 加 的 站 点 帐 户 全 局 唯 一 标 识 符 。 数 据 类 型 : 字 符 串 。


通 过 远 程 API 设 置 109<br />

响 应 样 本<br />

添 加 新 站 点 帐 户 后 , 从 服 务 器 返 回 正 响 应 , 类 似 于 :<br />

<br />

<br />

<br />

<br />

ok<br />

6<br />

5c0e3881-22a2-4401-bcc0-881d691bfdef<br />

<br />

<br />

<br />

<br />

负 响 应 类 似 于 ( 取 决 于 错 误 类 型 返 回 不 同 的 错 误 码 ):<br />

<br />

<br />

<br />

<br />

error<br />

1023<br />

Operation failed.<br />

<br />

<br />

<br />

<br />

若 未 指 定 所 需 的 主 机 设 置 , 则 会 返 回 此 类 负 响 应 :<br />

REQUEST PACKET<br />

<br />

<br />

<br />

<br />

sample.com<br />

10.53.129.101<br />

<br />

<br />

<br />

<br />

ftp_password<br />

fp16sdfdfrttg0<br />

<br />

10.53.129.101<br />

<br />

<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />


110 通 过 远 程 API 设 置<br />

<br />

<br />

error<br />

2204<br />

无 法 更 新 主 机 首 选 项 。 系 统 用 户 更 新 失 败 : 无 法 检 查 系 统 用 户 是 否 存 在 : 登 录 名<br />

为 空 。 错 误 字 段 :"login".<br />

<br />

<br />

<br />

<br />

创 建 子 站 点<br />

若 要 创 建 子 站 点 帐 户 , 执 行 包 含 subdomain/add 操 作 节 点 的 XML 请 求 数 据 包 :<br />

<br />

< 子 站 点 ><br />

<br />

…<br />

<br />

<br />

<br />

请 求 数 据 包 结 构<br />

添 加 新 子 站 点 的 请 求 XML 数 据 包 , 包 括 subdomain/add 操 作 模 式 , 结 构 如 下 :


通 过 远 程 API 设 置 111<br />

• parent, required<br />

指 定 要 创 建 站 点 / 子 站 点 的 子 站 点 名 称 。(Windows 仅 支 持 主 要 子 站 点 。) 数 据 类 型 : 字 符 串 。<br />

• name, required<br />

指 定 子 站 点 名 称 。 数 据 类 型 : 字 符 串 。<br />

• home, required 若 在 子 文 件 夹 中 创 建 子 站 点 ( 仅 限 Windows)<br />

指 定 子 站 点 主 目 录 路 径 。 数 据 类 型 : 字 符 串 。<br />

若 留 空 (), 则 会 使 用 主 要 站 点 根 目 录 。<br />

• property, optional<br />

指 定 所 创 建 子 站 点 的 主 机 设 置 。 数 据 类 型 :SubdomainPropertyType<br />

(subdomain.xsd).<br />

• name, required<br />

指 定 主 机 参 数 名 。 数 据 类 型 : 字 符 串 。<br />

• value, required<br />

指 定 主 机 参 数 值 。 数 据 类 型 : 任 何 。


112 通 过 远 程 API 设 置<br />

请 求 样 本<br />

此 数 据 包 创 建 子 站 点 forum.example.com:<br />

<br />

< 子 站 点 ><br />

<br />

example.com<br />

forum<br />

<br />

ftp_login<br />

john<br />

<br />

<br />

ftp_password<br />

sample<br />

<br />

<br />

<br />

<br />

在 子 文 件 夹 中 创 建 子 站 点<br />

此 数 据 包 在 子 文 件 夹 /httpdocs/BlogEngine 中 创 建 子 站 点 blog.example.com<br />

<br />

< 子 站 点 ><br />

<br />

example.com<br />

blog<br />

/httpdocs/BlogEngine<br />

<br />

<br />


通 过 远 程 API 设 置 113<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 add 节 点 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• id, 若 操 作 成 功 需 提 供<br />

• 返 回 所 创 建 子 站 点 的 唯 一 标 识 符 。 数 据 类 型 :id_type (common.xsd).<br />

特 定 操 作 错 误<br />

• 1007 - 同 名 子 站 点 已 存 在 。<br />

• 1015 - 未 找 到 主 站 点 / 子 站 点 。<br />

• 1019 - 指 定 的 属 性 无 效 。<br />

• 1023 - 操 作 失 败 。


114 通 过 远 程 API 设 置<br />

响 应 样 本<br />

创 建 子 站 点 后 , 从 服 务 器 接 收 到 的 正 响 应 如 下 :<br />

<br />

< 子 站 点 ><br />

<br />

<br />

ok<br />

1<br />

<br />

<br />

<br />

<br />

若 指 定 的 子 站 点 已 存 在 , 返 回 此 类 负 响 应 :<br />

REQUEST PACKET<br />

<br />

< 子 站 点 ><br />

<br />

example.com<br />

blog<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />

< 子 站 点 ><br />

<br />

<br />

error<br />

1007<br />

同 名 子 站 点 已 存 在 。<br />

<br />

<br />

<br />


通 过 远 程 API 设 置 115<br />

定 义 可 用 的 APS 目 录<br />

若 要 导 出 APS 目 录 自 定 义 列 表 ( 配 置 文 件 ) 到 <strong>Panel</strong>, 执 行 包 含 aps/import-config 操 作 节 点 的<br />

XML 请 求 数 据 包 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

配 置 文 件 ( 第 37 页 ) 应 先 通 过 上 传 运 算 子 ( 第 118 页 ) 上 传 到 服 务 器 。<br />

请 求 数 据 包 结 构<br />

请 求 数 据 包 的 import-config 节 点 结 构 如 下 :<br />

• filename, required<br />

请 求 样 本<br />

指 定 上 传 到 服 务 器 的 配 置 文 件 名 称 。 数 据 类 型 : 字 符 串 。<br />

值 上 传 响 应 ( 第 124 页 ) 是 中 的 临 时 文 件 名 ( 位 于 "upload/result/file" 元 素 )。<br />

上 传 到 服 务 器 之 前 导 入 APS 目 录 配 置 的 请 求 数 据 包 , 类 似 于 :<br />

在 Linux/Unix 中 :<br />

<br />

<br />

<br />

/usr/local/psa/tmp/li_8FZruf<br />

<br />

<br />

<br />

在 Windows 中 :<br />

<br />

<br />

<br />

"C:/Program Files/<strong>Parallels</strong>/Plesk/tmp/li_9D.tmp"<br />

<br />

<br />


116 通 过 远 程 API 设 置<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 import-config 节 点 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。


通 过 远 程 API 设 置 117<br />

响 应 样 本<br />

从 服 务 器 接 收 到 的 正 响 应 如 下 :<br />

<br />

<br />

<br />

<br />

ok<br />

<br />

<br />

<br />

<br />

若 未 找 到 所 需 文 件 , 则 返 回 此 类 负 响 应 :<br />

<br />

<br />

<br />

<br />

error<br />

1013<br />

File "/usr/local/psa/tmp/li_8FZruf" does not exist<br />

<br />

<br />

<br />

<br />

若 请 求 的 文 件 访 问 权 限 错 误 , 则 返 回 此 类 负 响 应 ( 未 使 用 上 传 代 理 上 传 ):<br />

<br />

<br />

<br />

<br />

error<br />

1023<br />

无 法 使 用 指 定 文 件 作 为 配 置 文 件 <br />

<br />

<br />

<br />

<br />

安 装 应 用 程 序<br />

若 要 在 站 点 和 子 站 点 上 安 装 应 用 程 序 , 使 用 aps 运 算 子 。


118 通 过 远 程 API 设 置<br />

导 入 应 用 程 序 包<br />

将 文 件 上 传 到 服 务 器<br />

若 要 上 传 文 件 到 <strong>Panel</strong> 管 理 的 服 务 器 , 使 用 上 传 运 算 子 。 不 同 于 其 他 操 作 , 上 传 运 算 子 不 使 用<br />

标 准 请 求 数 据 包 结 构 。 而 是 使 用 发 布 方 式<br />

(http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html) 来 上 传 文 件 。<br />

当 <strong>Panel</strong> 处 理 请 求 时 , 响 应 包 含 在 常 规 响 应 XML 数 据 包 中 。 上 传 文 件 到 <strong>Panel</strong> 后 , 则 可 用 于 其<br />

他 操 作 。<br />

注 意 : 也 可 使 用 FTP 管 理 器 上 传 文 件 , 注 意 对 文 件 进 行 API RPC 操 作 可 能 会 出 现 权 限 问 题 。<br />

建 议 使 用 上 传 运 算 子 。<br />

使 用 cURL 上 传 文 件<br />

步 骤 如 下 :<br />

1. 创 建 到 服 务 器 的 SSH 连 线 。<br />

2. 在 Unix shell 中 键 入 下 列 字 符 串 :<br />

curl -k -F myfile=@install.log -H 'HTTP_AUTH_LOGIN:admin' -H<br />

'HTTP_AUTH_PASSWD:password' https://panel-ip:8443/enterprise/control/agent.<br />

php<br />

参 数<br />

curl<br />

-k<br />

指 定 要 用 的 cURL (http://curl.haxx.se/)。 需 安 装 到 Unix 机 器 。<br />

使 用 SSL 连 线 。<br />

-F myfile=@install.log<br />

install.log 文 件 已 上 传 。 可 在 单 个 数 据 包 中 上 传 多 个 文 件 。<br />

-H 'HTTP_AUTH_LOGIN:admin'<br />

指 定 <strong>Panel</strong> 管 理 员 登 录 名 。 使 用 <strong>Panel</strong> 登 录 名 替 换 管 理 值 。<br />

-H 'HTTP_AUTH_PASSWD:password'<br />

指 定 默 认 管 理 员 的 密 码 。 使 用 <strong>Panel</strong> 访 问 密 码 替 换 密 码 值 。<br />

https://panel-ip:8443/enterprise/control/agent.php<br />

指 定 <strong>Panel</strong> 服 务 器 地 址 。 使 用 服 务 器 IP 地 址 替 换 值 。<br />

3. 按 下 ENTER。


通 过 远 程 API 设 置 119<br />

使 用 PHP 上 传 文 件<br />

此 为 使 用 PHP 脚 本 上 传 文 件 到 <strong>Panel</strong> 的 示 例 。 使 用 <strong>Panel</strong> 凭 证 更 改 HOST、LOGIN、PASSWD<br />

和 FILENAME。<br />

主 机 <strong>Panel</strong> 管 理 的 服 务 器 IP 地 址 和 名 称 。<br />

LOGIN <strong>Panel</strong> 管 理 员 登 录 名 。<br />

PASSWD <strong>Panel</strong> 管 理 员 密 码 。<br />

FILENAME 要 上 传 的 文 件 全 名 。<br />

"@$filename"));<br />

$result = curl_exec($ch);<br />

if (curl_errno($ch)) {<br />

echo "\n\n-------------------------\n" .<br />

"cURL error number:".<br />

curl_errno($ch);


120 通 过 远 程 API 设 置<br />

echo "\n\ncURL error:". curl_error($ch);<br />

}<br />

curl_close($ch);<br />

//fclose($fp);<br />

return;<br />

}<br />

uploadFile(realpath(FILENAME));<br />

>


通 过 远 程 API 设 置 121<br />

使 用 .NET 上 传 文 件<br />

此 .NET 源 代 码 上 传 文 件 到 <strong>Panel</strong>。 使 用 <strong>Panel</strong> 实 例 参 数 替 换 变 量 Hostname、Login、<br />

Password 和 Protocol。 使 用 要 上 传 的 文 件 全 名 替 换 Filename 变 量 。<br />

Filename 要 上 传 的 文 件 全 名 。<br />

主 机 名 <strong>Panel</strong> 管 理 的 服 务 器 IP 地 址 和 名 称 。<br />

登 录 <strong>Panel</strong> 管 理 员 登 录 名 。<br />

密 码 <strong>Panel</strong> 管 理 员 密 码 。<br />

Protocol API RPC 协 议 版 本 。<br />

使 用 系 统 ;<br />

使 用 System.Net;<br />

使 用 System.Text;<br />

使 用 System.IO;<br />

使 用 System.Xml;<br />

使 用 System.Xml.Schema;<br />

使 用 System.Security.Cryptography.X509Certificates;<br />

使 用 System.Net.Security;<br />

namespace ConsoleApplication1<br />

{<br />

public class Request<br />

{<br />

// Public interface<br />

//<br />

public string Filename = "./tmp/myfile.sh"; // Upload file name;<br />

public string Hostname = "localhost"; // The <strong>Panel</strong>'s host name<br />

public string Login = "admin";<br />

// Administrator Login<br />

public string Password = "setup"; // Administrator Password<br />

public string Protocol = "1.6.2.0"; // API RPC Version Protocol.<br />

// Handler for receiving information about document type definition (DTD),<br />

// XML-Data Reduced (XDR) schema, and XML Schema definition language (XSD)<br />

schema validation errors.<br />

public ValidationEventHandler XmlSchemaValidation = null;<br />

public Request()<br />

{<br />

}<br />

public string AgentEntryPoint { get { return "https://" + Hostname +<br />

":8443/enterprise/control/agent.php"; } }<br />

public string InputValidationSchema { get { return "https://" + Hostname +<br />

":8443/schemas/rpc/" + Protocol + "/agent_input.xsd"; } }<br />

public string OutputValidationSchema { get { return "https://" + Hostname +<br />

":8443/schemas/rpc/" + Protocol + "/agent_output.xsd"; } }<br />

public XmlDocument UploadFile(string uploadfile)<br />

{


122 通 过 远 程 API 设 置<br />

HttpWebRequest request =<br />

(HttpWebRequest)WebRequest.Create(AgentEntryPoint);<br />

string boundary = "----------" + DateTime.Now.Ticks.ToString("x");<br />

request.Headers.Add("HTTP_AUTH_LOGIN",<br />

Login); request.Headers.Add("HTTP_AUTH_PASSWD",<br />

Password); request.ContentType = "multipart/form-data; boundary=" +<br />

boundary; request.Method = "POST";<br />

// Build up the post message header<br />

StringBuilder sb = new StringBuilder();<br />

sb.Append("--");<br />

sb.Append(boundary);<br />

sb.Append("\r\n");<br />

sb.Append("Content-Disposition:form-data; name=\"");<br />

sb.Append("sampfile");<br />

sb.Append("\"; filename=\"");<br />

sb.Append(Path.GetFileName(uploadfile));<br />

sb.Append("\"");<br />

sb.Append("\r\n");<br />

sb.Append("Content-Type:");<br />

sb.Append("application/octet-stream");<br />

sb.Append("\r\n");<br />

sb.Append("\r\n");<br />

string postHeader = sb.ToString();<br />

byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);<br />

// Build the trailing boundary string as a byte array<br />

// ensuring the boundary appears on a line by itself<br />

byte[] boundaryBytes =<br />

Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");<br />

FileStream fileStream = new FileStream(uploadfile,<br />

FileMode.Open, FileAccess.Read);<br />

long length = postHeaderBytes.Length + fileStream.Length +<br />

boundaryBytes.Length;<br />

request.ContentLength = length;<br />

Stream stream = request.GetRequestStream();<br />

stream.Write(postHeaderBytes, 0, postHeaderBytes.Length);<br />

// Write out the file contents<br />

byte[] buffer = new Byte[checked((uint)Math.Min(4096,<br />

(int)fileStream.Length))];<br />

int bytesRead = 0;<br />

while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)<br />

stream.Write(buffer, 0, bytesRead);<br />

// Write out the trailing boundary stream.Write(boundaryBytes, 0,<br />

boundaryBytes.Length);<br />

XmlDocument result = GetResponse(request);<br />

return result;<br />

}<br />

// Private interface<br />

//<br />

// Parsing and validating packet<br />

//<br />

private XmlDocument ParseAndValidate(TextReader xml, string schemaUri)<br />

{<br />

XmlSchemaSet schemas = new XmlSchemaSet();<br />

schemas.Add(null, schemaUri);


通 过 远 程 API 设 置 123<br />

XmlReaderSettings settings = new XmlReaderSettings();<br />

if (XmlSchemaValidation != null)<br />

settings.ValidationEventHandler += new<br />

ValidationEventHandler(XmlSchemaValidation);<br />

settings.ValidationType = ValidationType.Schema;<br />

settings.ValidationFlags |=<br />

XmlSchemaValidationFlags.ProcessSchemaLocation;<br />

settings.Schemas = schemas;<br />

XmlDocument document = new XmlDocument();<br />

using (XmlReader reader = XmlTextReader.Create(xml, settings))<br />

{<br />

document.Load(reader);<br />

}<br />

return document;<br />

}<br />

private XmlDocument GetResponse(HttpWebRequest request)<br />

{<br />

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())<br />

using (Stream stream = response.GetResponseStream())<br />

using (TextReader reader = new StreamReader(stream))<br />

{<br />

return ParseAndValidate(reader, OutputValidationSchema);<br />

}<br />

}<br />

}<br />

class Program<br />

{<br />

static void Main(string[] args)<br />

{<br />

if (args.Length < 4)<br />

{<br />

Console.WriteLine("Usage:ParalLelSpaNelapirpcclient <br />

");<br />

Console.WriteLine(" ");<br />

Console.WriteLine(" Hostname - The <strong>Panel</strong>'s host name");<br />

Console.WriteLine(" Login - Administrator login");<br />

Console.WriteLine(" Password - Administrator password");<br />

Console.WriteLine(" FileName - Upload file name");<br />

return;<br />

}<br />

// Verifies the remote Secure Sockets Layer (SSL) certificate used for<br />

authentication.<br />

ServicePointManager.ServerCertificateValidationCallback =<br />

new RemoteCertificateValidationCallback(RemoteCertificateValidation);<br />

Request request = new Request(); request.XmlSchemaValidation =<br />

XmlSchemaValidation;<br />

try<br />

{<br />

XmlDocument result = request.UploadFile(filename);<br />

PrintResult(result);<br />

}<br />

catch (Exception e)<br />

{<br />

Console.WriteLine("Request error:{0}", e.Message);<br />

}<br />

}


124 通 过 远 程 API 设 置<br />

// The following method is invoked by the<br />

RemoteCertificateValidationDelegate.<br />

private static bool RemoteCertificateValidation(object sender,<br />

X509Certificate certificate, X509Chain chain, SslPolicyErrors<br />

sslPolicyErrors)<br />

{<br />

if (sslPolicyErrors != SslPolicyErrors.RemoteCertificateNotAvailable)<br />

return true;<br />

Console.WriteLine("Certificate error:{0}", sslPolicyErrors);<br />

// Do not allow this client to communicate with unauthenticated servers.<br />

return false;<br />

}<br />

//<br />

private static void XmlSchemaValidation(object sender, ValidationEventArgs<br />

e)<br />

{<br />

Console.WriteLine("Validation error:{0}", e.Message);<br />

}<br />

static void PrintResult(XmlDocument document)<br />

{<br />

XmlTextWriter writer = new XmlTextWriter(Console.Out);<br />

writer.Formatting = Formatting.Indented;<br />

document.WriteTo(writer);<br />

writer.Flush();<br />

Console.WriteLine();<br />

}<br />

}<br />

}<br />

响 应 数 据 包 结 构<br />

上 传 输 出 XML 数 据 包 结 构 如 下 :


通 过 远 程 API 设 置 125<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• name, required<br />

指 定 上 传 文 件 名 。 数 据 类 型 : 字 符 串 。<br />

• file, required<br />

指 定 创 建 的 临 时 文 件 全 名 。 数 据 类 型 : 字 符 串 。


126 通 过 远 程 API 设 置<br />

响 应 样 本<br />

上 传 单 个 数 据 包<br />

若 请 求 代 理 上 传 li.sh 数 据 包 到 <strong>Panel</strong> 管 理 的 服 务 器 , 则 返 回 负 响 应 , 类 似 于 :<br />

<br />

<br />

<br />

ok<br />

li.sh<br />

/usr/local/psa/tmp/li_8FZruf<br />

<br />

<br />

<br />

若 上 传 的 文 件 超 出 upload_max_filesize, 在 php.ini 中 设 置 , 则 返 回 负 响 应 , 类 似 于 :<br />

<br />

<br />

<br />

error<br />

1023<br />

上 传 的 文 件 超 出 php.ini 中 的 upload_max_filesize 设 置 <br />

li.sh<br />

/usr/local/psa/tmp/li_8FZruf<br />

<br />

<br />

<br />

上 传 多 个 数 据 包<br />

若 请 求 代 理 上 传 li.sh 和 mybox.sh 文 件 到 <strong>Panel</strong> 服 务 器 , 则 返 回 负 响 应 , 类 似 于 :<br />

<br />

<br />

<br />

ok<br />

li.sh<br />

/usr/local/psa/tmp/li_8FZruf<br />

<br />

<br />

ok<br />

mybox.sh<br />

/usr/local/psa/tmp/li_8FZrHts<br />

<br />

<br />


通 过 远 程 API 设 置 127<br />

导 入 上 传 的 应 用 程 序 包<br />

若 要 导 入 上 传 的 应 用 程 序 包 ( 第 118 页 ) 到 <strong>Panel</strong>, 执 行 包 含 aps/import-package 操 作 模 式 的<br />

XML 请 求 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

请 求 数 据 包 结 构<br />

导 入 APS 数 据 包 到 <strong>Panel</strong> 的 XML 数 据 包 包 含 import-package 操 作 节 点 , 结 构 如 下 :<br />

• filename, required<br />

指 定 上 传 到 服 务 器 的 应 用 程 序 包 名 称 。 数 据 类 型 : 字 符 串 。<br />

值 上 传 响 应 ( 第 124 页 ) 是 中 的 临 时 文 件 名 ( 位 于 "upload/result/file" 元 素 )。<br />

请 求 样 本<br />

上 传 到 服 务 器 之 前 导 入 <strong>Panel</strong> APS 目 录 配 置 的 请 求 数 据 包 , 类 似 于 :<br />

在 Linux/Unix 中 :<br />

<br />

<br />

<br />

/usr/local/psa/tmp/li_8FZruf<br />

<br />

<br />

<br />

在 Windows 中 :<br />

<br />

<br />

<br />

"C:/Program Files/<strong>Parallels</strong>/Plesk/tmp/li_9D.tmp"<br />

<br />

<br />


128 通 过 远 程 API 设 置<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 import-package 节 点 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• package-id, required 若 操 作 成 功 需 提 供<br />

返 回 分 配 给 <strong>Panel</strong> 管 理 的 服 务 器 上 的 程 序 包 ID 。 数 据 类 型 :id_type<br />

(common.xsd).


通 过 远 程 API 设 置 129<br />

响 应 样 本<br />

从 服 务 器 接 收 到 的 正 响 应 如 下 :<br />

<br />

<br />

<br />

<br />

ok<br />

13<br />

<br />

<br />

<br />

<br />

若 未 找 到 所 需 文 件 , 则 返 回 此 类 负 响 应 :<br />

<br />

<br />

<br />

<br />

error<br />

1013<br />

File "/usr/local/psa/tmp/li_8FZruf" does not exist<br />

<br />

<br />

<br />

<br />

若 导 入 的 文 件 是 无 效 的 APS 应 用 程 序 包 , 则 返 回 此 类 负 响 应 。<br />

1) 要 导 入 的 存 档 缺 少 APP-META.xml 程 序 包 元 文 件 。<br />

<br />

<br />

<br />

<br />

error<br />

1023<br />

Entry 'APP-META.xml' not found<br />

<br />

<br />

<br />

<br />

2) APP-META.xml 未 经 过 XML 方 案 验 证 。<br />

<br />

<br />

<br />

<br />

error<br />

1023<br />

无 法 要 求 元 数 据 描 述 <br />

<br />

<br />

<br />


130 通 过 远 程 API 设 置<br />

从 APS 目 录 下 载 应 用 程 序 包<br />

若 要 从 APS 目 录 下 载 应 用 程 序 包 , 执 行 包 含 aps/download-package 操 作 节 点 的 XML 请 求 数 据 包<br />

:<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

若 操 作 成 功 , 则 创 建 下 载 任 务 。<br />

注 意 : 操 作 成 功 不 表 示 开 始 下 载 。 下 载 是 否 成 功 , 需 执 行 get-download-status ( 第 135 页 ) 查 看<br />

。<br />

请 求 数 据 包 结 构<br />

download-package 节 点 结 构 如 下 :


通 过 远 程 API 设 置 131<br />

• package, required<br />

描 述 目 标 数 据 包 的 所 有 数 据 。 数 据 类 型 :APSIdentifierType (aps.xsd).<br />

APS 目 录 的 子 节 点 值 。 详 细 信 息 , 参 阅 元 素 参 考 ,APS 目 录 API 参 考<br />

(http://www.apsstandard.org/r/doc/aps-catalog-1.1-api/index.htm)。<br />

• name, required<br />

指 定 应 用 程 序 数 据 包 名 。 数 据 类 型 : 字 符 串 。<br />

• version, optional<br />

指 定 应 用 程 序 版 本 。 数 据 类 型 : 字 符 串 。<br />

若 未 定 义 , 则 APS 目 录 中 有 多 个 版 本 , 只 下 载 最 新 版 。<br />

• release, optional<br />

指 定 程 序 包 版 本 。 数 据 类 型 : 字 符 串 。<br />

若 未 定 义 , 则 APS 目 录 中 有 多 个 版 本 , 只 下 载 最 新 版 。<br />

• vendor, optional<br />

指 定 应 用 程 序 厂 商 。 数 据 类 型 : 字 符 串 。<br />

• packager, optional<br />

指 定 应 用 程 序 打 包 程 序 。 数 据 类 型 : 字 符 串<br />

aps-catalog-url, optional<br />

指 定 要 下 载 程 序 包 的 APS 目 录 URL。 数 据 类 型 : 字 符 串<br />

若 节 点 出 现 , 值 中 的 URL 同 APS 目 录 配 置 文 件 ( 第 37 页 ) 中 相 同 , 否 则 会 出 现 错 误 1013。<br />

若 未 包 含 在 数 据 包 中 , 从 最 先 在 APS 目 录 配 置 文 件 ( 第 115 页 ) 中 定 义 的 APS 目 录 下 载 的<br />

数 据 包


132 通 过 远 程 API 设 置<br />

请 求 样 本<br />

此 数 据 包 安 装 从 特 定 APS 目 录 安 装 特 定 版 本 、 发 行 号 、 厂 商 和 发 行 商 的 应 用 程 序 包 ( 不 同 于 默<br />

认 值 )。<br />

<br />

<br />

<br />

<br />

BlogEngine.NET<br />

1.4.5<br />

2<br />

www.dotnetblogengine.net<br />

parallels.com<br />

<br />

http://apscatalog.com/<br />

<br />

<br />

<br />

此 数 据 包 从 APS 目 录 下 载 多 个 程 序 包 及 其 博 客 应 用 程 序 。 假 定 要 下 载 的 每 个 应 用 程 序 目 录 程 序<br />

包 版 本 最 新 。<br />

<br />

<br />

<br />

<br />

BlogEngine.NET<br />

<br />

<br />

<br />

<br />

WordPress<br />

<br />

<br />

<br />

<br />

geeklog<br />

<br />

<br />

<br />


通 过 远 程 API 设 置 133<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 download-package 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• task-id, required 若 操 作 成 功 需 提 供<br />

返 回 下 载 任 务 ID, 可 稍 后 用 于 检 索 下 载 状 态 。 数 据 类 型 : 字 符 串 。


134 通 过 远 程 API 设 置<br />

响 应 样 本<br />

从 服 务 器 接 收 到 的 正 响 应 如 下 :<br />

<br />

<br />

<br />

<br />

ok<br />

4<br />

<br />

<br />

<br />

<br />

若 请 求 定 义 的 APS 目 录 URL 不 在 APS 目 录 配 置 文 件 ( 第 115 页 ) 列 表 中 , 则 返 回 下 列 响 应 。<br />

若 请 求 的 URL 不 同 于 配 置 文 件 中 定 义 的 URL 也 是 下 列 响 应 。 若 APS 目 录 配 置 中 定 义 的 URL<br />

遗 失 斜 线 。<br />

<br />

<br />

<br />

<br />

error<br />

1013<br />

目 录 中 的 URL "http://apscatalog.com" 不 存 在 <br />

<br />

<br />

<br />

<br />

若 APS 目 录 URL 无 法 解 析 , 返 回 此 类 负 响 应 :<br />

<br />

<br />

<br />

<br />

error<br />

1023<br />

无 法 解 析 主 机 :apscatalog.co; 无 请 求 类 型 的 数 据 记 录 <br />

<br />

<br />

<br />

<br />

若 APS 目 录 配 置 文 件 ( 第 115 页 ) 格 式 错 误 , 返 回 此 类 负 响 应 :<br />

<br />

<br />

<br />

<br />

error<br />

1023<br />

APS 目 录 配 置 文 件 损 坏 <br />

<br />

<br />

<br />


通 过 远 程 API 设 置 135<br />

获 取 下 载 任 务 状 态<br />

若 要 检 索 程 序 包 下 载 任 务 状 态 , 执 行 包 含 aps/get-download-status 操 作 节 点 的 XML 请 求 数 据 包 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

可 能 的 状 态 :<br />

• "finished/error" - 未 在 APS 目 录 中 找 到 程 序 包 , 导 致 无 法 启 动 任 务<br />

• "finished/package-id" - 成 功 完 成 任 务<br />

• "in-progress/current" - 程 序 包 下 载 中<br />

• "in-progress" 缺 少 "current" 子 节 点 - 未 开 始 下 载 程 序 包 , 但 已 在 队 列 中<br />

请 求 数 据 包 结 构<br />

get-download-status 节 点 结 构 如 下 :<br />

• filter, required<br />

检 索 到 过 滤 器 下 载 任 务 。 数 据 类 型 : 无 。<br />

若 定 义 的 值 为 空 , 则 返 回 所 有 当 前 所 有 下 载 任 务 列 表 。 在 Windows 中 , 为 每 个 下 载 任 务 创<br />

建 独 立 交 易 。 下 载 完 成 则 下 载 交 易 结 束 。<br />

• task-id, optional<br />

指 定 下 载 任 务 ID ( 返 回 操 作 结 果 )。 数 据 类 型 :id_type<br />

(common.xsd).


136 通 过 远 程 API 设 置<br />

请 求 样 本<br />

此 数 据 包 请 求 当 前 下 载 交 易 状 态 。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

此 数 据 包 请 求 下 载 任 务 ID 10、11 和 12 的 状 态 。<br />

<br />

<br />

<br />

<br />

10<br />

11<br />

12<br />

<br />

<br />

<br />


通 过 远 程 API 设 置 137<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 get-download-status 结 构 如 下 :


138 通 过 远 程 API 设 置<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 若 请 求 包 含 非 空 过 滤 器<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• filter-id, required 若 操 作 成 功 需 提 供<br />

返 回 被 过 滤 操 作 的 ID。 数 据 类 型 : 任 何 。<br />

• id, required 若 操 作 成 功 需 提 供<br />

返 回 检 索 到 的 下 载 任 务 ID。 数 据 类 型 :id_type (common.xsd)<br />

• task, optional<br />

描 述 下 载 任 务 状 态 的 数 据 集 。 数 据 类 型 : 无 。<br />

结 构 如 下 :


通 过 远 程 API 设 置 139<br />

• id, required<br />

返 回 检 索 到 的 下 载 任 务 ID。 数 据 类 型 :id_type (common.xsd).<br />

• finished, optional<br />

指 定 下 载 任 务 完 成 。 数 据 类 型 : 无 。<br />

• in-progress, optional<br />

指 定 下 载 任 务 进 行 中 , 或 在 下 载 队 列 中 一 次 指 定 多 个 程 序 包 。 数 据 类 型 :<br />

APSPackageDownloadStatusInProgress (aps.xsd).<br />

• error, optional<br />

指 定 下 载 任 务 完 成 , 但 出 现 错 误 。 包 含 错 误 描 述 。 数 据 类 型 : 无 。<br />

• package-id, required 若 下 载 成 功 需 提 供<br />

指 定 下 载 成 功 完 成 , 以 及 在 服 务 器 上 分 配 给 程 序 包 的 ID。 数 据 类 型 :id_type<br />

(common.xsd).<br />

• total, required<br />

指 定 应 用 程 序 总 大 小 , 字 节 。 数 据 类 型 : 整 数 。<br />

• completed, required<br />

指 定 下 载 包 总 大 小 , 字 节 。 数 据 类 型 : 整 数 。<br />

• current, optional<br />

指 定 下 载 任 务 进 行 中 , 下 载 队 列 中 无 等 待 任 务 。 数 据 类 型 : 字 符 串 。


140 通 过 远 程 API 设 置<br />

请 求 和 响 应 样 本<br />

样 本 1<br />

请 求<br />

此 数 据 包 返 回 下 载 任 务 ID 18 的 状 态 :<br />

<br />

<br />

<br />

<br />

18<br />

<br />

<br />

<br />

<br />

响 应 A<br />

正 响 应 类 似 于 :<br />

<br />

<br />

<br />

<br />

ok<br />

18<br />

18<br />

<br />

18<br />

<br />

13<br />

<br />

<br />

<br />

<br />

<br />

<br />

响 应 B<br />

若 下 载 任 务 未 启 动 , 或 完 成 但 出 错 , 返 回 此 类 响 应 。<br />

<br />

<br />

<br />

<br />

ok<br />

18<br />

18<br />

<br />

18<br />

<br />

无 法 从 目 录 下 载 程 序 包 <br />

<br />

<br />


通 过 远 程 API 设 置 141<br />

<br />

<br />

<br />

响 应 C<br />

若 请 求 ID 不 存 在 , 返 回 此 类 负 响 应 。<br />

<br />

<br />

<br />

<br />

error<br />

1013<br />

未 找 到 下 载 任 务 id 18<br />

181<br />

<br />

<br />

<br />

<br />

样 本 2<br />

请 求<br />

此 数 据 包 请 求 当 前 交 易 中 所 有 下 载 任 务 的 状 态 。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

响 应 A<br />

从 运 行 树 状 任 务 的 Linux 服 务 器 返 回 此 响 应 : 一 个 任 务 完 成 , 一 个 处 理 中 , 一 个 在 队 列 中 。<br />

<br />

<br />

<br />

<br />

ok<br />

10<br />

10<br />

<br />

10<br />

<br />

5<br />

<br />

<br />

<br />

<br />

ok<br />

11<br />

11<br />

<br />

11<br />


142 通 过 远 程 API 设 置<br />

3584225<br />

2458<br />

<br />

<br />

<br />

<br />

<br />

ok<br />

12<br />

12<br />

<br />

12<br />

<br />

45888236<br />

0<br />

<br />

<br />

<br />

<br />

<br />

<br />

响 应 B<br />

交 易 运 行 时 , 从 Windows 服 务 器 上 返 回 此 响 应 :<br />

<br />

<br />

<br />

<br />

ok<br />

38<br />

38<br />

<br />

38<br />

<br />

0<br />

0<br />

<br />

<br />

<br />

<br />

<br />

<br />

响 应 C<br />

无 下 载 交 易 运 行 时 , 收 到 此 类 响 应 。<br />

<br />

<br />

<br />

<br />

ok<br />

<br />

<br />

<br />


通 过 远 程 API 设 置 143<br />

安 装 应 用 程 序<br />

安 装 应 用 程 序 要 求 您 识 别 要 安 装 的 源 程 序 包 。 按 ID 识 别 或<br />

name-version-release-vendor-packager 信 息 识 别 程 序 包 。<br />

若 要 提 供 程 序 包 ID, 执 行 :<br />

• 使 用 导 入 <strong>Panel</strong> 后 分 配 给 程 序 包 的 ID ( 第 128 页 )<br />

• 使 用 从 APS 目 录 成 功 下 载 后 分 配 给 程 序 包 的 ID ( 第 137 页 )<br />

• 使 用 从 可 用 程 序 包 信 息 返 回 的 ID ( 第 156 页 )<br />

若 要 提 供 name-version-release-vendor-packager 信 息 , 从 可 安 装 的 程 序 包 检 索 信 息 ( 第 154<br />

页 )。<br />

在 站 点 或 子 站 点 上 安 装 应 用 程 序<br />

若 要 安 装 应 用 程 序 , 执 行 包 含 aps/install 操 作 节 点 的 XML 请 求 数 据 包 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />


144 通 过 远 程 API 设 置<br />

请 求 数 据 包 结 构<br />

install 节 点 结 构 如 下 :<br />

domain-id 或 domain-name 或 subdomain-id 或 subdomain-name 需 要 。<br />

• domain-id, optional<br />

指 定 要 安 装 的 站 点 ID。 数 据 类 型 :id_type (common.xsd).<br />

• domain-name, optional<br />

指 定 要 安 装 的 站 点 名 。 数 据 类 型 : 字 符 串 。<br />

• subdomain-id, optional<br />

指 定 要 安 装 的 子 站 点 ID。 数 据 类 型 :id_type (common.xsd).<br />

• subdomain-name, optional<br />

指 定 要 安 装 的 子 站 点 名 。 数 据 类 型 : 字 符 串 。<br />

package-id 或 package 需 要 。<br />

注 意 : 程 序 包 识 别 信 息 , 使 用 aps/get-packages-list 操 作 获 取 ( 第 154 页 )。<br />

• package-id, optional<br />

指 定 要 在 服 务 器 上 安 装 的 应 用 程 序 包 ID。 数 据 类 型 :id_type (common.xsd).


通 过 远 程 API 设 置 145<br />

• package, optional<br />

服 务 器 上 安 装 的 应 用 程 序 包 信 息 。 数 据 类 型 :APSIdentifierType (aps.xsd), 查 看 下 列 定<br />

义 。<br />

• ssl, optional<br />

指 定 应 用 程 序 是 否 可 以 通 过 HTTPS 协 议 访 问 。 数 据 类 型 :boolean.<br />

若 未 指 定 , 则 通 过 HTTP 访 问 。<br />

• url-prefix, optional<br />

指 定 站 点 / 子 站 点 URL。 数 据 类 型 :APSUrlPrefixType (aps.xsd).<br />

若 未 指 定 , 则 使 用 默 认 设 置 ("/application/default-prefix" 元 素 , 位 于<br />

APP-META.xml 文 件 中 )。<br />

• database, optional<br />

应 用 程 序 创 建 的 数 据 包 属 性 描 述 。 数 据 类 型 :APSDatabaseInputType (aps.xsd), 查 看<br />

下 列 定 义 。<br />

若 应 用 程 序 需 要 数 据 库 , 且 未 在 队 列 中 指 定 database 元 素 , 则 在 创 建 时 自 动 生 成 名 称 、 用 户<br />

登 录 名 和 密 码 。<br />

按 应 用 程 序 需 求 , 数 据 库 服 务 器 (MySQL, PostgreSQL 或 Microsoft SQL Server) 自 动 选 择<br />

。<br />

• settings, optional<br />

应 用 程 序 安 装 设 置 集 。<br />

。<br />

数 据 类 型 :APSSettingsInputType (aps.xsd), 查 看 下 列 定 义<br />

若 要 安 装 的 应 用 程 序 有 设 置 ( 应 用 程 序 包 元 数 据 文 件 APP-META.xml 包 含 至 少 一 个 元 素<br />

"//setting")。<br />

package 节 点 由 类 型 APSIdentifierType 表 示 (aps.xsd), 图 示 如 下 :<br />

• name, required<br />

指 定 应 用 程 序 数 据 包 名 。 数 据 类 型 : 字 符 串 。<br />

• version, optional<br />

指 定 应 用 程 序 版 本 。 数 据 类 型 : 字 符 串 。<br />

• release, optional<br />

指 定 程 序 包 版 本 。 数 据 类 型 : 字 符 串 。


146 通 过 远 程 API 设 置<br />

• vendor, optional<br />

指 定 应 用 程 序 厂 商 。 数 据 类 型 : 字 符 串 。<br />

• packager, optional<br />

指 定 应 用 程 序 打 包 程 序 。 数 据 类 型 : 字 符 串<br />

应 在 简 要 或 扩 展 表 单 中 指 定 程 序 包 :<br />

• 简 要 型 提 供 应 用 程 序 名<br />

• 扩 展 型 提 供 所 有 程 序 包 详 细 信 息 : 名 称 、 版 本 、 发 行 号 、 厂 商 和 打 包 程 序<br />

database 节 点 由 类 型 APSDatabaseInputType 表 示 (aps.xsd), 图 示 如 下 :<br />

• name, required<br />

指 定 数 据 包 名 称 。 应 唯 一 。 数 据 类 型 : 字 符 串 。<br />

• login, required<br />

指 定 数 据 包 用 户 登 录 名 。 应 唯 一 。 数 据 类 型 : 字 符 串 。<br />

• password, required<br />

指 定 数 据 库 用 户 密 码 。 数 据 类 型 : 字 符 串 。<br />

settings 节 点 由 类 型 APSSettingsInputType 表 示 (aps.xsd), 图 示 如 下 :<br />

• setting, required<br />

应 用 程 序 设 置 定 义 。 数 据 类 型 :APSSettingInputType (aps.xsd).<br />

应 用 程 序 设 置 名 称 信 息 , 以 及 从 应 用 程 序 包 元 数 据 文 件 获 取 的 值 APP-META.xml (<br />

"//setting" 元 素 )。<br />

应 用 程 序 元 数 据 文 件 中 未 指 定 默 认 值 , 则 使 用 设 置 元 素 。<br />

• name, required


通 过 远 程 API 设 置 147<br />

指 定 设 置 ID。 可 以 和 APP-META.xml ("//setting[@id]") 中 指 定 同 一 设 置 ID。 数<br />

据 类 型 : 字 符 串 。<br />

• value, required<br />

指 定 设 置 值 。 数 据 类 型 : 字 符 串 。


148 通 过 远 程 API 设 置<br />

请 求 样 本<br />

下 列 程 序 包 在 站 点 example.com 上 安 装 应 用 程 序 Serendipity。<br />

<br />

<br />

<br />

example.com<br />

<br />

serendipity<br />

1.1.2<br />

33<br />

s9y.org<br />

parallels.com<br />

<br />

<br />

s9DB<br />

s9user<br />

s9password<br />

<br />

< 设 置 ><br />

< 设 置 。><br />

admin_p_name<br />

admin<br />

<br />

< 设 置 。><br />

admin_name<br />

admin<br />

<br />

< 设 置 。><br />

admin_password<br />

P4$$w0rd<br />

<br />

< 设 置 。><br />

admin_email<br />

admin@example.com<br />

<br />

< 设 置 。><br />

title<br />

Project X Blog<br />

<br />

< 设 置 。><br />

blog_descr<br />

Project X Blog<br />

<br />

< 设 置 。><br />

locale<br />

en-US<br />

<br />

<br />

<br />

<br />

<br />

下 列 数 据 包 在 子 站 点 上 安 装 LinkPoint 应 用 程 序 ( 程 序 包 ID 5)。 若 安 装 应 用 程 序 不 需 要 数 据 库<br />

且 无 设 置 时 , 会 用 到 此 类 请 求 。


通 过 远 程 API 设 置 149<br />

<br />

<br />

<br />

subdomain.example.com<br />

5<br />

<br />

<br />

<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 的 install 节 点 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

特 定 操 作 错 误<br />

1013 - 未 找 到 指 定 对 象 ( 站 点 、 子 站 点 、 程 序 包 )<br />

1019 - 指 定 设 置 无 法 安 装 应 用 程 序<br />

1100 - 不 满 足 应 用 程 序 需 求


150 通 过 远 程 API 设 置<br />

响 应 样 本<br />

从 服 务 器 接 收 到 的 正 响 应 如 下 :<br />

<br />

<br />

<br />

<br />

ok<br />

<br />

<br />

<br />

<br />

'1013 未 找 到 对 象 ' 错 误<br />

1. 若 指 定 站 点 / 子 站 点 不 存 在 , 则 返 回 此 类 负 响 应 。<br />

<br />

<br />

<br />

<br />

error<br />

1013<br />

Domain not found.<br />

<br />

<br />

<br />

<br />

2. 若 未 在 服 务 器 上 找 到 所 需 程 序 包 , 则 返 回 此 类 负 响 应 。<br />

<br />

<br />

<br />

<br />

error<br />

1013<br />

程 序 包 不 存 在 <br />

<br />

<br />

<br />

<br />

'1019 设 置 错 误 ' 错 误<br />

1. 若 应 用 程 序 设 置 没 有 默 认 值 , 或 请 求 的 设 置 不 包 含 请 求 的 数 据 包 , 则 返 回 此 类 负 响 应 。<br />

REQUEST PACKET<br />

<br />

<br />

<br />

example.com<br />

<br />

AutoIndex<br />

<br />

<br />


通 过 远 程 API 设 置 151<br />

<br />

RESPONSE PACKET<br />

<br />

<br />

<br />

<br />

error<br />

1019<br />

安 装 中 出 错 。<br />

"admin_password" 设 置 值 无 效 :'' 字 符 短 于 1<br />

"user_password" 设 置 值 无 效 :'' 字 符 短 于 1<br />

<br />

<br />

<br />

<br />

2. 若 请 求 中 指 定 的 应 用 程 序 设 置 未 经 过 APP-META.xml 验 证 , 则 返 回 此 类 负 响 应 。<br />

REQUEST PACKET<br />

<br />

<br />

<br />

10<br />

<br />

joomla<br />

<br />

< 设 置 ><br />

< 设 置 。><br />

admin_name<br />

admin<br />

<br />

< 设 置 。><br />

admin_password<br />

dfkjEEtbgg<br />

<br />

< 设 置 。><br />

admin_email<br />

johndoe@example.com<br />

<br />

< 设 置 。><br />

locale<br />

en-US<br />

<br />

< 设 置 。><br />

title<br />

Joomla<br />

<br />

<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />

<br />

<br />


152 通 过 远 程 API 设 置<br />

error<br />

1019<br />

安 装 中 出 错 。<br />

"locale" 值 应 为 (en-GB, fr-FR, de-DE)<br />

<br />

<br />

<br />

<br />

3. 若 指 定 的 Web 目 录 已 存 在 , 或 用 于 其 它 内 容 , 则 返 回 此 类 负 响 应 :<br />

<br />

<br />

<br />

<br />

error<br />

1019<br />

安 装 中 出 错 。<br />

目 标 目 录 已 存 在 , 或 用 于 其 它 Web 应 用 程 序 。<br />

<br />

<br />

<br />

<br />

4. 若 请 求 数 据 包 中 指 定 的 数 据 包 已 存 在 , 则 返 回 此 类 负 响 应 :<br />

<br />

<br />

<br />

<br />

error<br />

1019<br />

安 装 中 出 错 。<br />

请 求 名 称 的 数 据 库 已 存 在 <br />

<br />

<br />

<br />

<br />

'1100 不 满 足 需 求 ' 错 误<br />

若 未 满 足 应 用 程 序 需 求 , 则 返 回 此 类 负 响 应 :<br />

<br />

<br />

<br />

<br />

error<br />

1100<br />

出 现 下 列 需 求 问 题 : 无 法 满 足 ASP.NET 版 本 需 求 。 需 要 ASP.NET 2.0; 无 法 满<br />

足 ASP.NET 版 本 需 求 。 需 要 ASP.NET 2.0; 无 法 满 足 数 据 库 服 务 器 需 求 。 未 找 到 'mssql' 数 据 库<br />

, 版 本 不 低 于 9.0 <br />

<br />

<br />

<br />

<br />

其 他 错 误


通 过 远 程 API 设 置 153<br />

若 指 定 的 应 用 程 序 应 通 过 HTTPS (true) 使 用 , 但 站 点 / 子 站 点 不 支 持 , 则 返 回 此 类<br />

负 响 应 。<br />

REQUEST PACKET<br />

<br />

<br />

<br />

2<br />

<br />

joomla<br />

<br />

true<br />

< 设 置 ><br />

< 设 置 。><br />

admin_name<br />

admin<br />

<br />

< 设 置 。><br />

admin_password<br />

dfkjEEtbgg<br />

<br />

< 设 置 。><br />

admin_email<br />

johndoe@example.com<br />

<br />

< 设 置 。><br />

locale<br />

en-GB<br />

<br />

< 设 置 。><br />

title<br />

Joomla<br />

<br />

<br />

<br />

<br />

<br />

RESPONSE PACKET<br />

<br />

<br />

<br />

<br />

error<br />

1023<br />

同 此 站 点 关 联 的 IP 地 址 已 经 被 另 一 个 站 点 所 使 用 , 用 于 支 持 SSL 实 现 。<br />

<br />

<br />

<br />

<br />


154 通 过 远 程 API 设 置<br />

检 索 可 用 数 据 包<br />

使 用 aps/get-packages-list 操 作 检 索 可 在 站 点 / 子 站 点 上 安 装 的 应 用 程 序 包 信 息 :<br />

<br />

<br />

<br />

...<br />

<br />

<br />

<br />

请 求 数 据 包 结 构<br />

get-packages-list 节 点 结 构 如 下 :<br />

• filter, required<br />

过 滤 检 索 到 其 信 息 的 程 序 包 。 数 据 类 型 : 无 。<br />

若 为 空 , 则 服 务 器 上 所 有 APS 程 序 包 相 关 信 息 会 返 回 响 应 程 序 包 。<br />

• package-id, optional<br />

指 定 要 检 索 其 信 息 的 程 序 包 ID。 数 据 类 型 :id_type (common.xsd).


通 过 远 程 API 设 置 155<br />

请 求 样 本<br />

此 数 据 包 检 索 所 有 应 用 程 序 包 相 关 信 息 。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

此 数 据 包 检 索 应 用 程 序 包 ID 11, 12 和 13 的 信 息 。<br />

<br />

<br />

<br />

<br />

11<br />

12<br />

13<br />

<br />

<br />

<br />


156 通 过 远 程 API 设 置<br />

响 应 数 据 包 结 构<br />

输 出 XML 数 据 包 get-packages-list 结 构 如 下 :<br />

• result, required<br />

包 含 从 服 务 器 检 索 到 的 响 应 。 数 据 类 型 :resultType (common.xsd).<br />

• status, required<br />

指 定 操 作 执 行 状 态 。 数 据 类 型 : 字 符 串 。 允 许 的 值 :ok | error.<br />

• errcode, required 若 操 作 失 败<br />

返 回 错 误 码 。 数 据 类 型 : 整 数 。<br />

• errtext, required 数 据 类 型 :<br />

返 回 错 误 消 息 。 数 据 类 型 : 字 符 串 。<br />

• filter-id, required 若 操 作 成 功 需 提 供<br />

返 回 被 过 滤 操 作 的 程 序 包 ID。 数 据 类 型 : 任 何 。<br />

• id, optional<br />

未 返 回 。<br />

• package, required 若 操 作 成 功 需 提 供<br />

描 述 数 据 包 的 所 有 数 据 。 数 据 类 型 :APSIdentifierType (aps.xsd).


通 过 远 程 API 设 置 157<br />

结 构 如 下 :<br />

• name, required<br />

指 定 应 用 程 序 数 据 包 名 。 数 据 类 型 : 字 符 串 。<br />

• version, optional<br />

指 定 应 用 程 序 version.Data 类 型 : 字 符 串 。<br />

• release, optional<br />

指 定 程 序 包 release.Data 类 型 : 字 符 串 。<br />

• vendor, optional<br />

指 定 应 用 程 序 厂 商 。 数 据 类 型 : 字 符 串 。<br />

• packager, optional<br />

指 定 应 用 程 序 打 包 程 序 。 数 据 类 型 : 字 符 串<br />

• id, required<br />

指 定 服 务 器 上 的 程 序 包 ID。 数 据 类 型 :id_type (common.xsd).


158 通 过 远 程 API 设 置<br />

请 求 和 响 应 样 本<br />

样 本 1<br />

请 求<br />

此 数 据 包 检 索 所 有 APS 程 序 包 相 关 信 息 。<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

响 应 A<br />

从 服 务 器 接 收 到 的 正 响 应 如 下 :<br />

<br />

<br />

<br />

<br />

ok<br />

1<br />

<br />

phpWiki<br />

1.3.11<br />

44<br />

phpwiki.sourceforge.net<br />

parallels.com<br />

1<br />

<br />

<br />

<br />

ok<br />

2<br />

<br />

PinnacleCart<br />

3.6.1<br />

570<br />

www.pinnaclecart.com<br />

www.pinnaclecart.com<br />

2<br />

<br />

<br />

<br />

<br />

<br />

响 应 B<br />

若 服 务 器 上 无 APS 程 序 包 , 则 返 回 此 响 应 :<br />

<br />

<br />


通 过 远 程 API 设 置 159<br />

<br />

ok<br />

<br />

<br />

<br />

<br />

样 本 2<br />

此 数 据 包 检 索 APS 程 序 包 ID 11, 12 和 13 的 信 息 。<br />

<br />

<br />

<br />

<br />

12<br />

13<br />

<br />

<br />

<br />

<br />

若 请 求 数 据 包 ID 数 据 包 不 存 在 , 则 返 回 负 响 应 :<br />

<br />

<br />

<br />

<br />

error<br />

1013<br />

程 序 包 不 存 在 <br />

12<br />

<br />

<br />

error<br />

1013<br />

程 序 包 不 存 在 <br />

13<br />

<br />

<br />

<br />


第 6 章<br />

通 过 CLI 设 置<br />

本 章 阐 述 如 何 通 过 <strong>Panel</strong> 命 令 行 界 面 (CLI) 设 置 <strong>Panel</strong>。<br />

关 于 <strong>Panel</strong> CLI 章 节 ( 第 161 页 ) 概 述 CLI 使 用 基 本 信 息 。<br />

设 置 <strong>Panel</strong> 章 节 ( 第 162 页 ) 详 细 阐 述 要 执 行 的 <strong>Panel</strong> 设 置 操 作 。<br />

本 章 内 容 :<br />

关 于 <strong>Panel</strong> CLI .................................................................................................. 161<br />

设 置 <strong>Panel</strong> ......................................................................................................... 162


通 过 CLI 设 置 161<br />

关 于 <strong>Panel</strong> CLI<br />

<strong>Parallels</strong> Small Business <strong>Panel</strong> 命 令 行 界 面 (CLI) 提 供 <strong>Panel</strong> 管 理 员 可 以 在 命 令 行 界 面<br />

中 执 行 的 主 要 管 理 操 作 。<br />

root 用 户 可 从 控 制 台 或 脚 本 使 用 <strong>Panel</strong> 命 令 行 实 用 程 序 。 实 用 程 序 需 要 "root"/"psaadm"<br />

(Linux/Unix) 或 "Administrator" (Windows) 权 限 才 可 以 操 作 。<br />

<strong>Parallels</strong> Small Business <strong>Panel</strong> for Linux/Unix CLI 和 <strong>Panel</strong> 支 持 当 地 的 企 业 名 称 。 因 此 ,<br />

可 以 使 用 本 地 语 言 创 建 联 系 人 姓 名 。 使 用 LANG 环 境 变 量 设 置 特 定 语 言 。<br />

成 功 之 行 后 , 实 用 程 序 返 回 0 编 码 。 若 出 错 , 实 用 程 序 返 回 1 并 在 stderr 上 显 示 问 题<br />

描 述 。<br />

注 意 : 实 用 程 序 输 入 参 数 必 需 是 UTF-8 编 码 。 可 以 确 定 <strong>Panel</strong> 操 作 正 常 。<br />

实 用 程 序 位 置<br />

在 Linux/Unix 中 :<br />

/opt/psa/bin Debian 系 统 中<br />

/usr/local/psa/bin 非 -Debian Linux 和 Unix<br />

在 Windows 中 :<br />

%plesk_cli%


162 通 过 CLI 设 置<br />

设 置 <strong>Panel</strong><br />

本 章 阐 述 要 在 <strong>Panel</strong> 设 置 操 作 中 执 行 的 命 令 详 细 信 息 。<br />

初 始 化 <strong>Panel</strong><br />

若 要 通 过 CLI 初 始 化 <strong>Panel</strong>, 使 用 init_conf 实 用 程 序 。<br />

命 令<br />

下 列 命 令 可 初 始 化 <strong>Panel</strong>:<br />

init_conf --init -email -passwd [-locale ]<br />

格 式 按 RFC 1766 标 准 "-", 其 中<br />

是 小 写 的 两 个 字 母 ISO 639-1 和 是 大 写 , 来 自 ISO<br />

3166。 如 德 语 ( 德 国 ) 本 地 编 码 是 "de-DE"。<br />

样 本<br />

1. 下 列 命 令 初 始 化 <strong>Panel</strong>, 设 置 管 理 员 密 码 "jskekekHTD" 和 电 子 邮 件<br />

"johndoe@example.com"。<br />

在 Linux/Unix 中 :<br />

./init_conf --init -passwd jskekekHTD -email johndoe@example.com<br />

在 Windows 中 :<br />

./init_conf --init -passwd jskekekHTD -email johndoe@example.com<br />

2. 下 列 命 令 初 始 化 <strong>Panel</strong>, 设 置 管 理 员 密 码 "P4$$w0rd" 和 电 子 邮 件 "fischer@example.com",<br />

并 设 置 <strong>Panel</strong> 语 言 为 " 德 语 ( 德 国 )"。<br />

在 Linux/Unix 中 :<br />

./init_conf --init -passwd P4$$w0rd -email fischer@example.com -locale de-DE<br />

在 Windows 中 :<br />

init_conf --init -passwd P4$$w0rd -email fischer@example.com -locale de-DE


通 过 CLI 设 置 163<br />

安 装 许 可 证<br />

使 用 <strong>Panel</strong> CLI 安 装 <strong>Panel</strong> 许 可 证 , 先 需 使 用 <strong>Panel</strong> 上 传 到 电 脑 , 然 后 使 用 license 实 用 程 序<br />

安 装 。<br />

命 令<br />

若 要 安 装 执 行 格 式 如 下 的 命 令 :<br />

license <br />

示 例<br />

1. 在 Linux/Unix 上 :<br />

./license -i /tmp/psmbfu10key.xml<br />

2. 在 Windows 中 :<br />

license.exe -i "D:\keys\psmbfw10key.xml"


164 通 过 CLI 设 置<br />

定 义 <strong>Panel</strong> 徽 标<br />

若 要 设 置 <strong>Panel</strong> 商 标 , 使 用 branding 实 用 程 序 。<br />

更 改 徽 标<br />

两 步 即 可 更 改 <strong>Panel</strong> 徽 标 图 像 和 URL:<br />

1 使 用 下 列 命 令 , 定 义 徽 标 及 其 图 像 :<br />

branding true -path <br />

2 使 用 下 列 命 令 设 置 自 定 义 URL:<br />

branding -url <br />

示 例<br />

1. 下 列 命 令 设 置 自 定 义 徽 标 , 并 使 用 图 像 my-own-cool-logo.gif, 位 于 temp 目 录 中 。<br />

在 Linux/Unix 中 :<br />

./branding -u true -path temp/my-own-cool-logo.gif<br />

在 Windows 中 :<br />

branding.exe -u true -path D:\temp\my-own-cool-logo.gif<br />

2. 下 列 命 令 点 击 面 板 徽 标 , 即 可 打 开 URL http://example.com/about。 在 Linux/Unix 中 :<br />

./branding -l -url http://example.com/about<br />

在 Windows 中 :<br />

branding.exe -l -url http://example.com/about<br />

更 改 支 持 URL<br />

若 要 更 改 支 持 链 接 ( 从 <strong>Panel</strong> 点 击 支 持 按 钮 即 可 打 开 的 URL), 使 用 下 列 命 令 :<br />

branding -url <br />

示 例<br />

使 用 下 列 命 令 即 可 点 击 支 持 打 开 支 持 请 求 表 单 https://support.example.com/submit-ticket。<br />

在 Linux/Unix 中 :<br />

./branding -c -url https://support.example.com/submit-ticket<br />

在 Windows 中 :<br />

branding.exe -c -url https://support.example.com/submit-ticket


通 过 CLI 设 置 165<br />

配 置 DNS<br />

若 要 通 过 CLI 配 置 <strong>Panel</strong> DNS 服 务 ( 包 括 停 用 ), 使 用 server_dns 实 用 程 序 。<br />

停 用 DNS 服 务<br />

若 要 停 用 <strong>Panel</strong> DNS 服 务 , 执 行 下 列 命 令 :<br />

server_dns -status disabled<br />

格 式 如 下 。<br />

在 Linux/Unix 中 :<br />

./server_dns -u -status disabled<br />

在 Windows 中 :<br />

server_dns.exe -u -status disabled<br />

更 改 SOA 记 录 模 板<br />

若 要 更 改 SOA 记 录 模 板 , 执 行 下 列 命 令 :<br />

server_dns --update-soa [options]<br />

可 用 选 项<br />

选 项 参 数 描 述<br />

-soa-ttl<br />

-soa-refresh<br />

-soa-retry<br />

-soa-expire<br />

[S|<br />

M|H|D|W]<br />

[S|<br />

M|H|D|W]<br />

[S|<br />

M|H|D|W]<br />

[S|<br />

M|H|D|W]<br />

-soa-minimum [S|<br />

M|H|D|W]<br />

指 定 TTL 时 段 。<br />

<strong>Panel</strong> 设 置 的 默 认 值 为 一 天 。<br />

指 定 刷 新 时 段 。<br />

<strong>Panel</strong> 设 置 的 默 认 值 为 三 小 时 。<br />

指 定 重 试 时 段 。<br />

<strong>Panel</strong> 设 置 的 默 认 值 为 一 小 时 。<br />

指 定 过 期 日 。<br />

<strong>Panel</strong> 设 置 的 默 认 值 为 一 周 。<br />

指 定 最 小 值 。<br />

<strong>Panel</strong> 设 置 的 默 认 值 为 三 小 时 。<br />

-soa-serial-for<br />

mat<br />

timestamp|yyyy<br />

mmddnn<br />

指 定 SOA 记 录 序 列 号 格 式 :UNIX 时 间 戳 或 由 IETF 和 RIPE 建 议 。<br />

仅 在 Linux/Unix 上 支 持 。


166 通 过 CLI 设 置<br />

示 例<br />

1. 下 列 命 令 设 置 TTL 值 为 5 小 时 , 刷 新 值 为 4 小 时 , 重 试 值 为 10 秒 , 过 期 时 段 为 2 周 , 最 小 值 为 2 天 。<br />

在 Linux/Unix 中 :<br />

./server_dns --update-soa -soa-ttl 5H -soa-refresh 4H -soa-retry 10S<br />

-soa-expire 2W -soa-minimum 2D<br />

在 Windows 中 :<br />

server_dns.exe --update-soa -soa-ttl 5H -soa-refresh 4H -soa-retry 10S<br />

-soa-expire 2W -soa-minimum 2D<br />

2. 下 列 命 令 更 改 SOA 记 录 序 列 号 到 IETF 和 RIPE 建 议 值 :<br />

./server_dns --update-soa -soa-serial-format yyyymmddnn<br />

设 置 资 源 记 录 模 板<br />

<strong>Panel</strong> CLI 支 持 下 列 两 种 方 式 修 改 DNS 区 域 模 板 :<br />

1 添 加 记 录 。 通 过 在 一 条 命 令 中 添 加 一 条 记 录 机 可 以 修 改 。<br />

2 覆 盖 区 域 模 板 。 修 改 后 , 通 过 删 除 所 有 区 域 模 板 记 录 , 即 可 使 用 一 条 命 令 覆 盖 新 记 录 设 置 。<br />

添 加 记 录<br />

若 要 添 加 一 条 资 源 纪 录 到 DNS 区 域 模 板 中 , 使 用 下 列 命 令 :<br />

server_dns <br />

记 录 参 数 和 示 例<br />

参 数 函 数 描 述 示 例<br />

-a |""<br />

-ip<br />

|""<br />

指 定 记 录 设 置 要 应 用 到 的 主 机<br />

名 。<br />

指 定 IP 地 址 或 站 点 IP 地 址 占<br />

位 符 , 创 建 A 资 源 记 录 模 板 。<br />

若 要 添 加 新 A 资 源 记 录<br />

sample. ( 指 定 记 录 的 站 点 IP<br />

地 址 占 位 符 ) 到 站 点 DNS 区 域 模 板 :<br />

server_dns -a -a sample -ip<br />

""<br />

NS 记 录 参 数 和 示 例<br />

参 数 函 数 描 述 示 例<br />

-ns<br />

|""<br />

指 定 记 录 设 置 要 应 用 到 的 主 机<br />

名 。<br />

若 要 添 加 新 NS 资 源 记 录 , 指 定<br />

"ns.." 作 为


通 过 CLI 设 置 167<br />

参 数 函 数 描 述 示 例<br />

-nameserv<br />

er<br />

|"[.]"<br />

指 定 域 名 服 务 器 名 称 或 占 位 符 , 主 机 域 名 服 务 器 :<br />

创 建 NS 资 源 记 录 模 板 。 server_dns -a -ns ""<br />

-nameserver "ns."<br />

MX 记 录 参 数 和 示 例<br />

参 数 函 数 描 述 示 例<br />

-mx<br />

-mailexch<br />

anger<br />

|""<br />

<br />

|"[.]"<br />

指 定 记 录 设 置 要 应 用 到 的 主 机<br />

名 。<br />

指 定 邮 件 交 换 器 名 称 或 占 位<br />

符 。<br />

-priority 指 定 邮 件 交 换 器 优 先 级 。<br />

若 要 添 加 新 MX 资 源 记 录 , 让<br />

mail. 成 为 <br />

邮 件 服 务 器 , 优 先 级 15:<br />

server_dns -a -mx ""<br />

-mailexchanger<br />

"mail." -priority<br />

15<br />

CNAME 记 录 参 数 和 示 例<br />

参 数 函 数 描 述 示 例<br />

-cname<br />

-canonica<br />

l<br />

|""<br />

<br />

|[.]"<br />

指 定 记 录 设 置 要 应 用 到 的 主 机<br />

名 。<br />

若 要 指 定 规 范 名 称 或 占 位 符 ,<br />

创 建 CNAME 记 录 模 板 。<br />

若 要 添 加 新 CNAME 资 源 记 录 , 让<br />

ns. 成 为<br />

www. 别 名 :<br />

server_dns -a -cname www<br />

-canonical "ns."<br />

PTR 记 录 参 数 和 示 例<br />

参 数 函 数 描 述 示 例<br />

-ptr<br />

-subnet<br />

|""<br />

/<br />

<br />

|""/<br />

指 定 记 录 设 置 要 应 用 到 的 主 机<br />

名 。<br />

指 定 IP 地 址 和 子 网 掩 码 或 占<br />

位 符 , 创 建 PTR 记 录 模 板 。<br />

若 要 添 加 新 PTR 记 录 , 让<br />

成 为 ""/16 子 站 点<br />

的 域 名 指 标 。<br />

server_dns -a -ptr ""<br />

-subnet ""/16


168 通 过 CLI 设 置<br />

SRV 记 录 参 数 和 示 例<br />

参 数 函 数 描 述 示 例<br />

-srv<br />

-srv-prio<br />

rity<br />

-srv-weig<br />

ht<br />

""|<br />

指 定 记 录 设 置 要 应 用 到 的 主 机<br />

名 。<br />

[0-50] 设 置 SRV 记 录 优 先 级 (0 - 最<br />

高 , 50 - 最 低 )。<br />

[0-50] 指 定 SRV 记 录 重 要 程 序 , 同 优<br />

先 级 相 同 (0 - 最 低 ,50 - 最<br />

高 )。<br />

-srv-port [0-65535] 指 定 要 在 端 口 上 找 到 的 服 务 。<br />

-srv-targ<br />

et-host<br />

-srv-prot<br />

ocol<br />

-srv-serv<br />

ice<br />

指 定 提 供 服 务 的 机 器 主 机 名 。<br />

TCP|UDP 指 定 服 务 协 议 。<br />

< 服 务 > 指 定 服 务 符 号 名 。<br />

若 要 添 加 到 DNS 区 域 模 板 一 条<br />

SRV 记 录 , 让 处 理 SIP<br />

协 议 连 线 , 指 向 服 务 器 , 并 命 名 为<br />

sipserver.sample.com, 监 控 TCP<br />

端 口 5060。 优 先 级 是 0, 重 要 程 度<br />

是 5:<br />

server_dns --add -srv ""<br />

-srv-service sip<br />

-srv-target-host<br />

sipserver.sample.com.<br />

-srv-protocol TCP<br />

-srv-port 5060<br />

-srv-priority 0<br />

-srv-weight 5<br />

TXT 记 录 参 数 和 示 例<br />

参 数 函 数 描 述 示 例<br />

-txt |"" 指 定 文 字 描 述 若 要 指 定 TXT 类 型 DNS 记 录 " 此 记<br />

录 用 于 实 施 发 件 人 协 议 框 架 和<br />

-domain |""<br />

DomainKeys 规 范 ", 用 于 主 机<br />

名 。<br />

policy.:<br />

server_dns -a -txt " 此 条 记<br />

录 用 来 使 用 h 发 件 人 协 议 框 架 和<br />

DomainKeys 规 范 " -domain<br />

policy<br />

覆 盖 DNS 区 域 模 板 中 的 记 录<br />

若 要 覆 盖 DNS 区 域 模 板 , 使 用 下 列 命 令 :<br />

server_dns ";;..."<br />

其 中 格 式 是 ",,[,]"。<br />

即 格 式 如 下 列 <strong>Panel</strong> 中 的 每 条 资 源 记 录 :


通 过 CLI 设 置 169<br />

NS,,<br />

A,,<br />

MX,,,<br />

PTR,,,<br />

CNAME,,<br />

SRV,..,,<br />

。 NS ns..<br />

ns.. A <br />

< 站 点 >。 A <br />

webmail.. A<br />

<br />

< 站 点 >。 MX 10 mail..<br />

mail.. A <br />

ftp.. CNAME < 站 点 >。<br />

/24 PTR < 站 点 >。<br />

< 站 点 >。 TXT f1 +a +mx -all<br />

_SIP._tcp.megadomain.. SRV 5 25 12 example.com.<br />

在 Linux/Unix 中 :<br />

./server_dns -s<br />

'NS,,ns..;A,ns,;A,,;A,webmail,;MX,,mail..,10;A,<br />

mail,;CNAME,ftp,.;PTR,,,24;TXT,,v=spf1 +a +mx<br />

-all;SRV,_SIP._tcp.megadomain,example.com,5 25 12;'<br />

在 Windows 中 :<br />

server_dns.exe -s<br />

"NS,,ns..;A,ns,;A,,;A,webmail,;MX,,mail..,10;A,<br />

mail,;CNAME,ftp,.;PTR,,,24;TXT,,v=spf1 +a +mx<br />

-all;SRV,_SIP._tcp.megadomain,example.com,5 25 12;"


170 通 过 CLI 设 置<br />

安 装 SSL 证 书<br />

若 要 通 过 CLI 安 装 SSL 证 书 , 使 用 certificate 实 用 程 序 。 两 步 完 成 安 装 :<br />

1 导 入 证 书 到 <strong>Panel</strong>。<br />

2 分 配 证 书 到 IP 地 址 。<br />

注 意 , 证 书 之 前 已 使 用 <strong>Panel</strong> 上 传 到 机 器 。


通 过 CLI 设 置 171<br />

导 入 证 书<br />

若 要 导 入 证 书 , 执 行 格 式 如 下 的 命 令 :<br />

certificate -admin -key-file <br />

-cert-file [-cacert-file ] [-csr-file<br />

]<br />

示 例<br />

1. The following command imports the SSL certificate which private key file is<br />

/usr/local/keys/keyfile.key and certificate file is<br />

/usr/local/cert/certfile.cert. 导 入 后 , 证 书 名 称 为 " 站 点 证 书 "。<br />

在 Linux/Unix 中 :<br />

./certificate --create "Site Certificate" -admin -key-file<br />

/usr/local/keyfile.key -cert-file /usr/local/cert/certfile.cert<br />

或<br />

./certificate -c "Site Certificate" -admin -key-file /usr/local/keyfile.key<br />

-cert-file /usr/local/cert/certfile.cert<br />

Windows 中 ( 证 书 文 件 位 于 E:\temp\):<br />

certificate --create "Site Certificate" -admin -key-file E:\temp\keyfile.key<br />

-cert-file E:\temp\certfile.cert<br />

或<br />

certificate -c "Site Certificate" -admin -key-file E:\temp\keyfile.key<br />

-cert-file E:\temp\certfile.cert<br />

2. 下 列 命 令 导 入 SSL 证 书 , 专 用 证 书 文 件 是 /usr/local/keys/keyfile.key,, 证 书 文<br />

件 是 /usr/local/cert/certfile.cert, CA 证 书 文 件 是<br />

/usr/local/cert/cacert.cert, 签 署 相 应 请 求 文 件 的 证 书 是<br />

/usr/local/requests/csreq.csr。 导 入 后 , 证 书 名 称 为 " 站 点 证 书 "。<br />

在 Linux/Unix 中 :<br />

./certificate -c "Site Certificate" -domain example.com -key-file<br />

/usr/local/keys/keyfile.key -cert-file /usr/local/cert/certfile.cert<br />

-cacert-file /usr/local/cert/cacert.cert -csr-file<br />

/usr/local/requests/csreq.csr<br />

Windows 中 ( 证 书 文 件 位 于 E:\ssl\):<br />

certificate -c "Site Certificate" -domain example.com -key-file<br />

E:\ssl\keys\keyfile.key -cert-file E:\ssl\cert\certfile.cert -cacert-file<br />

E:\ssl\cert\cacert.cert -csr-file E:\ssl\requests\csreq.csr


172 通 过 CLI 设 置<br />

分 配 证 书 到 IP 地 址<br />

若 要 分 配 导 入 证 书 到 IP 地 址 , 使 用 命 令 :<br />

certificate -admin -ip <br />

示 例<br />

下 列 命 令 分 配 名 称 为 " 站 点 证 书 " 的 SSL 证 书 到 IP 地 址 192.0.2.78。<br />

在 Linux/Unix 中 :<br />

./certificate -ac "Site Certificate" -ip 192.0.2.78<br />

在 Windows 中 :<br />

certificate -ac "Site Certificate" -ip 192.0.2.78<br />

创 建 站 点<br />

若 要 创 建 站 点 帐 户 , 使 用 domain 实 用 程 序 。<br />

命 令<br />

下 列 命 令 创 建 站 点 帐 户 :<br />

domain -hosting true -ip -login<br />

-passwd <br />

其 中 FTP-login> 和 用 来 上 传 和 编 辑 网 站 内 容 的 FTP 帐 户 登 录 名 和 密 码 。<br />

示 例<br />

下 列 命 令 创 建 站 点 example.com , 托 管 到 IP 地 址 192.0.2.33,FTP 帐 户 凭 证 "johndoe" 和<br />

"P4$$w0rd"。<br />

在 Linux/Unix 中 :<br />

./domain --create example.com -hosting true -ip 192.0.2.33 -login johndoe<br />

-passwd P4$$w0rd<br />

在 Windows 中 :<br />

domain.exe --create example.com -hosting true -ip 192.0.2.33 -login johndoe<br />

-passwd P4$$w0rd<br />

创 建 子 站 点<br />

若 要 创 建 子 站 点 帐 户 , 使 用 subdomain 实 用 程 序 。


通 过 CLI 设 置 173<br />

创 建 常 规 子 站 点<br />

命 令<br />

下 列 命 令 创 建 子 站 点 帐 户 :<br />

subdomain -domain <br />

[-ftp_user native -login -passwd ]<br />

其 中<br />

-ftp_user native -login -passwd 当 主 站 点 FTP 帐<br />

户 用 来 管 理 子 站 点 时 , 负 责 创 建 新 子 站 点 FTP 帐 户 , 不 同 于 默 认 设 。<br />

示 例<br />

1. 下 列 命 令 用 来 创 建 子 站 点 mail.example.com, 和 FTP 帐 户 来 管 理 即 将 用 于 站 点<br />

example.com 的 相 同 内 容 。<br />

在 Linux/Unix 中 :<br />

./subdomain --create mail -domain example.com<br />

在 Windows 中 :<br />

subdomain.exe --create mail -domain example.com<br />

2. 下 列 命 令 创 建 子 站 点 portfolio.example.com 和 FTP 帐 户 及 其 登 录 名 portfolio 和<br />

密 码 P4$$w0rd, 用 来 管 理 子 站 点 内 容 。<br />

在 Linux/Unix 中 :<br />

./subdomain --create portfolio -domain example.com -ftp_user native -login<br />

portfolio -passwd P4$$w0rd<br />

在 Windows 中 :<br />

subdomain.exe --create portfolio -domain example.com -ftp_user native -login<br />

portfolio -passwd P4$$w0rd


174 通 过 CLI 设 置<br />

在 子 文 件 夹 中 创 建 子 站 点 ( 仅 限 Windows)<br />

命 令<br />

下 列 命 令 在 子 文 件 夹 中 创 建 子 站 点 帐 户 :<br />

subdomain -domain <br />

-hst_type virt [-www_root -create_phys false]<br />

其 中<br />

-www_root -create_phys false 负 责 在 目 录 中 创 建 子 站 点 , 路 径 在<br />

使 用 -www_root 选 项 指 定 。<br />

示 例<br />

1. 下 列 命 令 创 建 子 站 点 news.example.com, 并 为 其 内 容 创 建 目 录 /httpdocs/news/。<br />

subdomain.exe --create news -domain example.com -hst_type virt<br />

2. 下 列 命 令 创 建 子 站 点 blog.example.com, 位 于 现 有 目 录 /httpdocs/wordpress/。<br />

创 建 时 ,WordPress 博 客 工 具 可 从 URL http://blog.example.com 访 问 。<br />

subdomain.exe --create blog -domain example.com -hst_type virt -www_root<br />

/httpdocs/wordpress -create_phys false<br />

定 义 可 用 的 APS 目 录<br />

若 要 导 入 APS 目 录 配 置 文 件 , 使 用 命 令 :<br />

aps <br />

配 置 文 件 位 于 下 列 目 录 之 一 :


通 过 CLI 设 置 175<br />

• <strong>Panel</strong> 临 时 目 录 :<br />

• /opt/psa/tmp Debian 上 ,/usr/local/psa/tmp 其 他 Linux\Unix 上<br />

• %plesk_dir%\tmp Windows 上<br />

• 操 作 系 统 临 时 目 录 :<br />

• /tmp 在 Linux/Unix 上<br />

• C:\WINDOWS\Temp Windows 上<br />

如 需 有 关 配 置 文 件 相 关 信 息 , 参 阅 APS 目 录 配 置 文 件 章 节 ( 第 37 页 )。<br />

示 例<br />

下 列 命 令 导 入 APS 目 录 配 置 文 件 catalogs.ini:<br />

在 Linux/Unix 中 :<br />

./aps -ic /tmp/catalogs.ini<br />

或<br />

./aps -ic /usr/local/psa/tmp/catalogs.ini<br />

在 Windows 中 :<br />

aps -ic "C:\Program Files\<strong>Parallels</strong>\Plesk\tmp\catalogs.ini"<br />

或<br />

aps -ic "C:\WINDOWS\Temp\catalogs.ini"<br />

安 装 应 用 程 序<br />

若 要 安 装 应 用 程 序 , 使 用 aps 实 用 程 序 。<br />

导 入 应 用 程 序 包<br />

导 入 上 传 的 应 用 程 序 包<br />

若 要 导 入 应 用 程 序 包 , 使 用 下 列 命 令 :<br />

aps <br />

示 例<br />

下 列 命 令 将 SugarCRM-5.0.0-16.app.zip 程 序 包 导 入 <strong>Panel</strong>。<br />

在 Linux/Unix 中 :<br />

./aps --import-package /home/root/SugarCRM-5.0.0-16.app.zip<br />

在 Windows 中 :<br />

aps --import-package "C:\Documents and<br />

Settings\Administrator\Desktop\SugarCRM-5.0.0-16.app.zip"


176 通 过 CLI 设 置<br />

从 APS 目 录 下 载 应 用 程 序 包<br />

若 要 从 APS 目 录 下 载 应 用 程 序 包 , 使 用 下 列 命 令 :<br />

aps -package-name [-catalog-url ]<br />

[-package-version -package-release <br />

-package-vendor -package-packager ]<br />

其 中<br />

• 其 中<br />

[-catalog-url ]<br />

定 义 目 标 APS 目 录 (URL 与 配 置 文 件 中 相 同 )。 若 未 指 定 , 则 按 配 置 文 件 ( 第 37 页 ) 中 所 列<br />

的 程 序 包 从 APS 目 录 下 载 。<br />

• 其 中<br />

示 例<br />

[-package-version -package-release<br />

-package-vendor -package-packager<br />

]<br />

定 义 -package-name 选 项 指 定 的 应 用 程 序 包 。 若 未 指 定 , 则 从 APS 目 录 下 载 最 新 版 的 程<br />

序 包 。<br />

下 列 命 令 从 APS 目 录 http://apscatalog.com 下 载 最 新 版 的 WordPress 应 用 程 序 。<br />

在 Linux/Unix 中 :<br />

./aps -d -package-name WordPress -catalog-url http://apscatalog.com<br />

在 Windows 中 :<br />

aps -d -package-name WordPress -catalog-url http://apscatalog.com<br />

获 取 下 载 任 务 状 态<br />

若 要 获 取 下 载 状 态 , 使 用 下 列 命 令 :<br />

aps <br />

示 例<br />

下 列 命 令 获 取 下 载 任 务 ID 16 的 状 态 。<br />

在 Linux/Unix 中 :<br />

./aps -g 16<br />

在 Windows 中 :<br />

aps -g 16


通 过 CLI 设 置 177<br />

安 装 应 用 程 序<br />

安 装 应 用 程 序 要 求 您 识 别 要 安 装 的 源 程 序 包 。 按 ID 识 别 或<br />

name-version-release-vendor-packager 信 息 识 别 程 序 包 。<br />

若 要 提 供 程 序 包 ID, 执 行 :<br />

• 使 用 导 入 <strong>Panel</strong> 后 分 配 给 程 序 包 的 ID ( 第 175 页 )<br />

• 使 用 从 APS 目 录 成 功 下 载 后 分 配 给 程 序 包 的 ID ( 第 176 页 )<br />

• 使 用 从 可 用 程 序 包 信 息 返 回 的 ID ( 第 181 页 )<br />

若 要 提 供 name-version-release-vendor-packager 信 息 , 从 可 安 装 的 程 序 包 检 索 信 息 ( 第 181<br />

页 )。


178 通 过 CLI 设 置<br />

在 站 点 或 子 站 点 上 安 装 应 用 程 序<br />

若 要 在 站 点 / 子 站 点 上 安 装 应 用 程 序 , 使 用 命 令 :<br />

aps <br />

<<br />

|<br />

><br />

<<br />

|<br />

><br />

[installation options]<br />

其 中<br />

• 其 中<br />

|-<br />

负 责 指 定 应 用 程 序 设 置 (XML 格 式 ( 第 180 页 ))。 设 置 定 义 指 定 成 命 令 参 数 , 文 件 名 或 直 接<br />

从 STDIN 中 读 取 。 其 他 情 况 下 ,"-" 应 指 定 为 命 令 函 数 。<br />

有 关 设 置 格 式 和 样 本 , 参 阅 应 用 程 序 设 置 定 义 子 章 节 ( 第 180 页 )。<br />

• 其 中<br />

|<br />

指 定 应 用 程 序 安 装 来 源 。 按 程 序 包 ID、 名 称 、 版 本 、 发 行 号 、 厂 商 和 打 包 工 具 指 定 程 序 包 。<br />

使 用 --get-packages-list 命 令 ( 第 181 页 ) 获 取 程 序 包 属 性 。<br />

• 其 中<br />

|<br />

指 定 要 安 装 应 用 程 序 的 站 点 或 子 站 点 。<br />

可 用 选 项<br />

选 项 参 数 描 述<br />

-ssl<br />

-url-pref<br />

ix<br />

true|fals<br />

e<br />

<br />

指 定 应 用 程 序 是 否 可 以 通 过 HTTPS 协 议 访 问 。<br />

指 定 站 点 / 子 站 点 URL。<br />

若 安 装 博 客 工 具 应 用 程 序 , 并 指 定 URL 前 缀 "blog", 可 从<br />

http://domain-name/blog 访 问 应 用 程 序 。<br />

-db-name 在 应 用 程 序 安 装 中 指 定 数 据 库 名 称 。<br />

-db-user < 登 录 名 > 在 应 用 程 序 安 装 中 指 定 数 据 库 用 户 名 称 。


通 过 CLI 设 置 179<br />

选 项 参 数 描 述<br />

-passwd 在 应 用 程 序 安 装 中 指 定 数 据 库 用 户 密 码 。<br />

示 例<br />

1. 下 列 命 令 在 站 点 example.com,ID 13 上 安 装 应 用 程 序 包 , 应 用 程 序 可 通 过 URL<br />

example.com/blog 访 问 , 文 件 WordPress.xml 中 定 义 了 其 设 置 , 安 装 后 , 即 创 建 安 装 数 据 库<br />

WordPress。<br />

在 Linux/Unix 中 :<br />

# ./aps -i /home/apps/WordPress.xml -package-id 13 -domain example.com -ssl<br />

false -url-prefix blog -db-name WordPress -db-user BlogAdmin -passwd P4$$w0rd<br />

在 Windows 中 :<br />

>aps -i "E:\apps\WordPress.xml" -package-id 13 -domain example.com -ssl false<br />

-url-prefix blog -db-name WordPress -db-user BlogAdmin -passwd P4$$w0rd<br />

2. 下 列 命 令 仅 使 用 所 需 选 项 安 装 同 一 应 用 程 序 , 应 用 程 序 设 置 从 STDIN 读 取 。 在 Linux/Unix<br />

中 :<br />

# cat /home/apps/WordPress.xml | ./aps --install - -package-id 13 -domain<br />

example.com -db-name WordPress -db-user BlogAdmin -passwd P4$$w0rd<br />

在 Windows 中 :<br />

>aps --install - -package-id 13 -domain example.com -db-name WordPress -db-user<br />

BlogAdmin -passwd P4$$w0rd < C:\temp\WordPress.xml<br />

3. 下 列 命 令 在 子 站 点 api.example.com 上 从 程 序 包 ID 14 安 装 应 用 程 序 , 此 应 用 程 序 不 需 要 数<br />

据 库 。<br />

在 Linux/Unix 中 :<br />

# ./aps -i /home/apps/empty.xml -package-id 14 -domain api.example.com -ssl true<br />

在 Windows 中 :<br />

>aps -i "E:\apps\empty.xml" -package-id 14 -domain api.example.com -ssl true


180 通 过 CLI 设 置<br />

应 用 程 序 设 置 定 义<br />

若 应 用 程 序 有 任 何 设 置 , 当 在 站 点 或 子 站 点 上 安 装 应 用 程 序 实 例 时 ,aps 实 用 程 序 从 文 件 或<br />

STDIN 读 取 应 用 程 序 设 置 定 义 。<br />

设 置 定 义 应 为 结 构 如 下 的 XML 文 件 :<br />

• settings, required<br />

Root XML 元 素 , 包 含 设 置 集 和<br />

• setting, required<br />

设 置 定 义<br />

• name, required<br />

指 定 设 置 名 称 , 从 应 用 程 序 包 元 数 据 文 件 中 获 取 设 置 ID<br />

("setting[@id]")(APP-META.xml 位 于 *.app.zip)。<br />

• value, required<br />

例 如 ,<br />

指 定 设 置 值 。<br />

<br />

< 设 置 ><br />

< 设 置 。><br />

admin_email<br />

johndoe@example.com<br />

<br />

< 设 置 。><br />

admin_passwd<br />

p4$$w0rd<br />

<br />

< 设 置 。><br />

site_name<br />

iScripts socialWare<br />

<br />

< 设 置 。><br />

locale<br />

en-US<br />

<br />


通 过 CLI 设 置 181<br />

检 索 可 用 数 据 包<br />

若 要 检 索 应 用 程 序 包 信 息 (ID、 名 称 、 版 本 、 发 行 号 、 厂 商 、 打 包 程 序 ), 使 用 命 令 :<br />

aps <br />

格 式 如 下 。<br />

在 Linux/Unix 中 :<br />

./aps -gp<br />

在 Windows 中 :<br />

aps -gp

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!