一个服务器怎么安装两个宝塔?

在同一个服务器上安装两个宝塔面板(Panel)是完全可行的,但需要遵循特定的步骤以避免端口冲突和文件路径覆盖。

宝塔面板默认占用 8888 端口、www 目录以及 root 用户权限。要安装第二个实例,核心思路是:修改安装脚本中的端口号,并将数据目录分离

以下是具体的操作方案:

核心前提

  1. 系统版本:建议两个面板都使用相同的操作系统版本(如都是 CentOS 7/8 或 Ubuntu 20.04),以减少依赖库冲突风险。
  2. 权限:你需要拥有服务器的 root 权限。
  3. 网络:确保防火墙已放行你计划使用的两个不同端口(例如 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 版本等)产生冲突,或者上述简单修改无法成功,可以采用“多实例”逻辑。

  1. 下载并解压脚本

    mkdir /tmp/bt_install
    cd /tmp/bt_install
    wget https://download.bt.cn/install/install_6.0.sh
    chmod +x install_6.0.sh
  2. 编辑脚本修改关键变量
    使用 vi install_6.0.sh 打开文件,找到以下变量并进行修改:

    • bt_port: 改为 9888 (或其他未占用的端口)
    • bt_path: 建议改为 /www/server/panel2 (避免与第一个面板的 /www/server/panel 冲突)
    • www_root: 建议改为 /www/wwwroot2 (可选,防止网站文件混在一起)
  3. 执行安装

    bash install_6.0.sh

    由于我们修改了脚本内部变量,它会按照新设定的路径和端口安装。


第三步:配置防火墙与安全组

安装完成后,必须开放新面板的端口,否则无法访问。

  1. 服务器防火墙 (Firewalld/UFW)

    # CentOS 7+
    firewall-cmd --zone=public --add-port=9888/tcp --permanent
    firewall-cmd --reload
    
    # Ubuntu
    ufw allow 9888/tcp
  2. 云服务商安全组
    登录阿里云、腾讯云、AWS 等控制台,在“安全组”规则中添加入站规则,允许 TCP 协议的 9888 端口。


第四步:验证与使用

  1. 访问地址

    • 面板 1: http://你的IP:8888
    • 面板 2: http://你的IP:9888
  2. 注意事项

    • 网站目录:虽然面板可以独立管理,但建议你在创建站点时,明确指定不同的根目录(例如 www1.com 放在 /www/wwwroot/siteAwww2.com 放在 /www/wwwroot/siteB),以免文件互相覆盖。
    • 数据库:两个面板默认都会尝试连接本地 MySQL。如果它们共用一个 MySQL 实例(默认情况),需要注意账号密码冲突。如果希望完全隔离,可以在第二个面板中安装独立的 MySQL 实例(修改端口为 3307 等),但这会增加服务器负载。
    • Nginx/Apache:两个面板可能会尝试控制同一个 Web 服务器进程。如果在第二个面板中添加了新的 Nginx 站点,可能会导致第一个面板管理的站点配置丢失或冲突。最佳实践是只在一个面板中管理 Web 服务,另一个面板仅作为备份或特定用途,或者在第二个面板中禁用 Web 服务模块。

总结

要在一个服务器安装两个宝塔:

  1. 保持第一个面板不变(端口 8888)。
  2. 使用 --port=9888 参数重新运行安装脚本来安装第二个面板。
  3. 务必在防火墙和安全组中放行新端口。
  4. 小心管理网站目录和 Web 服务配置,避免进程冲突。

警告:在生产环境中维护两套面板会增加运维复杂度,且容易因配置混乱导致服务中断。除非有特殊的测试需求或灾难恢复需求,否则通常建议使用 Docker 部署第二个环境,或者使用虚拟主机/容器技术来隔离业务,而不是在同一 OS 上跑两个完整的宝塔面板。