登录
首页 >  文章 >  php教程

内网离线安装宝塔教程详解

时间:2026-05-07 12:54:58 300浏览 收藏

本文详解了在完全无外网连接的内网环境中离线安装宝塔面板的完整、可靠方案,直击官方一键脚本因强制联网而彻底失效的核心痛点;强调必须通过外网机器执行带 `-d` 参数的安装脚本精准抓取与目标系统完全匹配(OS版本、架构、依赖树)的全部资源,构建本地YUM仓库解决依赖冲突,并手动部署插件、补全缺失库文件、调整SELinux及IP白名单等关键细节,破除网上流传的“全量RPM包”误区,为政企、金融、信创等强隔离场景提供可落地、零踩坑的实战指南。

内网环境如何离线安装宝塔面板_下载完整RPM包及依赖本地部署

内网服务器根本连不上宝塔官网,btpanel 安装脚本直接失败

宝塔官方安装脚本 curl -sSO https://download.bt.cn/install/install_6.0.sh 在内网会卡死或报 Connection refused,因为脚本本身要联网下载二进制、配置模板、甚至校验远程签名。这不是“网络慢”的问题,是根本没出口路由——必须彻底离线。

关键点:宝塔不提供“一键离线安装包”,所谓“完整RPM包”其实是误导。它的核心组件(bt 命令、面板后端 panel、Web服务 nginx 模块等)分散在多个 RPM 中,且依赖系统级库(如 python3-piplibseccompopenssl11-libs),不同 CentOS/Alibaba Linux 版本依赖树差异极大。

  • 别信网上打包的“全量RPM合集”,多数漏了 glibc 小版本补丁或 SELinux 策略模块
  • CentOS 7 和 CentOS 8 的 python3 运行时完全不兼容,混用会导致 ImportError: cannot import name 'main'
  • 宝塔 7.x 起强制要求 systemd,在某些定制内核(如某些国产 OS)上会静默退出,无错误日志

从外网机器完整抓取安装链:用 install.sh-d 参数生成离线资源

官方其实留了离线入口:加 -d 参数可让安装脚本只下载不执行,并把所有文件存到本地目录。这是唯一可靠来源。

操作步骤(在外网 CentOS 7 机器上执行):

mkdir /tmp/bt-offline
cd /tmp/bt-offline
curl -sSO https://download.bt.cn/install/install_6.0.sh
bash install_6.0.sh -d

执行完后,/tmp/bt-offline 下会出现:panel 目录(含 Python 后端)、install.sh 备份、rpm 子目录(含所有 RPM 包)、data(数据库模板)。注意:rpm 目录里还包含 yum 仓库元数据(repodata),这个不能丢——内网 yum localinstall 需要它解析依赖。

  • 务必用和目标内网服务器**完全一致的 OS 版本和架构**(cat /etc/redhat-release; uname -m)执行该命令
  • 如果内网是 aarch64,外网 x86_64 机器抓下来的 RPM 无法安装,会报 package xxx is intended for a different architecture
  • -d 不会下载 PHP/MySQL 等运行环境插件,那些需单独处理(见下一条)

内网部署时,yum localinstallFailed dependencies 怎么办

直接 yum localinstall *.rpm 必然失败,因为宝塔 RPM 显式声明了对 epel-releasepolicycoreutils-python 等非基础包的依赖,而这些不在你抓取的 RPM 包里。

正确做法是构建本地 YUM 仓库并启用:

cd /tmp/bt-offline/rpm
createrepo .
yum-config-manager --add-repo file:///tmp/bt-offline/rpm
yum clean all

然后安装(顺序很重要):

  • 先装 bt-commonbt-python(提供基础运行时)
  • 再装 bt-panel(主服务)
  • 最后运行 /www/server/panel/init.sh start,而不是 service bt start(后者已被废弃)

常见报错及解法:

  • error while loading shared libraries: libpython3.7m.so.1.0 → 缺 Python 共享库,从外网机器拷贝 /usr/lib64/libpython3.7m.so.1.0 到内网 /usr/lib64/ldconfig
  • Permission denied: '/www/server/panel/data/default.db' → SELinux 未关闭,临时执行 setenforce 0,或永久关闭(sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

插件(PHP/Nginx/MySQL)无法在线安装,得手动塞进 /www/server

宝塔面板里点“软件商店”全是空白,因为插件列表从 https://api.bt.cn 加载。但插件本体(tar.gz 包)其实已随 -d 下载到 /tmp/bt-offline/panel/install 下,只是没自动解压。

以 PHP 7.4 为例:

  • 找到 /tmp/bt-offline/panel/install/php-7.4.tar.gz
  • 解压到 /www/server/php/74(路径必须严格匹配,否则面板识别不到)
  • 复制 /tmp/bt-offline/panel/install/php-7.4.init/etc/init.d/php-fpm-74,并 chmod +x
  • 执行 /etc/init.d/php-fpm-74 start,再刷新面板,状态就变成“已安装”

注意:php-7.4.tar.gz 内部的二进制是编译好的,但依赖 glibc 2.17+zlib,如果内网系统太老(如 CentOS 6),会直接 Segmentation fault —— 这种情况只能升级系统,宝塔官方早已不支持 CentOS 6。

最易被忽略的一点:面板后台的“安全”→“IP白名单”默认开启,内网访问时可能被拦,首次登录前记得用 bt 10 关闭,或提前在 /www/server/panel/data/limitip.conf 里写入内网网段。

到这里,我们也就讲完了《内网离线安装宝塔教程详解》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>