
DirectAdmin API 是一套命令,让您通过代码或脚本控制虚拟主机帐户,而不是手动在控制面板中点击。它非常适合服务器管理员或需要自动化虚拟主机任务的任何人。本指南分步骤介绍如何使用 DirectAdmin API,包含实用的 PHP 脚本和 cURL 示例,您可以立即使用。
什么是 DirectAdmin API?
DirectAdmin API 是一个接口,允许通过 HTTP/HTTPS 请求与 DirectAdmin 控制面板通信,而无需直接访问网页界面。这让您可以编写脚本自动执行重复任务、减少错误,并与您自己的自定义应用程序集成。
DirectAdmin API 的常见用例包括:为新客户自动创建子域、计划数据库备份、配置电子邮件帐户、重启服务、管理域——所有这些都无需手动登录控制面板。
DirectAdmin API 基础 URL 和身份验证
所有 DirectAdmin API 端点共享一个通用的基础 URL 结构:
https://[hostname]:[port]/api/[endpoint]
默认端口是 2222(HTTPS),但某些虚拟主机提供商使用其他端口,如 2087、8443 或 443。
您可以通过两种方式进行身份验证:使用用户名/密码或登录密钥(令牌),后者更安全。
基础 URL 示例:如果您的服务器是 `hosting.example.com` 在端口 2222 上,并且您想创建用户,URL 将是:`https://hosting.example.com:2222/api/admin?action=user_create`
开始使用:从 DirectAdmin 获取登录密钥(API 令牌)
在使用 API 之前,您需要一个登录密钥——一个充当密码替代品的安全令牌。要检索您的登录密钥:
- 用您的管理员帐户登录 DirectAdmin 控制面板
- 转到 Administrator → Settings
- 查找 Login Keys 或 API Token 部分
- 复制现有密钥或创建新密钥
- 安全地存储此密钥,永远不要与他人分享
进行 API 调用之前需要的信息
在编写脚本之前,请收集以下详细信息:
- 主机名:服务器名称或域(例如 `hosting.example.com` 或 IP 地址)
- 端口:DirectAdmin 端口号(通常是 2222)
- 管理员用户名:您的管理员帐户名(例如 `admin`)
- 登录密钥:您上面准备的 API 令牌
- 目标用户帐户:您想要管理的虚拟主机帐户(例如 `mysite1`、`mysite2`)
常见 API 端点和基本用法
DirectAdmin API 有许多端点。以下是最常用的:
| 操作 | 端点 | 方法 |
|---|---|---|
| 获取用户信息 | /api/user?action=list |
POST |
| 创建子域 | /api/admin?action=domain_add |
POST |
| 创建电子邮件帐户 | /api/admin?action=email_add |
POST |
| 修改密码 | /api/admin?action=user_modify |
POST |
| 删除用户 | /api/admin?action=user_delete |
POST |
| 执行备份 | /api/admin?action=backup |
POST |
示例 PHP 脚本:使用 DirectAdmin API
这是一个使用 DirectAdmin API 创建子域的 PHP 脚本:
<?php
// DirectAdmin 配置
$hostname = 'hosting.example.com';
$port = 2222;
$admin_user = 'admin';
$login_key = 'YOUR_API_KEY_HERE'; // 用您的实际登录密钥替换
$username = 'mysite1'; // 目标用户帐户
// API 端点 URL
$url = "https://$hostname:$port/api/admin?action=domain_add";
// 请求参数
$data = http_build_query([
'user' => $username,
'domain' => 'blog.mysite.com', // 要创建的子域
'ip' => '1.2.3.4', // IP 地址(可选)
]);
// 初始化 cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$admin_user:$login_key");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 仅用于测试!
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 发送请求
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// 显示结果
if ($http_code === 200) {
echo "✅ 成功创建子域\n";
echo $response;
} else {
echo "❌ 发生错误。HTTP $http_code\n";
echo $response;
}
?>
⚠️ 重要:该示例包含 `CURLOPT_SSL_VERIFYPEER => false` 仅用于测试。在生产中,将其设置为 true 或使用有效证书。
从终端进行示例 cURL 命令
要直接从终端(通过 SSH)测试 API,请使用此 cURL 命令:
curl -X POST https://admin:[email protected]:2222/api/admin?action=domain_add \ -d "user=mysite1&domain=blog.mysite.com"
成功时,您将获得如下响应:
output=success text=Domain Added
自动创建电子邮件帐户
以下是通过 API 创建新电子邮件帐户的示例:
<?php
$hostname = 'hosting.example.com';
$port = 2222;
$admin_user = 'admin';
$login_key = 'YOUR_API_KEY_HERE';
$username = 'mysite1';
$url = "https://$hostname:$port/api/admin?action=email_add";
$data = http_build_query([
'user' => $username,
'domain' => 'mysite.com',
'email' => '[email protected]', // 要创建的电子邮件
'passwd' => 'StrongPass@123', // 密码
'passwd2' => 'StrongPass@123', // 确认密码
'quota' => '100M', // 配额(例如 100MB)
]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$admin_user:$login_key");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
常见错误和故障排除
使用 DirectAdmin API 时,您可能会遇到各种错误。以下是最常见的错误及其解决方案:
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
| Invalid login(登录无效) | 用户名/密码/密钥错误 | 验证用户名、登录密钥和端口是否正确 |
| User already exists(用户已存在) | 要创建的用户名已在使用中 | 选择不同的用户名 |
| Domain already exists(域已存在) | 子域已设置 | 使用不同的子域名 |
| Connection refused(连接被拒绝) | 无法访问服务器 | 检查主机名、端口和防火墙设置 |
| SSL verification failed(SSL 验证失败) | 证书问题 | 将 SSL_VERIFYPEER 设置为 false(仅测试)或使用有效证书 |
安全使用 DirectAdmin API 的最佳实践
为了安全且可靠地使用 DirectAdmin API,请遵循以下准则:
- 始终使用 HTTPS:永远不要使用普通 HTTP。您的 API 密钥必须在传输中加密。
- 保护您的 API 密钥:永远不要在其他人可以看到的源代码文件中对登录密钥进行硬编码。使用环境变量或单独的配置文件。
- 检查响应:不要假设 API 调用成功仅因为返回了 HTTP 200。验证响应正文包含 `output=success`。
- 实现错误处理:优雅地处理连接失败、超时、无效输入和其他错误情况。
- 设置超时:在 cURL 上配置合理的超时(例如 30 秒),以防止请求无限期地挂起。
查找更多 DirectAdmin API 文档
DirectAdmin 在 `https://www.directadmin.com/features.php?id=228` 和 `https://docs.directadmin.com/` 上维护全面的官方文档,涵盖所有端点、参数和示例响应。API 文档部分特别详细。
具有完整 DirectAdmin API 支持的虚拟主机
AsiaGB 虚拟主机运行 DirectAdmin 控制面板,提供完整的 API 支持和登录密钥身份验证。功能包括 SSD 存储、99% 正常运行时间,起价 500 泰铢/年。
查看虚拟主机套餐