场景:内网无外网服务器,源码编译部署软件(Nginx/httpd 等)
核心思想:找一台和内网同版本的外网机器(虚拟机/IDC 机房服务器),用--downloadonly一次性下载全部 rpm 依赖包,再迁移到内网完成编译安装
步骤1:确认当前操作系统
- 操作:
cat /etc/redhat-release、uname -m - 目的:记录系统版本 + CPU 架构(如 CentOS 7.9 x86_64)
- 意义:外网下载包的机器,必须和内网目标服务器完全一致,否则 rpm 包不兼容。
步骤2:虚拟机最小化安装
- 操作:搭建一台同版本最小化 Linux 虚拟机(不带图形界面)
- 目的:模拟 IDC 机房真实服务器环境机房服务器默认都是最小化安装,用来做测试、预下载依赖包。
步骤3:网络源
- 操作:替换 yum 源为阿里/清华网络源
- 目的:最小化系统自带源速度慢,配置外网网络源,yum 才能顺利查找、下载依赖 rpm 包。
步骤4:编译安装 + --downloadonly --路径
完整参数:
--downloadonly(只下载不安装) +--downloaddir(指定下载存放路径)
# 示例 yum install --downloadonly --downloaddir=/usr/local/src/rpms gcc make pcre-devel zlib-devel openssl-devel- 作用:yum 自动解析完整依赖树(直接依赖+依赖的依赖),把所有需要的 rpm 包全部下载到指定目录,不执行安装。
- 额外:同时下载软件源码包(nginx/httpd.tar.gz),放到同一个目录。
步骤5:IDC机房下载所需程序
两种选择:
① 本地虚拟机完成下载;
② 虚拟机磁盘/带宽不足,使用IDC机房外网服务器,执行上面
--downloadonly命令,高速下载全套rpm包+源码包。
- 下载完毕,把所有rpm包、源码打包压缩。
- 通过U盘/堡垒机/内网传输,把压缩包传到内网离线服务器。
内网服务器后续操作
- 解压压缩包,进入rpm包目录
- 本地yum安装全部依赖:
yum localinstall *.rpm -y - 解压源码包,执行编译三部曲:
./configure make make install完整逻辑一句话串讲
确认系统版本 → 搭建同版本最小化虚拟机,配置外网网络源 → 使用yum --downloadonly下载编译需要的全部依赖包(包含嵌套依赖);可以用IDC外网服务器帮忙下载 → 将rpm包+源码包迁移到内网服务器 → 内网本地安装依赖,然后源码编译安装软件。
两种方案对比(选下载节点)
- 虚拟机作为下载节点:适合学习测试,操作方便,不用登录IDC机房
- IDC机房机器作为下载节点:源码和rpm包数量大、体积大,IDC带宽高,下载更快
核心重点笔记
--downloadonly会自动获取依赖的依赖,解决离线部署缺包问题- 内外机器系统版本、架构必须一模一样
- 编译动作本身在内网执行,外网机器只负责下载包文件