目录
在多台Linux服务器的局域网环境中,每台机器单独配置本地YUM源会造成资源浪费且难以统一管理。通过HTTP服务搭建YUM网络源,可实现软件包的集中存储与分发,让局域网内所有机器通过网络访问同一源,大幅提升软件安装效率与一致性。本文以CentOS 7为例,详细讲解从搭建HTTP服务到配置网络源的完整过程,确保每一步操作准确可复现(太细了,男人不能太细!!^^)。
一、前提与核心原理
1.1. 环境要求
- 服务器端:一台CentOS 7.9服务器(作为YUM源服务器),需具备: 
  - 已下载与系统版本匹配的ISO镜像(如CentOS-7-x86_64-DVD-2009.iso);
- 关闭或配置好防火墙、SELinux(避免阻碍HTTP访问)。
 
- 已下载与系统版本匹配的ISO镜像(如
- 客户端:局域网内其他CentOS 7.9机器(建议版本一致),需能访问服务器IP。
- HTTP服务:nginx/httpd都可以,本文选用Apache(httpd)作为HTTP服务器(Linux系统常用,配置简单)。
1.2. 核心原理
- 在服务器端通过HTTP服务暴露软件包目录(从ISO镜像提取);
- 客户端通过HTTP协议访问服务器的软件包目录,实现远程安装软件;
- 相比本地源,网络源可集中维护,支持多机共享,减少重复存储。
二、步骤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/
- 若返回目录列表(含Packages、repodata等),说明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错误)。
- 排查: 
  - 客户端执行ping 192.168.92.154(服务器IP),确认网络连通;
- 检查baseurl中的IP是否正确(避免拼写错误)。
 
- 客户端执行
7.2. 客户端提示“ repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found”
- 原因:baseurl路径错误,服务器上不存在对应的repodata目录。
- 排查: 
  - 服务器端确认/var/www/html/centos7-repo/repodata是否存在;
- 客户端通过curl http://192.168.92.154/centos7-repo/repodata/repomd.xml验证文件是否可访问。
 
- 服务器端确认
7.3. GPG校验失败:“BADSIG”或“public key not available”
- 原因:gpgkey路径错误或公钥不匹配。
- 排查: 
  - 确认gpgkey路径正确(可通过浏览器访问该URL验证文件是否存在);
- 手动导入公钥:rpm --import http://192.168.92.154/centos7-repo/RPM-GPG-KEY-CentOS-7。
 
- 确认
八、总结
基于HTTP构建局域网内YUM网络源的核心是通过HTTP服务共享软件包目录,实现局域网内软件包的集中管理与分发。相比本地源,其优势在于“一次配置,多机复用”,尤其适合服务器集群环境。
 若需进一步提升性能,可结合NFS或缓存服务(如Squid)减轻源服务器压力;若需对外网提供源,还需配置HTTPS加密(通过Let’s Encrypt获取免费证书),有问题欢迎在评论区交流。
 
                   
                   
                   
                   
                     
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
                     
              
             
                   102
					102
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
					 
					 
					


 
            