本笔记旨在记录在离线或内网环境中,利用 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仓库,则表示客户端配置成功。