宝塔面板API调用,自动化创建网站数据库
宝塔面板提供了一套完整的API接口,允许你通过HTTP请求远程创建网站、数据库、FTP等资源。
对于需要批量部署网站或集成到自有系统的运维人员来说,使用API调用比手动在面板点击效率高得多。
本文面向零基础用户,从获取API密钥开始,逐步演示如何用curl命令自动化创建网站和数据库,并给出常见报错的排查方法。
调用前需要准备什么
开始之前,请确认你具备以下条件:
- 一台已安装宝塔面板的服务器,面板版本建议为7.x或以上(不同版本API路径可能略有差异,建议以官方文档为准)。
- 拥有面板的登录地址、用户名和密码。
- 服务器防火墙已放行面板端口,且允许你当前IP访问。
- 基本的Linux命令行操作能力,会使用
curl或wget。
关键一步是获取API密钥。 登录宝塔面板后,点击左侧菜单“面板设置”,找到“API接口”选项,开启API并复制接口密钥(token)。
同时,在“IP白名单”中添加你的调用来源IP,否则请求会被拒绝。
构造API请求的基本格式
宝塔面板API的调用地址通常为:
http://面板IP:面板端口/API接口路径?参数1=值1&参数2=值2
所有请求都需要在URL中附带key参数,值为你复制的API密钥。
例如:
http://192.168.1.100:8888/site?action=AddSite&key=你的API密钥
注意: 生产环境建议使用HTTPS,避免密钥在传输中泄露。
如果面板开启了SSL,将http改为https即可。
自动化创建网站的具体步骤
创建网站接口调用
宝塔创建网站的API路径为/site?,支持POST或GET请求。
action=AddSite
以下是一个完整的curl示例:
curl -X POST "http://192.168.1.100:8888/site?action=AddSite" \
-d "key=你的API密钥" \
-d "webname={\"domain\":\"example.com\",\"domainlist\":[\"www.example.com\"],\"count\":0}" \
-d "type=PHP" \
-d "version=74" \
-d "port=80"
参数说明:
webname:JSON字符串,包含主域名domain、附加域名列表domainlist。type:网站类型,如PHP、HTML等。version:PHP版本,如74代表PHP 7.4。port:端口,通常为80。
执行后返回JSON格式的结果,若status为true,表示网站创建成功,同时会返回网站ID和根目录路径。
创建数据库接口调用
创建数据库的API路径为/database?,示例命令:
action=AddDatabase
curl -X POST "http://192.168.1.100:8888/database?action=AddDatabase" \
-d "key=你的API密钥" \
-d "name=example_db" \
-d "db_user=example_user" \
-d "password=你的数据库密码" \
-d "type=MySQL" \
-d "version=5.7"
参数说明:
name:数据库名。db_user:数据库用户名。password:数据库密码,建议使用强密码。type:数据库类型,如MySQL、MongoDB等。version:数据库版本,需与已安装的版本一致。
成功时返回status: true,并提示数据库创建完成。
常见报错与避坑指南
请求被拒绝或返回“权限验证失败”
- 检查API密钥是否填写正确,注意不要有多余空格。
- 确认调用IP已加入面板的IP白名单。
- 如果面板开启了“API接口”但未开启“允许跨域”,部分调用方式可能受限。
创建网站时提示“域名已存在”
说明该域名已在面板中绑定过。
可以先调用/site?删除旧站点,或更换域名。
action=DeleteSite
数据库创建失败,提示“用户已存在”
数据库用户名在MySQL中必须唯一。
如果之前创建过同名用户,需要先删除或更换用户名。
返回“未安装PHP”或“未安装MySQL”
API不会自动安装软件。
请先在宝塔面板的“软件商店”中安装对应版本的PHP和MySQL,再执行API调用。
如何验证自动化结果
执行完API调用后,可以通过以下方式确认是否成功:
- 登录宝塔面板,在“网站”列表中查看新站点是否出现。
- 在“数据库”列表中检查新数据库和用户是否创建。
- 访问网站域名,若返回默认页或PHP探针,说明网站已正常运行。
- 使用
mysql -u用户名 -p密码 -e "show databases;"命令验证数据库连接。
自动化脚本建议加入错误处理,例如判断返回JSON中的status字段,失败时记录日志并重试。
适合批量操作的脚本思路
如果你需要创建多个网站和数据库,可以将上述curl命令写入Shell脚本,用循环读取域名列表。
例如:
#!/bin/bash
for domain in example1.com example2.com; do
curl -X POST "http://192.168.1.100:8888/site?action=AddSite" \
-d "key=你的API密钥" \
-d "webname={\"domain\":\"$domain\",\"domainlist\":[\"www.$domain\"]}" \
-d "type=PHP" \
-d "version=74" \
-d "port=80"
done
注意: 脚本中不要硬编码API密钥,建议使用环境变量或配置文件读取,避免泄露。
关于安全与版本兼容的提醒
宝塔面板的API接口在不同版本中可能存在参数差异,调用前建议查阅对应版本的官方API文档。
同时,API密钥拥有较高权限,请勿在客户端代码或公开仓库中暴露。
如果不再使用API,及时在面板中关闭接口并删除密钥。
总结: 通过宝塔面板API自动化创建网站和数据库,核心是获取密钥、构造正确参数、处理返回结果。
掌握这些步骤后,你可以将建站流程集成到自有系统中,显著减少重复操作。
遇到报错时,优先检查密钥、IP白名单和软件依赖,多数问题都能快速定位。