必须先开启并验证宝塔api权限,配置接口地址、密钥和ip白名单;调用/sites/create_site需严格校验webserver(nginx/apache)、type(php/static/proxy)和path(存在且有写入权的绝对路径)。

宝塔 API 批量添加站点:必须先开启并验证接口权限
不开启 API,所有脚本和工具都只是摆设。宝塔默认关闭 API,且接口地址、密钥、IP 白名单三者缺一不可。
- 登录宝塔后,进入「面板设置」→「API 接口」,勾选「启用 API」,设置强密码(
api_key),并严格限制allow_ip(建议只填你发请求的服务器 IP) - 接口基础地址是
http://你的服务器IP:8888/api(非 80 端口!非 HTTPS!除非你配了反代且启用了 SSL) - 调用前务必用
curl手动测通:curl -X POST "http://192.168.1.100:8888/api/login" \ -d "username=你的用户名" \ -d "password=你的密码"
返回{"status":true,"msg":"登录成功"}才算真正可用
用 Python 调宝塔 API 添加站点:绕不开的三个参数校验
直接 POST /sites/create_site 失败?大概率是 webserver、type、path 这三个字段没对上宝塔内部规则。
-
webserver必须是字符串"nginx"或"apache"(注意小写,不能是"Nginx"或"nginx1.22") -
type决定站点类型:"php"(带 PHP 环境)、"static"(纯静态)、"proxy"(反向代理),填错会导致创建后无法启动 -
path必须是绝对路径,且父目录需已存在、有写入权限(如/www/wwwroot/example.com),宝塔不会自动创建多层目录 - 示例关键调用片段:
data = { "webserver": "nginx", "domain": "test1.example.com", "type": "static", "path": "/www/wwwroot/test1.example.com" } requests.post("http://192.168.1.100:8888/api/sites/create_site", headers={"Content-Type": "application/x-www-form-urlencoded"}, data=data)
宝塔批量管理工具(bt-tools)常见失败原因
第三方工具如 bt-tools 封装了 API,但默认配置极易踩坑——它不处理证书、不校验域名合法性、也不管你有没有装对应运行环境。
- 执行
bt addsite报错PHP version not found?说明你指定的--php-version(如74)在面板里未安装或未启用,得先去「软件商店」装好对应 PHP 并启动 - 用
--ssl自动申请证书却失败?Certbot 需要 80 端口空闲,且域名 DNS 必须已解析到该服务器,否则 ACME 会直接返回dns :: DNS problem: NXDOMAIN looking up A for xxx - 批量导入 CSV 时,域名列含空格或中文,工具会静默跳过该行——检查日志要看
/www/server/panel/logs/api.log,别只盯终端输出
批量操作后必须手动确认的两件事
API 和工具能建站,但不能替代人工判断是否真就绪。尤其当批量数量超过 10 个时,以下两点几乎必出问题。
- PHP 站点的
open_basedir隔离默认开启,但新站点的配置文件里可能漏写fastcgi_param PHP_ADMIN_VALUE "open_basedir=...",导致跨目录包含失败,现象是Warning: include(): open_basedir restriction in effect - Nginx 配置中,多个站点共用同一端口时,
server_name若含通配符(如*.example.com)且顺序靠后,会覆盖前面精确匹配的域名,结果就是部分域名 502 或 404
批量不是终点,每个站点的 nginx -t && nginx -s reload 和首页 HTTP 状态码抽查,没法省
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










