一个VPS上装了87个网站只用了一下午,以前手动一个个建要两周,后来发现差的是这5个工具
如果你试过手动建10个以上的WordPress站点,应该能体会那种"重复到麻木"的感觉——添加域名、创建数据库、下载程序、配置伪静态、装插件、调主题……每个站重复同一套动作,30个站做完手已经不是自己的了。而真正批量建站的人,从50个到200个之间,时间差不过一小时。差距不在手速,在工具链。
这篇文章不聊"批量建站有没有风险"——那是你的业务决定。只讲一个问题:当你要在VPS上快速部署几十上百个网站,有哪些工具可以帮你从手动2天变成自动化2小时。
一、宝塔面板的批量导入,五分钟建50个空站
如果只推荐一个工具给"批量建站"这四个字,那就是宝塔面板。它有一个被很多人忽略的功能:在"网站"页面可以直接批量导入域名列表,一键创建站点、数据库和FTP。
这步做完,50个站点的Nginx配置、数据库、FTP账号全部就绪。但注意:这只是建了空壳,还没装WordPress程序。接下来要解决的是怎么给这50个空站批量装上程序。
宝塔API进阶:除了网页端手动导入,宝塔还提供了API接口(面板设置→API接口→开启)。拿到密钥后,可以用Python脚本直接调用 /api/site/create 接口批量建站。请求头带上 X-Sign: SHA256(密钥) 签名,POST JSON 传入域名和路径就行。适合有编程基础的人,一次写脚本终身受用。

二、WP-CLI,命令行批量装程序的神器
空站建好之后,真正的效率瓶颈在"给每个站装WordPress"。手动操作是:下载zip→解压→配置数据库→改wp-config→跑安装向导→登录后台装插件装主题。50个站就是50遍。WP-CLI把这件事压缩成一行命令。
WP-CLI 批量安装 WordPress 的核心命令
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && mv wp-cli.phar /usr/local/bin/wp
# 2. 下载WordPress核心文件
wp core download --path=/www/wwwroot/example.com --locale=zh_CN
# 3. 创建wp-config.php
wp config create --dbname=db_name --dbuser=db_user --dbpass=db_pass --path=/www/wwwroot/example.com
# 4. 一键安装(填域名、标题、管理员账号密码)
wp core install --url=example.com --title="站点标题" --admin_user=admin --admin_password=password123 --admin_email=admin@example.com --path=/www/wwwroot/example.com
# 5. 批量装插件和主题
wp plugin install yoast-seo wordfence --activate --path=/www/wwwroot/example.com
wp theme install astra --activate --path=/www/wwwroot/example.com
把上面的命令写成Shell脚本,遍历你的站点列表,50个站的安装就是几秒钟的事。脚本逻辑大概是:
# sites.txt 每行格式:域名 数据库名 数据库用户名 数据库密码
while read domain dbname dbuser dbpass; do
path="/www/wwwroot/$domain"
mkdir -p "$path"
wp core download --path="$path" --locale=zh_CN
wp config create --dbname="$dbname" --dbuser="$dbuser" --dbpass="$dbpass" --path="$path"
wp core install --url="$domain" --title="$domain" --admin_user=admin --admin_password="$(openssl rand -base64 12)" --admin_email=admin@$domain --path="$path"
wp plugin install yoast-seo --activate --path="$path"
echo "✅ $domain 安装完成"
done < sites.txt
一个容易被忽略但很关键的点:上面的脚本里 --admin_password="$(openssl rand -base64 12)" 这行是给每个站随机生成不同密码。千万不要所有站用同一个密码——一旦一个站被爆破了,全部站一起沦陷。
三、WordPress Multisite,100个站以内最省力的方案
如果你的所有子站点在同一个主题框架下、不需要独立的服务器环境,WordPress Multisite(多站点网络)比WP-CLI脚本更省事。它把多个站点的管理统一到一个后台里,共享主题和插件。
开启Multisite很简单:在wp-config.php里加一行 define('WP_ALLOW_MULTISITE', true);,然后到后台"工具→网络设置"按向导配置就行。之后在"我的站点→网络管理→站点→添加新站点"里输入子域名或子目录,一个新站几秒钟就建好了。
四、其他面板和工具,按需求选
除了宝塔,市面上还有几款面板和工具在批量建站上有各自的长处:
大多数情况下,宝塔 + WP-CLI 已经覆盖了80%的需求。CyberPanel和aaPanel适合特定场景,WebSoft9适合有运维团队的企业,黑豹这类专业系统适合做纯内容流量站群的。
选面板之外,VPS本身有几个容易忽略的坑
工具选好了,但VPS本身没配置对,建再多站也跑不稳。下面几个是批量建站时最常踩的坑:
内存和并发数要算好。WordPress一个站平均吃50-80MB内存(带缓存插件),一台4G内存的VPS理论上能跑50个站,但前提是PHP-FPM要调成按需模式(ondemand),不能开静态模式。静态模式每个PHP进程常驻内存,50个站 × 5个进程 = 2.5G直接没了。在宝塔的PHP设置里把"运行模式"改成ondemand,"最大子进程数"按(内存-1G)/ 80M 来算,留1G给系统和MySQL。
MySQL的innodb_buffer_pool_size不能太小。50个站跑在同一个MySQL上,默认128M的buffer pool根本不够用。打开宝塔的MySQL性能调整,把这个值设成服务器总内存的40%-50%。4G内存的VPS就设2G,8G就设4G。这个参数直接影响所有站点的数据库查询速度,设小了每个页面都要读硬盘,50个站一起卡。
swap必须开。很多人装完系统就忘了开swap,觉得内存够用不需要。但批量建站跑WP-CLI脚本的时候,同时下载WordPress核心文件、解压、写数据库,瞬时内存需求会超过物理内存上限。没swap的话OOM Killer会随机杀进程——可能是MySQL,可能是PHP,甚至可能是宝塔面板自己。用 free -h 看一下,如果swap是0,执行 fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile 建一个4G的swap,写入/etc/fstab让重启后自动挂载。
五、整条批量建站流水线怎么跑
前面讲的是工具,这里把整条流水线串起来。从拿到一台新VPS到上面跑满50个站,最顺的路径是这样的:
第一步:环境就绪(15分钟)

装宝塔 → 装LNMP → 开API接口拿密钥 → 确认PHP版本和扩展都装好了
第二步:批量建空站(5分钟)
宝塔批量导入域名CSV → 勾选"同时创建数据库和FTP" → 50个站的基础设施到位
第三步:批量装程序(20分钟)
跑WP-CLI批量脚本 → 下载WordPress核心 → 创建配置文件 → 一键安装 → 批量装插件和主题
第四步:统一配置(10分钟)
WP-CLI批量设置固定链接格式(/%postname%/)、关闭评论、删除默认页面和插件、设置时区和语言
第五步:SSL证书和备份(15分钟)
宝塔一键申请Let's Encrypt泛域名证书 → 设置自动续期 → 配置自动备份到云存储
这条流水线跑下来,50个站从零到全部上线大约1小时。如果你有100个以上的站点、需要多IP隔离,这时候要考虑的就不是单台VPS上的效率了,而是多台服务器之间的协调——但那属于另一篇文章的范畴了。
还有一个小技巧:批量建站后,用WP-CLI的 wp plugin update --all 和 wp core update 命令写一个cron脚本,所有站每周自动更新插件和核心。50个站如果手动一个个登录后台点更新,每周至少浪费一个小时。这些重复操作全部交给脚本,你只负责内容就行了。
六、模板站策略,让每个新站自带配置
前面讲的是"建站"的效率,但还有一个更省事的方法:先做一个完美的模板站,后续所有站点直接克隆它。
具体做法:先在一个域名上完整搭好一个站——主题调好、插件装好、SEO设置配好、固定链接调好、垃圾评论关掉、默认页面删掉、甚至写好几篇示范文章。然后用 wp db export 导出数据库,把网站文件和SQL打包成一个模板包。以后每新建一个站,WP-CLI脚本里直接用模板数据库导入替代 wp core install,再用 wp search-replace 把模板域名替换成新域名。
# 1. 导入模板数据库
mysql -u root -p new_db < template.sql
# 2. 替换域名(从模板域名换成新域名)
wp search-replace 'template.com' 'newsite.com' --path=/www/wwwroot/newsite.com
# 3. 更新站点URL
wp option update home 'https://newsite.com' --path=/www/wwwroot/newsite.com
wp option update siteurl 'https://newsite.com' --path=/www/wwwroot/newsite.com
模板站策略把每个新站的"调主题+装插件+改设置"这个最耗时的环节直接跳过了。配合WP-CLI脚本,一个站从零到完整上线控制在30秒以内。
最后说一点:批量建站的工具链摆在这里,但工具本身不能替代你对每个站点内容的投入。建站快不等于站能活,建100个站如果每个站都是空壳,不如把10个站做扎实。工具解决的是"不要花时间在重复劳动上"这件事,把省下来的时间用在内容上,才是批量建站的价值。

