用户登录
个人主页 用户中心 我的订单 添加授权 管理授权
退出登录
用户登录 用户注册
欢迎来到 UC建站系统

宝塔面板批量建站实操:50个站点从两小时到几分钟

宝塔面板官方没有"一键批量建站"按钮,但它留了三条路可以实现批量操作。每条路适合的场景不一样,成本和门槛也差很多。

一、方案总览:三条路对号入座

方案适合数量技术门槛一次建完的时间推荐度
宝塔自带批量建站5-20个★☆☆☆☆ 零门槛30秒★★★★★ 首选
Shell脚本+bt命令行20-100个★★☆☆☆ 会改脚本1分钟★★★★☆ 最灵活
Python调用宝塔API100+个/跨服务器★★★☆☆ 需要Python2分钟★★★★☆ 企业级
一句话判断:建站数量不超过20个,直接用宝塔自带的批量建站功能,零学习成本;20到100个站,写一个Shell脚本循环调用bt命令,最省事;超过100个或者要跨多台服务器批量操作,用Python调宝塔API,可以做到完全自动化。

二、方案一:宝塔自带批量建站(最省事,适合20个以内)

很多人不知道,宝塔面板从7.x版本开始就在"添加站点"功能里内置了批量建站的入口。不用装任何插件,也不用写一行代码。

操作路径:宝塔面板 → 网站 → 添加站点 → 在弹窗顶部找到「批量建站」标签页。

批量建站的格式非常简单,每行一个站点,用竖线分隔参数:

域名|根目录|FTP|数据库|PHP版本

# 示例:创建一个站点
www.shanghai-fenzhan.com|/www/wwwroot/www.shanghai-fenzhan.com|1|1|74

# 一行绑定多个域名(逗号分隔)
www.shanghai-fenzhan.com,shanghai-fenzhan.com|/www/wwwroot/www.shanghai-fenzhan.com|1|1|74

# 批量5个城市分站
www.shanghai-fenzhan.com|/www/wwwroot/www.shanghai-fenzhan.com|1|1|74
www.beijing-fenzhan.com|/www/wwwroot/www.beijing-fenzhan.com|1|1|74
www.guangzhou-fenzhan.com|/www/wwwroot/www.guangzhou-fenzhan.com|1|1|74
www.shenzhen-fenzhan.com|/www/wwwroot/www.shenzhen-fenzhan.com|1|1|74
www.chengdu-fenzhan.com|/www/wwwroot/www.chengdu-fenzhan.com|1|1|74

参数说明:

参数位置含义填法
第1列:域名站点绑定的域名多个域名用英文逗号分隔
第2列:根目录网站文件存放路径填具体路径,或填1自动生成
第3列:FTP是否创建FTP账号1创建,0不创建
第4列:数据库是否创建MySQL数据库1创建,0不创建
第5列:PHP版本站点使用的PHP版本0=纯静态,74=PHP7.4,81=PHP8.1
用Excel快速生成批量建站文本:如果你有50个城市要建分站,不用手写。在Excel里A列放城市拼音,B列用公式 ="www."&A2&"-fenzhan.com|/www/wwwroot/www."&A2&"-fenzhan.com|1|1|74",下拉填充,全选复制粘贴到宝塔批量建站框里就行。

这个方案最大的优点是零学习成本,鼠标操作,所见即所得。局限也很明显:一次最多处理几十个站,再多的话浏览器可能卡住;而且建完站后,SSL证书、伪静态、文件上传这些后续操作还是要一个一个手动搞。

1 - 宝塔面板批量建站实操:50个站点从两小时到几分钟 - UC建站系统

三、方案二:Shell脚本 + bt命令行(最灵活,适合20-100个站)

宝塔面板底层有一个bt命令行工具,所有你在网页上能做的操作,基本上都能用命令完成。写一个Shell脚本循环调用这些命令,就能实现真正的自动化批量建站。
#!/bin/bash
# 宝塔批量建站脚本
# 用法:把域名列表放进domains.txt,每行一个域名,然后执行此脚本

PHP_VERSION="74"
WEB_ROOT_BASE="/www/wwwroot"

while IFS= read -r domain; do
  # 跳过空行和注释行
  [[ -z "$domain" || "$domain" == \#* ]] && continue
  
  site_path="${WEB_ROOT_BASE}/${domain}"
  
  echo "正在创建站点: ${domain}"
  
  # 调用宝塔命令行API创建站点
  bt 14 "${domain}" "${site_path}" "1" "1" "${PHP_VERSION}"
  
  if [ $? -eq 0 ]; then
    echo "✓ ${domain} 创建成功"
  else
    echo "✗ ${domain} 创建失败"
  fi
  
  # 避免请求过快
  sleep 1
done < domains.txt

echo "批量建站完成!"

用这个脚本的前提操作:

  1. SSH登录到你的服务器
  2. 创建一个domains.txt文件,每行写一个主域名
  3. 把上面的脚本保存为batch_site.sh
  4. chmod +x batch_site.sh && ./batch_site.sh

bt命令的常用编号对照表:

命令功能
bt 14添加网站(参数:域名 目录 FTP 数据库 PHP版本)
bt 15删除网站
bt 19显示面板日志
bt 22显示面板错误日志
bt 23关闭BasicAuth认证

Shell脚本方案的优势是可以和任何Linux工具链结合——你可以把域名列表从数据库里导出、从CSV文件读取、甚至调用域名注册商API自动获取。建站完成后,你还能在同一脚本里继续写:自动上传网站源码、自动导入数据库、自动配置伪静态。

注意:bt命令的具体参数格式可能因宝塔版本不同有细微差异。建议先在测试服务器上跑一遍,确认参数顺序和格式正确再上生产环境。另外bt 14命令在不同宝塔版本中可能已经变化,如果发现不生效,可以输入bt回车查看当前版本支持的命令列表。

四、方案三:Python调用宝塔API(企业级,跨服务器批量管理)

如果你有几百个站要建,或者要同时管理多台服务器,那最好的方案是调用宝塔官方的API接口。宝塔面板提供了一个完整的RESTful API,可以程序化地完成建站、数据库管理、SSL部署、文件操作等几乎所有操作。

第一步:开启宝塔API

2 - 宝塔面板批量建站实操:50个站点从两小时到几分钟 - UC建站系统

宝塔面板 → 设置 → API接口 → 开启 → 设置密钥 → 添加IP白名单。

你会得到一个接口地址(形如 https://你的服务器IP:8888)和一个64位的API密钥。这两个东西要保管好,有它们就能完全控制你的宝塔面板。

import requests
import json
import hashlib
import time

class BTPanel:
    def __init__(self, api_url, api_key):
        self.api_url = api_url.rstrip('/')
        self.api_key = api_key
    
    def _make_sign(self):
        # 生成请求签名
        now = int(time.time())
        sign_str = self.api_key + str(now)
        sign = hashlib.md5(sign_str.encode()).hexdigest()
        return {'request_time': now, 'request_token': sign}
    
    def create_site(self, domain, path, php_version='74', ftp=True, db=True):
        # 创建站点
        url = f"{self.api_url}/site?action=AddSite"
        data = {
            'webname': json.dumps({'domain': domain, 'domainlist': [], 'count': 0}),
            'path': path,
            'type_id': '0',
            'type': 'PHP',
            'version': php_version,
            'port': '80',
            'ps': domain,
            'ftp': str(ftp).lower(),
            'sql': str(db).lower(),
            'codeing': 'utf8mb4',
            'datauser': 'true',
        }
        data.update(self._make_sign())
        resp = requests.post(url, data=data, verify=False)
        return resp.json()
    
    def batch_create_sites(self, domains_file, php_version='74'):
        # 批量创建站点
        results = []
        with open(domains_file, 'r') as f:
            domains = [line.strip() for line in f if line.strip() and not line.startswith('#')]
        
        for i, domain in enumerate(domains, 1):
            path = f"/www/wwwroot/{domain}"
            print(f"[{i}/{len(domains)}] 创建 {domain} ...")
            result = self.create_site(domain, path, php_version)
            status = '✓' if result.get('status') else '✗'
            print(f" {status} {result.get('msg', '')}")
            results.append({'domain': domain, 'result': result})
            time.sleep(1)
        return results

# 使用示例
if __name__ == '__main__':
    api = BTPanel(
        api_url='https://你的服务器IP:8888',
        api_key='你的64位API密钥'
    )
    api.batch_create_sites('domains.txt', php_version='74')
    print("全部完成!")
API方案的核心优势:可以同时管理多台服务器——你在一台电脑上跑一个Python脚本,就能往10台宝塔服务器上批量建站。而且API能做的不只是建站,还包括获取站点列表、修改配置、部署SSL、创建数据库、上传文件等,基本上宝塔面板的所有操作都能程序化。

五、建站只是第一步,批量管理才是重头戏

站点建好了,事情才刚开始。如果你批量建了50个站,接下来每个站都需要:部署SSL证书、设置伪静态、上传网站文件、导入数据库、配置定时备份。这些事情如果还是一个一个手动搞,批量建站省下的时间全搭回去了。

批量部署SSL证书

宝塔面板9.4.0以上版本支持SSL自动部署功能:先在宝塔云端上传证书,然后在官网后台创建同步任务,多台服务器的站点就能自动拉取证书。如果你的版本较低,可以用Let's Encrypt的ACME协议写脚本批量申请:

#!/bin/bash
# 批量申请Let's Encrypt证书

while IFS= read -r domain; do
  [[ -z "$domain" || "$domain" == \#* ]] && continue
  echo "申请证书: ${domain}"
  # 调用宝塔API申请Let's Encrypt证书
  curl -k -X POST "https://面板地址:8888/ssl?action=ApplyDVSSL" \
    -d "domain=${domain}&auth_type=http&auth_to=主域名" \
    --header "X-Sign: $(生成签名)"
  sleep 5
done < domains.txt

批量设置伪静态

如果所有站点用同一套程序(比如全部是WordPress),伪静态规则是一样的。最直接的方法不是逐个站点设置,而是直接操作Nginx配置文件:

3 - 宝塔面板批量建站实操:50个站点从两小时到几分钟 - UC建站系统

# 进入Nginx站点配置目录
cd /www/server/panel/vhost/nginx

# 遍历所有站点配置文件,批量替换伪静态规则
for conf in *.conf; do
  # 检查是否已包含WordPress伪静态,没有就追加
  if ! grep -q "index.php" "$conf"; then
    echo "添加伪静态: $conf"
  fi
done

# 重载Nginx使配置生效
nginx -s reload
批量管理最容易踩的坑:Nginx配置文件直接批量改完记得先nginx -t测试语法,确认没问题再reload。批量操作时如果有一个站点配置出错,整个Nginx都会起不来,所有站点全部挂掉。

六、三种方案的成本和限制,给你算清楚了

对比维度自带批量建站Shell脚本Python API
上手时间5分钟30分钟1-2小时
建站速度一次性提交逐条循环逐条+多线程
跨服务器不支持需写多份脚本天然支持
错误处理人工检查脚本判断完善的异常处理
SSL批量部署手动可扩展API一键
日志和记录可输出文本结构化日志

七、一个很多人忽略的关键细节

批量建站的时候,域名解析和DNS要提前搞定。如果你在宝塔里批量建了50个站点,但域名的A记录还没解析到服务器IP,宝塔仍然会成功创建站点——但后续申请SSL证书的时候会失败,因为Let's Encrypt需要验证域名解析。正确的顺序是:

  1. 先在DNS服务商处批量添加A记录解析(大部分DNS服务商支持批量导入)
  2. 等10-30分钟解析生效(可以用nslookupdig命令验证)
  3. 确认解析生效后再在宝塔批量建站
  4. 建站完成后立即批量申请SSL证书
  5. 最后上传网站文件、导入数据库

还有一个容易被忽略的:宝塔面板默认会给每个站点创建一个同名的MySQL数据库和FTP账号。如果你批量建了100个站,就会有100个数据库和100个FTP账号。这些资源本身不占多少空间,但MySQL连接数上限是有限的——如果每个数据库都有持续连接,可能会触发MySQL的max_connections限制。建议批量建站后检查MySQL配置,必要时调大连接数上限。

八、UC建站系统怎么解决批量建站问题

🚀 可视化批量建站

UC建站系统内置了批量站点管理功能,上传一个域名列表就能自动完成建站、数据库创建、程序部署、SSL证书申请的全流程。不用写一行代码,也不用登录宝塔面板。

📋 批量运维面板

所有站点统一管理——批量更新程序、批量备份、批量检查死链、批量提交搜索引擎收录。100个站和1个站的操作复杂度一样,不需要逐站点登录操作。


批量建站的本质不是"省点鼠标的时间",而是让你有精力去做更有价值的事。花一下午写好脚本,以后每次批量建站只需要跑一行命令,这才叫真正的自动化。

相关推荐
在线客服
👇找客服拿折扣
QQ咨询&售后
在线时间
11:00 ~ 5:30
QQ:3155555535
👇联系QQ
👇联系WX
首页 程序 帮助 登录