如果你之前看过我写的宝塔批量建站教程,已经知道怎么在宝塔面板上批量添加站点、绑定域名、配置Nginx了。但很多读者看完后问了一个更前置的问题:"站点建好之后是空的,里面的网站程序怎么批量装?"——那篇也写了。
然后又有读者问了一个更更前置的问题:"我连站点都还没建呢,手里有80个域名等着创建网站,宝塔后台一个个点'添加站点'——填域名、选根目录、设PHP版本、开FTP、建数据库——一个站最少2分钟,80个站干下来一下午没了。有没有自动创建网站的工具或脚本?"
有。而且不止一种。这篇文章把四条路径——bt命令行、Python API脚本、开源GUI工具、安装时自动部署——全部实测一遍,从"零代码三行命令"到"全自动API流水线",代码和操作步骤都给你。
四条自动建站路径,一张表看清各自边界
| 路径 | 上手难度 | 单站耗时 | 批量上限 | 需编程 | 一句话 |
|---|---|---|---|---|---|
| bt命令行 | ★★★ | 约3秒 | 数百个 | 否 | 三行命令秒建,最稳最可靠 |
| Python API脚本 | ★★★★ | 约2秒 | 数千个 | 是 | 灵活性最高,可集成到CI/CD |
| 开源GUI工具 | ★★ | 约1秒 | 数千个 | 否 | 有界面、零代码、多服务器管理 |
| 面板安装时自动部署 | ★ | 一次性 | 1个 | 否 | 装面板同时建站,适合新服务器 |
一、路径一:bt命令行 —— 三行代码,零依赖,最稳的方案
宝塔面板自带一个bt命令,可以直接在SSH终端里创建站点,不需要开API、不需要装任何东西。这是2026年社区公认最可靠、最不容易出错的批量建站方式。
# 第一步:准备域名列表文件 sites.txt,每行一个域名
cat > sites.txt << EOF
site1.example.com
site2.example.com

site3.example.com
EOF
# 第二步:一行命令批量创建(74 = PHP 7.4,换成你的版本号)
while read domain; do
bt add_site $domain 74
done < sites.txt
# 就这三行。默认会自动:创建站点 + 绑定域名 + 创建数据库 + 开启FTP
bt add_site 命令做了什么(自动完成六件事)
| 1 | 创建站点配置文件 | 在 /www/server/panel/vhost/nginx/ 下生成域名.conf |
| 2 | 绑定域名 | 将域名写入Nginx/Apache的server_name |
| 3 | 创建网站根目录 | 自动创建 /www/wwwroot/域名/ 并写入默认首页 |
| 4 | 设置PHP版本 | 关联指定的PHP版本(如74=PHP7.4) |
| 5 | 创建FTP账号 | 自动生成FTP用户名和随机密码 |
| 6 | 创建数据库 | 自动创建MySQL数据库和用户 |
关键点:bt命令行是宝塔内置的原生命令,不存在"第三方插件不兼容新版宝塔"的问题。PHP版本ID怎么查?SSH输入 bt 2 看已安装的PHP版本列表,每个版本后面都有对应的数字ID。
实测数据:100个域名用bt命令行批量创建,总耗时约5分钟(每个约3秒),包括Nginx重载时间。对比手动在面板里一个一个点,一个站至少2分钟,100个站节省约3小时。
二、路径二:Python API脚本 —— 灵活性最高,适合集成到自动化流水线
如果你需要更精细的控制——比如指定数据库名、设置FTP密码、配置SSL证书、同时管理多台服务器——宝塔面板的API接口是更好的选择。下面是一份可以直接运行的Python脚本。
# -*- coding: utf-8 -*-
# 宝塔面板 API 批量自动创建网站脚本
# 使用前:面板设置→API接口→开启→获取密钥→加白名单IP
import
requests, time, hashlib, json, random, string
# ========== 配置区域(改成你自己的)==========
API_KEY =
"你的宝塔API密钥"
# 面板设置里复制
PANEL_URL =
"https://你的面板IP:8888"
# 面板地址+端口
PHP_VERSION =
"74"
# PHP版本ID
# ========== 签名函数 ==========
def
get_sign
():
nonce =
''
.join(random.choices(string.ascii_letters + string.digits, k=
12
))
now =
int
(time.time())
sign_str = nonce +
str
(now) + API_KEY
sign = hashlib.sha256(sign_str.encode()).hexdigest()
return
{
"X-Nonce"
: nonce,
"X-Time"
:
str
(now),
"X-Sign"
: sign

}
# ========== 建站函数 ==========
def
create_site
(domain):
headers = {
"Content-Type"
:
"application/json"
,
**
get_sign()}
data = {
"webname"
: domain,
"path"
:
f"/www/wwwroot/{domain}"
,
"type"
:
"php"
,
"php_version"
: PHP_VERSION
}
try
:
r = requests.post(
f"{PANEL_URL}/site/create_site"
,
headers=headers, data=json.dumps(data), timeout=
30
,
verify=
False
# 自签名证书关掉验证
)
result = r.json()
if
result.get(
"status"
):
(
f"✅ {domain} 创建成功"
)
else
:
(
f"❌ {domain} 失败: {result.get('msg')}"
)
except

Exception
as
e:
(
f"❌ {domain} 异常: {e}"
)
# ========== 批量执行 ==========
domains = [
"site1.example.com"
,
"site2.example.com"
,
# ... 更多域名
]
for
domain
in
domains:
create_site(domain)
time.sleep(
0.5
)
# 间隔0.5秒,避免触发频率限制
(
f"\n全部完成,共处理 {len(domains)} 个域名"
)
API返回的错误码速查
| 错误码 | 含义 | 解决方法 |
| -100 | 签名验证失败 | 检查拼接顺序:nonce + 时间戳 + API密钥,SHA256 |
| -101 | 参数缺失 | 检查JSON body中webname、path、type、php_version是否都有 |
| -102 | 域名已被占用 | 该域名已绑定到其他站点,先删除旧站点或换域名 |
| -103 | 目录已存在 | /www/wwwroot/域名/ 目录已存在,换路径或删除旧目录 |
注意事项:API批量建站建议每次请求间隔0.5-1秒,避免触发宝塔的频率限制。另外如果面板用了自签名SSL证书,requests要加 verify=False,否则会报SSL错误。
三、路径三:开源GUI工具 —— 有界面、零代码、支持多服务器
如果完全不想碰命令行,或者需要同时管理多台宝塔服务器,社区里有现成的开源GUI工具可以直接用。
宝塔API批量建站工具(开源免费)
| 核心功能 | 文本模式批量建站、多服务器管理、SSL证书批量申请与部署、源站配置复制、自动追加WWW域名、批量修改伪静态、PHP版本统一设定 |
| 使用方式 | 网页端操作:添加宝塔服务器地址和API密钥 → 文本粘贴域名列表 → 选择配置 → 一键批量创建 |
| 特色功能 | 支持源站配置复制(把一个站点的Nginx配置、伪静态、SSL设置一键复制到新站点);支持多服务器切换管理 |
| 支持系统 | Windows + Linux 宝塔面板 |
| 价格 | 免费 |
| 最适合 | 非技术背景的站长、需要管理多台服务器、经常批量建站+SSL证书一起搞的用户 |
baota_BT_SSL(GitHub开源)
| 核心功能 | 批量建站 + 批量SSL证书申请 + 一键HTTPS强制跳转 + 批量续签证书 + 文件批处理 |
| 定位 | 解决数万域名级别的批量建站和SSL管理需求,适合站群和大规模运维 |
| 技术栈 | 基于宝塔API,Python开发,命令行+配置文件方式运行 |
| 价格 | 免费开源 |
| 最适合 | 站群运营者、需要建站+SSL一站式搞定、域名数量在百级以上的用户 |
第三方工具的风险:社区普遍建议优先用宝塔原生的bt命令和API,不推荐使用"宝塔插件市场"里的第三方批量建站插件。原因有三:①权限过高,可能读取所有站点配置和数据库密码;②宝塔大版本更新(如v8.0+)时API可能变动,第三方插件更新不及时直接报错;③出错时日志藏在插件私有路径里,排查困难。开源GitHub工具相对靠谱,但也建议先在小范围测试再批量使用。
四、路径四:面板安装时自动部署 —— 新服务器一步到位
如果你是新服务器,还没装宝塔面板,可以在安装面板的同时就自动创建网站。宝塔官方安装脚本支持传参自动部署。
# 安装宝塔面板的同时,自动创建WordPress站点
# 参数说明:--domain=域名 --php=PHP版本 --db=自动创建数据库 --deploy=部署程序
curl -sSO https://download.bt.cn/install/install_panel.sh
bash install_panel.sh \
--domain=my-site.example.com \
--php=74 \
--db=yes \
--deploy=wordpress
适用场景:新购VPS/服务器,需要一次性搞定"装面板+建站点+装程序"。不适合已有面板想追加批量建站的场景。
五、建站跑完不等于万事大吉:批量建站后必做的三件事
六、批量建站最容易翻车的四个坑
域名没解析就开始建站
bt命令和API不会检查DNS是否已解析。如果你建了站但域名还没指向服务器IP,网站能创建成功但访问不了。先确认DNS A记录已指向服务器IP再批量建站,或者先建站后补解析。
PHP版本ID写错了
bt add_site 的PHP版本参数是数字ID,不是版本号。74代表PHP 7.4,80代表PHP 8.0,81代表PHP 8.1。不确定ID的话SSH输入 bt 2 查看已安装的PHP版本列表和对应ID。
批量建站后没有逐个验证
脚本跑完看到一堆"成功"就以为全搞定了。高并发下宝塔可能跳过某些校验——个别站点的Nginx配置可能没写进去、数据库可能没创建、FTP可能没开。跑完后花5分钟抽查几个站点,确认能正常访问。
SSL证书批量申请触发Let's Encrypt频率限制
Let's Encrypt对同一域名每周最多申请5次证书,同一IP每小时有限额。如果你批量建了100个站然后一次性全申请SSL证书,大概率会被限流。建议分批申请,每批20-30个,间隔1小时。
七、不同场景,对号入座
| 你的情况 | 推荐方案 | 原因 |
|---|---|---|
| 10-50个域名,不想写代码 | bt命令行 + sites.txt | 三行命令,零依赖,最稳定,5分钟搞定 |
| 100+个域名,需要精细控制 | Python API脚本 | 可指定数据库名、FTP密码、PHP版本,支持错误处理和日志 |
| 完全不懂命令行,要图形界面 | 开源GUI工具 | 网页操作,粘贴域名列表一键建站,还能管理多台服务器 |
| 新服务器,装面板同时建站 | 安装脚本传参自动部署 | 一步到位,装面板+建站+装程序一次性搞定 |
| 需要建站+SSL证书一起搞 | baota_BT_SSL开源工具 | 批量建站+SSL申请+HTTPS跳转一条龙,站群运营首选 |
| 建完站还要批量装WordPress | 先bt命令创建站点,再看"宝塔批量网站程序安装"教程 | 创建站点和安装程序是两个独立步骤,分开操作更清晰 |
宝塔自动创建网站这件事,2026年的最优解不是找什么"一键批量建站插件",而是用宝塔自带的bt命令行。三行代码、零依赖、不挑宝塔版本、不会因为面板升级而失效。需要更灵活的控制就用Python调API,需要图形界面就用开源GUI工具。
但无论选哪条路,建站跑完后的三件事不能省:Nginx配置检查、数据库和FTP验证、默认首页覆盖。脚本能帮你省3小时,但最后5分钟的验证,是区分"批量建站"和"批量建站不出事"的关键。
站点建好了,下一步就是在这些空站点里批量安装程序——WordPress、Typecho、Z-Blog怎么自动批量部署,可以看之前写的"宝塔批量网站程序安装"那一篇,两篇连起来就是一条完整的"批量建站→批量装程序→批量上线"流水线。
