当前位置: 首页 > news >正文

基于HTTP构建局域网内YUM网络源:详细操作指南(太细)

目录

    • 一、前提与核心原理
      • 1.1. 环境要求
      • 1.2. 核心原理
    • 二、步骤1:服务器端搭建HTTP服务
      • 2.1. 安装Apache服务
      • 2.2. 配置防火墙与SELinux
      • 2.3. 验证HTTP服务可用性
    • 三、步骤2:服务器端配置YUM网络源文件
      • 3.1. 准备软件包目录(从ISO提取)
      • 3.2. 验证HTTP目录可访问
    • 四、步骤3:客户端配置HTTP YUM源
      • 4.1. 备份客户端原有YUM源
      • 4.2. 创建HTTP YUM源的repo文件
    • 五、步骤4:验证HTTP YUM网络源可用性
      • 5.1. 客户端清理并生成缓存
      • 5.2. 测试软件安装
    • 六、进阶:优化与扩展
      • 6.1. 增加源的稳定性
      • 6.2. 支持多版本/多架构
    • 七、常见问题与排查
      • 7.1. 客户端无法访问HTTP源:“Could not resolve host”
      • 7.2. 客户端提示“ repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found”
      • 7.3. GPG校验失败:“BADSIG”或“public key not available”
    • 八、总结

在多台Linux服务器的局域网环境中,每台机器单独配置本地YUM源会造成资源浪费且难以统一管理。通过HTTP服务搭建YUM网络源,可实现软件包的集中存储与分发,让局域网内所有机器通过网络访问同一源,大幅提升软件安装效率与一致性。本文以CentOS 7为例,详细讲解从搭建HTTP服务到配置网络源的完整过程,确保每一步操作准确可复现(太细了,男人不能太细!!^^)。

一、前提与核心原理

1.1. 环境要求

  • 服务器端:一台CentOS 7.9服务器(作为YUM源服务器),需具备:
    • 已下载与系统版本匹配的ISO镜像(如CentOS-7-x86_64-DVD-2009.iso);
    • 关闭或配置好防火墙、SELinux(避免阻碍HTTP访问)。
  • 客户端:局域网内其他CentOS 7.9机器(建议版本一致),需能访问服务器IP。
  • HTTP服务:nginx/httpd都可以,本文选用Apache(httpd)作为HTTP服务器(Linux系统常用,配置简单)。

1.2. 核心原理

  1. 在服务器端通过HTTP服务暴露软件包目录(从ISO镜像提取);
  2. 客户端通过HTTP协议访问服务器的软件包目录,实现远程安装软件;
  3. 相比本地源,网络源可集中维护,支持多机共享,减少重复存储。

二、步骤1:服务器端搭建HTTP服务

2.1. 安装Apache服务

CentOS默认软件仓库中包含httpd,直接通过yum安装(若未配置本地源,可先临时使用系统镜像安装):

# 安装Apache(httpd)
yum install -y httpd# 启动服务并设置开机自启
systemctl start httpd
systemctl enable httpd# 验证服务状态(确保Active: active (running))
systemctl status httpd

在这里插入图片描述

2.2. 配置防火墙与SELinux

HTTP服务默认使用80端口,需允许端口访问并配置SELinux(若启用):

# 配置防火墙允许80端口(永久生效)
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload# 查看防火墙规则(确认80端口已开放)
firewall-cmd --list-ports# 配置SELinux(永久关闭)
vi /etc/selinux/config
SELINUX=disabled
保存后重启生效

在这里插入图片描述

2.3. 验证HTTP服务可用性

在服务器本地或客户端通过浏览器/命令行访问服务器IP,确认HTTP服务正常:

# 服务器本地测试(返回HTTP 200 OK即正常)
curl http://127.0.0.1
  • 若访问失败,检查httpd服务状态、防火墙规则及SELinux配置。

三、步骤2:服务器端配置YUM网络源文件

3.1. 准备软件包目录(从ISO提取)

需将ISO镜像中的软件包(Packages目录)复制到HTTP服务的根目录(默认/var/www/html),让客户端可通过HTTP访问。

# 1. 挂载ISO镜像(参考本地源挂载方法)
mkdir -p /mnt/iso
mount -o loop /opt/CentOS-7-x86_64-DVD-2009.iso /mnt/iso# 2. 在HTTP根目录创建YUM源目录(如centos7-repo)
mkdir -p /var/www/html/centos7-repo# 3. 复制ISO中的所有文件(包括Packages和repodata)到HTTP目录
cp -r /mnt/iso/* /var/www/html/centos7-repo/# 4. 修复目录权限(确保httpd可读取)
chmod -R 755 /var/www/html/centos7-repo/
  • repodata目录包含软件包元数据(必需,YUM依赖此目录识别包信息)。

3.2. 验证HTTP目录可访问

通过浏览器或curl访问服务器的YUM源目录,确认文件可正常读取:

# 客户端或服务器访问(替换为实际IP)
curl http://192.168.92.154/centos7-repo/
  • 若返回目录列表(含Packagesrepodata等),说明HTTP目录配置成功。
    在这里插入图片描述

四、步骤3:客户端配置HTTP YUM源

局域网内的其他机器(客户端)需通过repo文件指向服务器的HTTP源地址。

4.1. 备份客户端原有YUM源

# 客户端操作:备份默认repo文件
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

4.2. 创建HTTP YUM源的repo文件

在客户端新建/etc/yum.repos.d/http-repo.repo核心内容 如下:

[http-centos7-repo]
name=CentOS 7 HTTP Repository
baseurl=http://192.168.92.154/centos7-repo/
enabled=1
gpgcheck=1
gpgkey=http://192.168.92.154/centos7-repo/RPM-GPG-KEY-CentOS-7
  • 配置说明:
    • baseurl:指向服务器的HTTP源路径(替换为实际服务器IP);
    • gpgkey:通过HTTP路径引用服务器上的GPG公钥(确保与ISO中的公钥一致)。
      在这里插入图片描述

五、步骤4:验证HTTP YUM网络源可用性

5.1. 客户端清理并生成缓存

# 清理旧缓存
yum clean all# 生成新缓存(从HTTP源获取元数据)
yum makecache
  • 若成功,会显示“Metadata cache created”,并列出源中的软件包数量。
    在这里插入图片描述

5.2. 测试软件安装

通过安装一个软件(如tree)验证源可用性:

# 安装tree(从HTTP源下载)
yum install -y tree
  • 若安装过程无“无法找到包”或“网络超时”错误,说明HTTP YUM源配置成功。
    在这里插入图片描述

六、进阶:优化与扩展

6.1. 增加源的稳定性

  • 使用域名访问:若局域网有DNS服务器,可将服务器IP绑定到域名(如yum-server.local),客户端repo文件中baseurl改为http://yum-server.local/centos7-repo/,避免IP变动影响配置。
  • 添加多个源:若需混合使用官方网络源和本地HTTP源,可保留官方repo文件(enabled=0禁用),按需启用。

6.2. 支持多版本/多架构

若需为不同系统版本(如CentOS 7/8)或架构(x86_64/arm64)提供源,可在HTTP目录下按版本/架构划分目录:

# 示例目录结构
/var/www/html/├─ centos7-x86_64/  # CentOS 7 64位└─ centos8-x86_64/  # CentOS 8 64位

客户端根据自身系统版本配置对应baseurl即可。

七、常见问题与排查

7.1. 客户端无法访问HTTP源:“Could not resolve host”

  • 原因:客户端无法解析服务器IP(网络不通或IP错误)。
  • 排查:
    1. 客户端执行ping 192.168.92.154(服务器IP),确认网络连通;
    2. 检查baseurl中的IP是否正确(避免拼写错误)。

7.2. 客户端提示“ repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found”

  • 原因:baseurl路径错误,服务器上不存在对应的repodata目录。
  • 排查:
    1. 服务器端确认/var/www/html/centos7-repo/repodata是否存在;
    2. 客户端通过curl http://192.168.92.154/centos7-repo/repodata/repomd.xml验证文件是否可访问。

7.3. GPG校验失败:“BADSIG”或“public key not available”

  • 原因:gpgkey路径错误或公钥不匹配。
  • 排查:
    1. 确认gpgkey路径正确(可通过浏览器访问该URL验证文件是否存在);
    2. 手动导入公钥:rpm --import http://192.168.92.154/centos7-repo/RPM-GPG-KEY-CentOS-7

八、总结

基于HTTP构建局域网内YUM网络源的核心是通过HTTP服务共享软件包目录,实现局域网内软件包的集中管理与分发。相比本地源,其优势在于“一次配置,多机复用”,尤其适合服务器集群环境。
若需进一步提升性能,可结合NFS或缓存服务(如Squid)减轻源服务器压力;若需对外网提供源,还需配置HTTPS加密(通过Let’s Encrypt获取免费证书),有问题欢迎在评论区交流。

http://www.dtcms.com/a/410016.html

相关文章:

  • Java核心 之JVM
  • 通过 GAC Code 在国内使用ClaudeCode,Windows 用户配置指南!
  • iOS App 上架流程详解,苹果应用发布步骤、App Store 审核规则、ipa 文件上传与测试分发实战经验
  • 线程安全之《Sychronized的八锁案例》
  • 用户态的epoll实现思路?
  • TextMeshPro文字消失bug解决方案
  • 学习网站开发教程wordpress 五分钟
  • 联邦学习中的异质性问题
  • 将照片从iPhone传输到联想笔记本的6种方法
  • 东莞网站设计找哪里易商官方网站
  • 本机可以做网站的服务器互联斗士网站建站
  • 基于 GitLab 的自动化镜像构建
  • Spark核心Shuffle详解(一)ShuffleManager
  • Android 开发环境解析:从SDK、NDK到版本兼容性指南
  • 基于YOLO8+flask+layui的行人跌倒行为检测系统【源码+模型+数据集】
  • Mysql DBA学习笔记(日志)
  • 平替MongoDB:金仓多模数据库助力电子证照国产化实践
  • QT6中QGraphicsView功能与应用
  • WSL2搭建Hadoop伪分布式环境
  • 新闻媒体发稿平台排名Top5,聚合型新闻发稿服务平台推荐
  • Linux(4)|入门的开始:Linux基本指令(4)
  • (七)API 重构的艺术:打造优雅、可维护的 API
  • MAC idea 环境变量设置失效
  • 百度站长收录提交入口深圳设计网站源码
  • 2025Unity超详细《坦克大战3D》项目实战案例(上篇)——UI搭建并使用和数据持久化(附资源和源代码)
  • DenseNet:密集连接
  • 第一次学习Hardhat
  • 腾讯wordpress 建站自适应网站建设哪家便宜
  • 第八章 MyBatis及MyBatis-Plus
  • 5mins了解redis底层数据结源码