搭建yum源站点与配置本地yum源repo文件
搭建CenOS Stream 9本地yum源站点与配置本地yum源repo文件
本次实操围绕无外网环境下的软件安装需求展开,完整演示从「本地yum源站点搭建」到「客户端repo配置」再到「离线安装验证」的全流程,共分为4个核心环节:
前置准备:确保系统镜像正常连接,为本地源提供软件包基础
服务端脚本搭建:通过Shell一键部署http协议的本地yum源站点
客户端脚本配置:自动生成repo文件,指向本地源
离线验证:断网状态下正常安装/卸载软件,验证本地源有效性
在企业生产环境中,绝大多数服务器均处于内网隔离状态,禁止访问公网,核心原因如下:
安全合规要求
公网存在病毒、木马、恶意攻击风险,生产服务器直接连外网极易引发数据泄露、服务器被入侵等安全事故,企业安全策略会强制断网隔离。
网络稳定性与带宽管控
公网网络波动、延迟高,会导致软件下载失败、安装中断;同时批量服务器同时访问公网源会占用大量带宽,影响核心业务网络。
版本统一与兼容性保障
公网yum源软件版本会持续更新,易出现版本冲突、依赖不兼容问题;本地源可锁定系统镜像内的稳定版本,保证所有服务器软件环境一致。
批量部署效率提升
搭建一台本地源服务器,内网所有机器均可通过内网高速访问,安装速度远快于公网,适配服务器批量初始化、运维标准化场景。
离线环境刚需
金融、政务、能源等涉密/封闭内网,完全无外网出口,本地yum源是安装软件的唯一可行方案。
实操逻辑梳理
服务端:以系统镜像为软件包仓库,通过http共享给内网机器
客户端:指向服务端地址,替代公网源,实现离线安装
全程Shell脚本化:简化操作、避免人为失误,可直接用于企业标准化运维
具体实战步骤
一、确保系统镜像处于连接状态
二、用Shell脚本快速搭建本地yum源站点
cat >local_yum_repos.sh<<EOF #!/bin/bash #作用:快速搭建本地yum源 #作者:传棋(Jaking) #邮箱:Jaking@vip.163.com #日期:2026年4月10日 #安装httpd yum install -y httpd &>/dev/null if [ $? -eq 0 ];then echo "httpd安装成功!" else echo "请检查yum源及网络状态!" exit fi #启动httpd systemctl enable httpd --now systemctl status httpd --no-pager #挂载系统镜像 echo "/dev/cdrom /var/www/html iso9660 defaults 0 0" >> /etc/fstab systemctl daemon-reload mount -a if [ $? -eq 0 ];then echo "系统镜像挂载成功!" else echo "系统镜像挂载失败!" exit fi #优化默认配置文件 mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak systemctl restart httpd #关闭防火墙及SELinux iptables -F systemctl stop firewalld setenforce 0 #打印最终提示信息 echo "请在浏览器输入http://本机IP访问本地yum源!" EOF chmod +x local_yum_repos.sh ./local_yum_repos.sh三、用Shell脚本配置本地yum源repo文件
vim yum_conf_repo.sh #!/bin/bash #作用:快速配置本地yum源repo文件 #作者:传棋(Jaking) #邮箱:Jaking@vip.163.com #日期:2026年4月10日 # 本地yum源地址 BASEURL="http://192.168.88.101" echo "===== 1. 备份并删除原有 repo 文件 =====" mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ &>/dev/null echo "===== 2. 生成本地 repo 文件 =====" cat > /etc/yum.repos.d/local.repo <<EOF [BaseOS] name=BaseOS baseurl=${BASEURL}/BaseOS/ enabled=1 gpgcheck=0 [AppStream] name=AppStream baseurl=${BASEURL}/AppStream/ enabled=1 gpgcheck=0 EOF echo "===== 3. 清理缓存并生成缓存 =====" dnf clean all dnf makecache echo "===== 4. 测试仓库 =====" dnf repolist echo "===== 完成 =====" chmod +x yum_conf_repo.sh ./yum_conf_repo.sh四、不通外网的情况下安装软件
# 测试连通性,ping 4次 www.163.com ping -c 4 www.163.com # 进入yum仓库配置目录 cd /etc/yum.repos.d/ # 查看目录文件 ls # 编辑DNS配置文件 vim /etc/resolv.conf # 查看DNS配置文件内容 cat /etc/resolv.conf [root@server2 yum.repos.d]# cat /etc/resolv.conf # Generated by NetworkManager #nameserver 192.168.88.2 #nameserver 114.114.114.114 # 再次测试域名解析 ping -c 4 www.163.com # 将yum仓库文件移动到/tmp(可选操作) mv * /tmp # 查看目录 ls # 再次测试域名解析 ping -c 4 www.163.com # 卸载wget软件包 yum remove -y wget # 安装wget软件包 yum install -y wget # 查询wget版本信息 rpm -qa wget # 查看系统时间 date -R # 卸载httpd相关软件包 yum remove -y httpd # 安装httpd软件包 yum install -y httpd # 再次测试域名解析 ping www.163.com本地file模式yum源
注意:这种模式只能解决本机的yum源问题!
# 编辑开机自动挂载配置文件 vim /etc/fstab # 查看 /etc/fstab 配置内容 cat /etc/fstab # /etc/fstab # Created by anaconda on Fri Jul 18 07:48:14 2025 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # # 加载 /etc/fstab 里所有挂载配置 mount -a # 查看磁盘挂载信息 df -h # 进入 yum 仓库配置目录 cd /etc/yum.repos.d # 查看当前所在路径 pwd # 编辑本地 yum 源配置文件 vim local.repo # 查看本地 yum 源配置文件内容 cat local.repo [BaseOS] name=BaseOS baseurl=file:///var/www/html/BaseOS/ enabled=1 gpgcheck=0 [AppStream] name=AppStream baseurl=file:///var/www/html/AppStream/ enabled=1 gpgcheck=0整体流程回顾
前置准备
确保虚拟机/物理机已连接系统镜像,为本地yum源提供完整软件包支撑。
服务端搭建
使用一键脚本安装httpd服务,永久挂载系统镜像到网页目录,关闭防火墙与SELinux,将系统镜像发布为http内网yum仓库。
客户端配置
通过脚本自动备份原有repo、生成新的本地源配置文件,指向内网yum服务端地址,重建缓存并生效。
离线验证
在完全不通外网的环境下,成功使用yum安装、卸载软件,证明本地yum源可用、稳定、高效。
关键技术要点总结
使用
httpd共享系统镜像,实现内网http协议访问yum源。通过
/etc/fstab实现镜像永久挂载,避免重启失效。Shell脚本自动化部署,减少重复操作,提高部署一致性。
自定义
.repo配置文件,区分BaseOS与AppStream仓库,适配RHEL/CentOS Stream系统。关闭防火墙、清空规则、关闭SELinux,保证内网访问畅通。