配置本地YUM源并发布到局域网

-
-
2025-09-08 17:38

本笔记旨在记录在离线或内网环境中,利用 ISO 镜像文件搭建 YUM 仓库,并通过 Nginx 服务将其共享至整个局域网的完整步骤。

 

第一部分:配置本地 ISO 为 YUM 源 (单机使用)

 

此部分操作在源服务器本机上完成,使其可以使用本地的 ISO 文件作为软件安装来源。

 

1. 挂载 ISO 文件

 

首先,需要将 ISO 文件挂载到系统的一个目录上。

  • 创建挂载点:

    sudo mkdir -p /mnt/iso_repo
  • 执行临时挂载:

    # 将 your-os.iso 替换为你的实际 ISO 文件名
    sudo mount -o loop /data/iso/your-os.iso /mnt/iso_repo
  • (推荐) 设置永久挂载:

    为防止服务器重启后挂载失效,将挂载信息写入 /etc/fstab。

    # 在 /etc/fstab 文件末尾追加以下内容
    /data/iso/your-os.iso /mnt/iso_repo iso9660 loop 0 0

 

2. 创建 YUM 仓库配置文件

 

创建一个 .repo 文件来告知系统这个本地源的存在。

  • (可选) 备份当前源:

    sudo mkdir /etc/yum.repos.d/backup
    sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
  • 创建新的配置文件:

    sudo vi /etc/yum.repos.d/local-iso.repo
  • 写入配置内容:

    [local-iso]
    name=Local ISO Repository
    baseurl=file:///mnt/iso_repo
    enabled=1
    gpgcheck=0

    注意: baseurl 使用 file:/// 协议指向本地挂载点。gpgcheck=0 表示不进行 GPG 校验,适用于可信的本地源。

 

3. 清理缓存并验证

 

  • 刷新 YUM 缓存:

    sudo yum clean all
    sudo yum makecache
  • 验证仓库列表:

    sudo yum repolist

    如果能看到 local-iso 仓库,则表示配置成功。


 

第二部分:通过 Nginx 共享 YUM 源至局域网

 

此部分将第一步配置好的本地源,通过 Nginx 以 HTTP 服务的形式共享给其他服务器。

 

1. 源服务器端配置 (Nginx)

 

  • 安装并启动 Nginx:

    sudo yum install nginx -y
    sudo systemctl start nginx
    sudo systemctl enable nginx
  • 创建 Nginx 配置文件:

    使用一个非常规端口(例如 8888)来提供服务。

    sudo vi /etc/nginx/conf.d/yum-repo.conf

    写入以下内容,并将 your_server_ip 替换为源服务器的内网 IP。

    server {
        listen 8888;
        server_name your_server_ip;
    ​
        root /mnt/iso_repo;
    ​
        location / {
            # 关键配置:允许列出目录内容
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;
        }
    }
  • 配置防火墙和 SELinux:

    • 开放端口:

      sudo firewall-cmd --add-port=8888/tcp --permanent
      sudo firewall-cmd --reload
    • 设置 SELinux 上下文:

      # 确保 semanage 工具已安装 (policycoreutils-python-utils)
      sudo semanage fcontext -a -t httpd_sys_content_t "/mnt/iso_repo(/.*)?"
      sudo restorecon -Rv /mnt/iso_repo
  • 重载 Nginx 并测试:

    sudo nginx -t
    sudo systemctl reload nginx

    在局域网内其他机器上访问 http://your_server_ip:8888,应能看到文件列表。

 

2. 客户端服务器配置

 

在需要使用此网络源的其他服务器上进行以下配置。

  • 创建 .repo 配置文件:

    sudo vi /etc/yum.repos.d/remote-iso.repo
  • 写入配置内容:

    baseurl 指向源服务器的 HTTP 地址。

    [remote-iso-repo]
    name=Remote ISO Repository via Nginx
    baseurl=http://your_server_ip:8888
    enabled=1
    gpgcheck=0
  • 清理缓存并验证:

    sudo yum clean all
    sudo yum makecache
    sudo yum repolist

    如果能看到 remote-iso-repo 仓库,则表示客户端配置成功。