搭建YUM服务器(本地YUM仓库)是企业Linux运维中的基础工作,主要用于为内网服务器提供RPM软件包的安装与更新服务,可大幅节省公网带宽并提高部署效率。以下是基于CentOS/RHEL环境的专业搭建步骤。

一、环境规划与准备工作
1、选择一台CentOS/RHEL服务器作为YUM源服务器,建议磁盘剩余空间在50GB以上(完整同步CentOS 7/8全量软件包约需20GB~40GB)。
2、规划仓库目录结构,例如/var/www/html/centos/7/os/x86_64/,目录层级建议与官方镜像站保持一致,便于后续多版本、多架构扩展。
3、安装必需软件:httpd(或nginx/vsftpd)用于对外提供HTTP/FTP服务,createrepo用于生成仓库元数据,rsync用于同步公网镜像。安装命令:yum install -y httpd createrepo rsync。
4、关闭SELinux或配置相应策略(setenforce 0临时关闭),并在防火墙放行对应端口(HTTP默认80端口:firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload)。
二、获取RPM软件包(两种方式)
方式一:通过ISO镜像文件初始化(适用于离线/纯内网环境)
1、上传CentOS DVD版本ISO镜像至服务器,执行mount -o loop /path/CentOS-7-x86_64-DVD.iso /mnt挂载。
2、复制软件包至仓库目录:mkdir -p /var/www/html/centos/7/os/x86_64/ && cp -r /mnt/Packages/* /var/www/html/centos/7/os/x86_64/。
3、若需要GPG校验功能,同时复制RPM-GPG-KEY-CentOS-7密钥文件至仓库根目录。
方式二:通过rsync同步公网镜像(推荐,可持续更新)
1、使用rsync从国内镜像站(如阿里云、清华大学TUNA)同步:rsync -avz --delete rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/ /var/www/html/centos/7/os/x86_64/。
2、同步EPEL扩展源:rsync -avz --delete rsync://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/ /var/www/html/epel/7/x86_64/。
3、同步完成后,同步过来的repodata元数据目录可直接使用,无需再手动createrepo。
三、生成YUM仓库元数据
1、若采用ISO方式复制软件包,需手动生成元数据:执行createrepo /var/www/html/centos/7/os/x86_64/,命令执行完成后会自动生成repodata目录(包含primary.xml、repomd.xml等索引文件)。
2、后续新增或删除RPM包后,使用增量更新以提升效率:createrepo --update /var/www/html/centos/7/os/x86_64/,避免全量重建消耗大量IO。
3、若需对仓库分组功能(yum grouplist)支持,可结合comps.xml文件:createrepo -g /path/comps.xml /var/www/html/centos/7/os/x86_64/。
四、配置并启动HTTP服务
1、httpd默认发布目录为/var/www/html,仓库目录直接放置于其下即可,无需额外修改配置。若需调整端口或目录,修改/etc/httpd/conf/httpd.conf中Listen与DocumentRoot参数。
2、启动httpd并设置开机自启:systemctl start httpd && systemctl enable httpd。
3、验证服务:浏览器访问http://服务器IP/centos/7/os/x86_64/或执行curl http://127.0.0.1/centos/7/os/x86_64/repodata/repomd.xml,能正常返回XML内容即服务端配置完成。
4、生产环境也可使用nginx替代httpd以获得更好的并发性能,或使用vsftpd搭建FTP协议的YUM源(baseurl以ftp://开头)。
五、客户端配置与测试验证
1、在客户端服务器编写repo配置文件,如/etc/yum.repos.d/local.repo,内容示例:
[local-centos7]——name=Local CentOS 7 Repository——baseurl=http://YUM服务器IP/centos/7/os/x86_64/——enabled=1——gpgcheck=0(若开启gpgcheck=1,需配置gpgkey= file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7)。
2、建议先备份并移除系统默认的repo文件(如CentOS-Base.repo),避免网络源不可达导致报错。
3、清除并重建缓存:yum clean all && yum makecache。
4、验证是否生效:执行yum list列出全部可用软件包,执行yum repolist查看仓库状态,执行yum install -y tree进行实际安装测试,若内网下载并安装成功,则说明YUM服务器搭建完毕。
六、后续维护与优化
1、定期同步更新:编写同步脚本并加入cron定时任务(如每周日凌晨2点执行rsync同步),保持仓库与公网源一致。
2、多仓库多架构扩展:按centos/7、centos/8、epel、extras及x86_64/aarch64维度规划目录,一次搭建支持全公司不同业务线。
3、安全加固:生产环境建议配置https、基于htpasswd的访问认证及IP白名单限制,防止仓库被未授权访问。
4、对于数百台客户端的大规模环境,可配合squid做缓存代理,或直接搭建镜像站点+内网DNS解析,实现更高效的软件分发体系。

查看详情

查看详情