在同一个服务器上安装两个宝塔面板(Panel)是完全可行的,但需要遵循特定的步骤以避免端口冲突和文件路径覆盖。
宝塔面板默认占用 8888 端口、www 目录以及 root 用户权限。要安装第二个实例,核心思路是:修改安装脚本中的端口号,并将数据目录分离。
以下是具体的操作方案:
核心前提
- 系统版本:建议两个面板都使用相同的操作系统版本(如都是 CentOS 7/8 或 Ubuntu 20.04),以减少依赖库冲突风险。
- 权限:你需要拥有服务器的
root权限。 - 网络:确保防火墙已放行你计划使用的两个不同端口(例如 8888 和 9888)。
方法一:通过修改安装命令参数(推荐)
这是最标准的方法。宝塔官方在安装脚本中提供了 port 参数来指定面板端口。
第一步:安装第一个面板(默认配置)
如果你还没有安装任何面板,或者已经有一个在运行,请跳过此步。如果当前没有,直接执行默认命令:
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
此时面板运行在 http://IP:8888。
第二步:安装第二个面板(修改端口)
为了区分两个面板,我们需要修改安装命令中的端口参数。假设我们要将第二个面板安装在 9888 端口:
# 注意:这里使用了 --port=9888 参数
wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec --port=9888
关键点说明:
--port=9888:告诉安装程序不要使用默认的 8888,而是使用 9888。- 安装过程中,脚本会自动检测端口是否被占用。如果被占用会报错,请确保 9888 未被其他服务(如 Nginx/Apache 或其他面板)使用。
- 数据隔离:宝塔的安装脚本通常会将第二个面板的数据存储在
/www/server/panel_backup或类似路径下(具体视版本而定),或者它会自动重命名配置文件,避免覆盖第一个面板的配置。
注意:在某些旧版本脚本中,可能不支持直接通过命令行参数修改所有路径。如果上述命令导致路径冲突,可能需要手动修改安装脚本
install.sh中的变量,或者采用下面的“方法二”进行更彻底的隔离。
方法二:彻底隔离(手动修改脚本 + 多实例模式)
如果你担心两个面板共用某些全局资源(如数据库连接池、PHP 版本等)产生冲突,或者上述简单修改无法成功,可以采用“多实例”逻辑。
-
下载并解压脚本:
mkdir /tmp/bt_install cd /tmp/bt_install wget https://download.bt.cn/install/install_6.0.sh chmod +x install_6.0.sh -
编辑脚本修改关键变量:
使用vi install_6.0.sh打开文件,找到以下变量并进行修改:bt_port: 改为9888(或其他未占用的端口)bt_path: 建议改为/www/server/panel2(避免与第一个面板的/www/server/panel冲突)www_root: 建议改为/www/wwwroot2(可选,防止网站文件混在一起)
-
执行安装:
bash install_6.0.sh由于我们修改了脚本内部变量,它会按照新设定的路径和端口安装。
第三步:配置防火墙与安全组
安装完成后,必须开放新面板的端口,否则无法访问。
-
服务器防火墙 (Firewalld/UFW):
# CentOS 7+ firewall-cmd --zone=public --add-port=9888/tcp --permanent firewall-cmd --reload # Ubuntu ufw allow 9888/tcp -
云服务商安全组:
登录阿里云、腾讯云、AWS 等控制台,在“安全组”规则中添加入站规则,允许 TCP 协议的 9888 端口。
第四步:验证与使用
-
访问地址:
- 面板 1:
http://你的IP:8888 - 面板 2:
http://你的IP:9888
- 面板 1:
-
注意事项:
- 网站目录:虽然面板可以独立管理,但建议你在创建站点时,明确指定不同的根目录(例如
www1.com放在/www/wwwroot/siteA,www2.com放在/www/wwwroot/siteB),以免文件互相覆盖。 - 数据库:两个面板默认都会尝试连接本地 MySQL。如果它们共用一个 MySQL 实例(默认情况),需要注意账号密码冲突。如果希望完全隔离,可以在第二个面板中安装独立的 MySQL 实例(修改端口为 3307 等),但这会增加服务器负载。
- Nginx/Apache:两个面板可能会尝试控制同一个 Web 服务器进程。如果在第二个面板中添加了新的 Nginx 站点,可能会导致第一个面板管理的站点配置丢失或冲突。最佳实践是只在一个面板中管理 Web 服务,另一个面板仅作为备份或特定用途,或者在第二个面板中禁用 Web 服务模块。
- 网站目录:虽然面板可以独立管理,但建议你在创建站点时,明确指定不同的根目录(例如
总结
要在一个服务器安装两个宝塔:
- 保持第一个面板不变(端口 8888)。
- 使用
--port=9888参数重新运行安装脚本来安装第二个面板。 - 务必在防火墙和安全组中放行新端口。
- 小心管理网站目录和 Web 服务配置,避免进程冲突。
警告:在生产环境中维护两套面板会增加运维复杂度,且容易因配置混乱导致服务中断。除非有特殊的测试需求或灾难恢复需求,否则通常建议使用 Docker 部署第二个环境,或者使用虚拟主机/容器技术来隔离业务,而不是在同一 OS 上跑两个完整的宝塔面板。
CLOUD云