可通过SSH密钥+循环脚本批量部署宝塔面板:准备IP列表文件servers.txt,编写shell脚本逐台执行官方一键安装命令,要求本地已配置免密SSH且可直连各服务器。

如果您需要在多台云服务器上批量部署宝塔面板,手动逐台登录安装效率低下且易出错。以下是通过脚本实现自动化分发与安装的多种可行方法:
一、基于SSH密钥+循环执行的Shell脚本方案
该方法利用本地已配置免密登录的SSH环境,通过for循环遍历服务器IP列表,在每台目标主机上远程执行宝塔官方一键安装命令。要求本地机器能直连各云服务器且已分发SSH公钥。
1、准备包含所有目标服务器IP地址的文本文件,例如 servers.txt,每行一个IP,格式为:192.168.1.100
2、编写install_bt.sh脚本,内容如下:
#!/bin/bash
while read ip; do
echo "正在向 $ip 部署宝塔面板...";
ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no root@$ip 'curl -sSO http://download.bt.cn/install/install_6.0.sh && bash install_6.0.sh';
done
3、赋予脚本执行权限:chmod +x install_bt.sh
4、运行脚本:./install_bt.sh
5、执行过程中如某台服务器连接失败或超时,脚本将继续尝试下一台;务必确保目标服务器已开放22端口且root用户SSH登录可用
二、使用Ansible批量编排部署方案
Ansible无需在被控端安装代理,仅依赖Python和SSH,适合跨厂商云服务器统一管理。通过playbook定义标准化安装流程,支持错误中断、幂等性及结果汇总。
1、在控制机安装Ansible:pip3 install ansible
2、配置inventory文件(如hosts.ini),按组列出服务器:
[bt_servers]
192.168.1.101
192.168.1.102
192.168.1.103
3、编写bt_install.yml playbook:
- hosts: bt_servers
become: true
tasks:
- name: 下载并执行宝塔安装脚本
shell: curl -sSO http://download.bt.cn/install/install_6.0.sh && bash install_6.0.sh
args:
executable: /bin/bash
4、运行部署命令:ansible-playbook -i hosts.ini bt_install.yml
5、首次运行前需通过ansible all -m ping -i hosts.ini验证节点连通性
三、基于SaltStack的远程状态推送方案
SaltStack采用Master-Minion架构,适合长期运维场景。通过定义state文件,将宝塔安装过程声明为可重复执行的状态,支持高并发下发与实时反馈。
1、在Master节点安装salt-master,在各云服务器安装salt-minion并完成认证
2、创建宝塔安装state文件 /srv/salt/bt/install.sls:
install_bt_panel:
cmd.run:
- name: curl -sSO http://download.bt.cn/install/install_6.0.sh && bash install_6.0.sh
- unless: test -f /www/server/panel/BTPanel.py
3、执行批量部署命令:salt 'web*' state.apply bt.install
4、salt '*' cmd.run 'bt default' 可在部署完成后批量获取各节点面板初始账号密码
四、使用Terraform结合User Data初始化方案
适用于新购云服务器场景。通过Terraform定义云资源,并在创建实例时注入User Data脚本,使宝塔面板在系统首次启动时自动安装,实现基础设施即代码(IaC)式交付。
1、在Terraform配置中为每个云服务器资源添加user_data参数:
user_data = #!/bin/bash
curl -sSO http://download.bt.cn/install/install_6.0.sh
bash install_6.0.sh
EOF
2、确保云平台支持User Data(如阿里云、腾讯云、AWS EC2均支持),且实例使用的镜像已预装cloud-init服务
3、执行terraform apply触发资源创建与脚本注入
4、User Data脚本仅在实例首次启动时执行一次,后续重启不重复运行
五、基于Docker容器化轻量部署方案
若目标服务器已运行Docker,可通过容器方式快速启动宝塔面板Web界面,避免直接修改宿主系统环境,适用于测试或隔离需求强的场景。
1、在各服务器执行docker命令拉取并运行封装好的宝塔镜像:
docker run -d --name bt-panel -p 8888:8888 -p 8889:8889 -p 80:80 -p 443:443 -v /www:/www -v /home/wwwlogs:/home/wwwlogs --privileged --restart=always jasonrivers/bt-panel
2、等待容器启动后,访问 http://服务器公网IP:8888 即可进入面板
3、该镜像非宝塔官方发布,使用前需验证其来源可信性与版本安全性










