暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Centos 7 配置本地网络YUM源,并定期自动同步阿里源

Linux技术宅 2023-11-19
940

点击上方:Linux技术宅,关注我!!!

Every Day

 / 

[]  [朝代] 唐

思路

通过yum配置阿里云yum源,将下载的rpm包保留到本地(即同步下载rpm包),创建本地yum仓库,通过网站服务器(nginx或者apache,本文将采用apapche作为网站服务器)将本地yum源配置成内网可访问yum源,最后写个定时执行的脚本,自动同步阿里云yum源并下载最新的rpm软件包。


基本环境:

  • 关闭firewalld

  • 关闭Selinux(由于是内网的缘故,不太需要繁琐的配置防火墙和selinux)

  • 安装createrepo

第一步

首先我们需要准备一台可以连接外网的Centos7服务器。配置阿里yum源,安装阿里云yunm源,检查其可用性。

  • 备份原有的yum文件:

    mv etc/yum.repos.d/* root/bak/yum
    • 安装阿里云yum源文件

      wget -o etc/yum.repos.d/CentOSBase.repo https://mirrors.aliyun.com/repo/Centos-7.repo
      • 通过阿里云的yum源安装epel源

        yum install -y epel-release
        • 清除原有的yum缓存,建立新的yum源的缓存,列出可用repo

          yum clean all && yum makecache && yum repolist

          第二步

          安装createrepo,安装apache网站服务器(httpd),准备rpm包存放路径

          • 安装相关依赖包

            yum install -y httpd yum-utils crontabs createrepo make cmake gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel
            • 准备数据存储路径,我们要准备一个大一点的分区,阿里的yum源体积还是挺大的,而内网源就是把云yum源同步到本地。

              mkdir -p data/repo
              • 更改目录权限

                chown -R apache:apache data/repo && chmod -R 755 data/repo

                tips参数:

                • -n指定下载最新软件包

                • -p指定目录,指定本地的源–repoid(如果不指定就同步本地服务器所有的源),下载过程比较久

                  reposync -n --repoid=extras --repoid=updates --repoid=base --repoid=epel -p data/repo
                  • 等待下载完成 查看下载后的文件大小

                    du -sh data/repo

                    第三步:创建仓库索引

                      createrepo -po data/repo/base/ /data/repo/base/
                      createrepo -po /data/repo/extras/ /data/repo/extras/
                      createrepo -po /data/repo/updates/ /data/repo/updates/
                      createrepo -po /date/repo/epel/ /data/repo/epel/

                      第四步:更新数据源

                      • 当公网yum源更新的时候,我们需要给本地的软件仓库中的软件包也一起更新

                        createrepo --update /data/repo/base/
                        createrepo --update /data/repo/extras/
                        createrepo --update /data/repo/updates/
                        createrepo --update /data/repo/epel/
                        • 这里我们可以写一个脚本结合计划任务,让服务器自己更新软件包

                        脚本内容:

                          #!/bin/bash
                          echo "更新软件包"
                          yum update
                          echo "开始同步centos7的yum源"
                          reposync -n --repoid=docker-ce-stable --repoid=extras --repoid=updates --repoid=base --repoid=epel --repoid=nginx -p /data
                          echo "同步centos7和epel、nginx的yum源完成!!!"


                          #更新元数据
                          createrepo --update /data/base/
                          createrepo --update /data/nginx/
                          createrepo --update /data/extras/
                          createrepo --update /data/updates/
                          createrepo --update /data/epel/
                          createrepo --update /data/docker-ce-stable/

                          第五步:创建计划任务

                          • 使用crontab创建计划任务

                          可以使用crontab -e命令,创建计划任务,定时执行yum软件包的更新任务

                            * */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org

                            第六步:启动并配置web服务器

                            • 启动httpd服务并设置开机自动启动

                              systemctl enable --now httpd
                              • 编辑httpd配置文件:

                                vim /etc/httpd/conf.d/yum.conf


                                <VirtualHost *:80>
                                DocumentRoot /data/repo/
                                ServerName repo.example.org
                                ErrorLog logs/repo.example.org-error_log
                                CustomLog logs/repo.example.org-access_log common
                                </VirtualHost>


                                ### 创建yum默认首页index.html
                                cat << EOF > /data/repo/index.html
                                <!DOCTYPE html>
                                <html>
                                <head>
                                <meta charset="utf-8">
                                <title>CentOS 7 镜像</title>


                                <script>document.createElement("myHero")</script>
                                <style>
                                myHero {
                                display: block;
                                background-color: #ddd;
                                padding: 10px;
                                font-size: 20px;
                                }
                                </style>


                                </head>
                                <body>
                                <h1>简介</h1>
                                <hr>
                                <p>CentOS,是基于 Red Hat Linux 提供的可自由使用源代码的企业级 Linux 发行版本,是一个稳定,可预测,可管理和可复制的免费企业级计算平台。</p>
                                <hr>
                                <br>
                                <br>


                                <h1>CentOS 7 配置内部YUM源</h1>
                                <br>
                                <h2>1、备份</h2>
                                <myHero>mv /etc/yum.repos.d/* /opt/yum/</myHero>
                                <br>
                                <h2>2、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ </h2>
                                <myHero>curl -o /etc/yum.repos.d/CentOS-Base.repo http://repo.example.org/CentOS-Base.repo</myHero>
                                <br>
                                <h2>3、运行 yum makecache 生成缓存</h2>
                                <br>
                                <h2>4、运行 yum repolist 查看已经生成缓存</h2>
                                <br>
                                <br>


                                </body>
                                </html>
                                EOF
                                • 编辑好配置文件后,重启一下httpd服务

                                  systemctl restart httpd

                                  第七步:编写本地客户端的yum配置文件

                                    cat << EOF > /data/repo/CentOS-Base.repo
                                    [base]
                                    name=CentOS-$releasever - Base - repo.example.org
                                    failovermethod=priority
                                    baseurl=http://repo.example.org/base/
                                    enable=1
                                    gpgcheck=0

                                    #released updates
                                    [updates]
                                    name=CentOS-$releasever - Updates - repo.example.org
                                    failovermethod=priority
                                    baseurl=http://repo.example.org/updates/
                                    enable=1
                                    gpgcheck=0

                                    #additional packages that may be useful
                                    [extras]
                                    name=CentOS-$releasever - Extras - repo.example.org
                                    failovermethod=priority
                                    baseurl=http://repo.example.org/extras/
                                    enable=1
                                    gpgcheck=0

                                    #additional packages that may be useful
                                    [epel]
                                    name=CentOS-$releasever - Epel - repo.example.org
                                    failovermethod=priority
                                    baseurl=http://repo.example.org/epel/
                                    enable=1
                                    gpgcheck=0
                                    EOF

                                    第八步:客户端配置DNS解析,配置yum源

                                    • 编写一下主机的hosts文件,将repo.example.org 跟你配置的yum本地源的服务器IP解析配置一下

                                    • 配置yum客户端

                                      curl -o /etc/yum.repos.d/CentOS-Base.repo http://repo.example/CentOS-Base.repo

                                      版权声明:本文为CSDN博主「河越柯衍」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

                                      原文链接:https://blog.csdn.net/qq_37696855/article/details/118115012


                                      分享、在看与点赞

                                      只要你点,我们就是胖友

                                      文章转载自Linux技术宅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                      评论