使用DirectAdmin API自动化虚拟主机管理

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 之前,您需要一个登录密钥——一个充当密码替代品的安全令牌。要检索您的登录密钥:

  1. 用您的管理员帐户登录 DirectAdmin 控制面板
  2. 转到 Administrator → Settings
  3. 查找 Login KeysAPI Token 部分
  4. 复制现有密钥或创建新密钥
  5. 安全地存储此密钥,永远不要与他人分享

进行 API 调用之前需要的信息

在编写脚本之前,请收集以下详细信息:

常见 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,请遵循以下准则:

查找更多 DirectAdmin API 文档

DirectAdmin 在 `https://www.directadmin.com/features.php?id=228` 和 `https://docs.directadmin.com/` 上维护全面的官方文档,涵盖所有端点、参数和示例响应。API 文档部分特别详细。

具有完整 DirectAdmin API 支持的虚拟主机

AsiaGB 虚拟主机运行 DirectAdmin 控制面板,提供完整的 API 支持和登录密钥身份验证。功能包括 SSD 存储、99% 正常运行时间,起价 500 泰铢/年。

查看虚拟主机套餐

查看泰国虚拟主机全部套餐 →