Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16103
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-28 01:20
文章分类

全部博文(4)

文章存档

2017年(1)

2015年(2)

2014年(1)

我的朋友
最近访客

分类: LINUX

2017-08-03 21:51:00

搭建CentOS在线yum源镜像服务器

  • 系统环境:

    • 操作系统:CentOS 6.x
    • IP地址:192.168.21.188
  • 实现目的:同步CentOS镜像站点的内容到此服务器,并且通过配置http服务器,能够向外提供yum服务

准备篇:

一、安装http服务器

  • 这里使用Nginx服务器提供http服务

    关于Nginx服务器搭建,参考:

二、系统约定

  • Nginx站点根目录:/usr/local/nginx/html

  • 服务器执行脚本文件存放目录:/home/crontab

三、开始Nginx目录浏览功能

# vi /usr/local/nginx/conf/nginx.conf #编辑配置文件,在http {下面添加以下内容:

  autoindex on; #开启nginx目录浏览功能

  autoindex_exact_size off; #文件大小从KB开始显示

  autoindex_localtime on; #显示文件修改时间为服务器本地时间

:wq! #保存,退出

# service nginx reload #重新加载配置

参考:Nginx开启目录浏览功能:

安装篇:

一、创建镜像文件存放目录

mkdir -p /usr/local/nginx/html/centos #CentOS官方标准源

mkdir -p /usr/local/nginx/html/repoforge #第三方rpmforge源

mkdir -p /usr/local/nginx/html/epel #第三方epel源

说明:这里创建三个文件夹,分别存放CentOS官方标准源、第三方的rpmforge源和epel源

二、确定以上三个yum源上游源的同步镜像地址

  • CentOS官方标准源:rsync://mirrors.ustc.edu.cn/centos/
  • rpmforge源:rsync://mirrors.ispros.com.bd/repoforge/
  • epel源:rsync://mirrors.ustc.edu.cn/epel/

    备注:上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。

  • 参考:

    • CentOS官方标准源:
      rsync://mirrors.kernel.org/centos
      
    • rpmforge源:
      rsync://ftp-stud.fht-esslingen.de/dag
      
    • epel源:
      rsync://mirrors.kernel.org/fedora-epel
      

三、创建以上三个yum源同步脚本,并且设定脚本自动执行

# mkdir -p /home/crontab #创建目录
# vi /home/crontab/yum_rsync.sh #添加以下代码
  #!/bin/sh

 /usr/bin/rsync -avrt rsync://mirrors.ustc.edu.cn/centos/ --exclude-from=/usr/local/nginx/html/exclude_centos.list /usr/local/nginx/html/centos/

 /usr/bin/rsync -avrt rsync://mirrors.ispros.com.bd/repoforge/ --exclude-from=/usr/local/nginx/html/exclude_repoforge.list /usr/local/nginx/html/repoforge/

 /usr/bin/rsync -avrt rsync://mirrors.ustc.edu.cn/epel/ --exclude-from=/usr/local/nginx/html/exclude_epel.list /usr/local/nginx/html/epel/

:wq! #保存退出

chmod +x /home/crontab/yum_rsync.sh #添加脚本执行权限

备注:运行此脚本前,先要创建好同步目录及不需要同步的目录列表文件

# cd /usr/local/nginx/html/   #进入目录
# touch exclude_centos.list   #创建文件
# touch exclude_repoforge.list   #创建文件
# touch exclude_epel.list   #创建文件

把不需要同步的目录写到上面对应的文件中,每行一个目录,例如:

# vi exclude_epel.list

# 4/
# 4AS/
# 4ES/
# 4WS/

:wq! #保存退出

四、添加脚本定时执行任务

# vi /etc/crontab  #在最后一行添加以下代码

 0 1 * * * root /home/crontab/yum_rsync.sh #设置每天凌晨1点整开始执行脚本

:wq! #保存退出

# service crond restart #重启

测试篇:

一、安装rsync同步软件

# yum install rsync xinetd #安装

# vi /etc/xinetd.d/rsync #编辑配置文件,设置开机启动rsync

 disable = no #修改为

# /etc/init.d/xinetd start #启动(CentOS中是以xinetd 来管理Rsync服务的)

:wq! #保存退出

二、执行同步脚本

# sh /home/crontab/yum_rsync.sh

注意:等待脚本执行完毕,首次同步,耗费的时间比较长!

三、根据不同版本创建三个yum源的repo配置文件

# cd /etc/yum.repos.d/ #进入目录
# mv /etc/yum.repos.d/CentOS-Base.repo CentOS-Base.repo-bak
  1. CentOS官方标准源:

    • CentOS 5.x系列:

      # vi /etc/yum.repos.d/CentOS-Base.repo #添加以下代码
      
       # CentOS-Base.repo
      
       #
      
       # The mirror system uses the connecting IP address of the client and the
      
       # update status of each mirror to pick mirrors that are updated to and
      
       # geographically close to the client. You should use this for CentOS updates
      
       # unless you are manually picking other mirrors.
      
       #
      
       # If the mirrorlist= does not work for you, as a fall back you can try the
      
       # remarked out baseurl= line instead.
      
       #
      
       #
      
      [base]
      
      name=CentOS-$releasever - Base - huanqiu.com
      
      baseurl=
      
      #mirrorlist=
      
      gpgcheck=1
      
      gpgkey=
      
      #released updates
      
      [updates]
      
      name=CentOS-$releasever - Updates - huanqiu.com
      
      baseurl=
      
      #mirrorlist=
      
      gpgcheck=1
      
      gpgkey=
      
      #packages used/produced in the build but not released
      
      [addons]
      
      name=CentOS-$releasever - Addons - huanqiu.com
      
      baseurl=
      
      #mirrorlist=
      
      gpgcheck=1
      
      gpgkey=
      
      #additional packages that may be useful
      
      [extras]
      
      name=CentOS-$releasever - Extras - huanqiu.com
      
      baseurl=
      
      #mirrorlist=
      
      gpgcheck=1
      
      gpgkey=
      
      #additional packages that extend functionality of existing packages
      
      [centosplus]
      
      name=CentOS-$releasever - Plus - huanqiu.com
      
      baseurl=
      
      #mirrorlist=
      
      gpgcheck=1
      
      enabled=0
      
      gpgkey=
      
      #contrib - packages by Centos Users
      
      [contrib]
      
      name=CentOS-$releasever - Contrib - huanqiu.com
      
      baseurl=
      
      #mirrorlist=
      
      gpgcheck=1
      
      enabled=0
      
      gpgkey=
      

      :wq! #保存退出

    • CentOS 6.x系列:

      # vi /etc/yum.repos.d/CentOS-Base.repo #添加以下代码
      
         # CentOS-Base.repo
      
         #
      
         # The mirror system uses the connecting IP address of the client and the
      
         # update status of each mirror to pick mirrors that are updated to and
      
         # geographically close to the client. You should use this for CentOS updates
      
         # unless you are manually picking other mirrors.
      
         #
      
         # If the mirrorlist= does not work for you, as a fall back you can try the
      
         # remarked out baseurl= line instead.
      
         #
      
         #
      
         [base]
      
         name=CentOS-$releasever - Base - huanqiu.com
      
         baseurl=
      
         #mirrorlist=
      
         gpgcheck=1
      
         gpgkey=
      
         #released updates
      
         [updates]
      
         name=CentOS-$releasever - Updates - huanqiu.com
      
         baseurl=
      
         #mirrorlist=
      
         gpgcheck=1
      
         gpgkey=
      
         #additional packages that may be useful
      
         [extras]
      
         name=CentOS-$releasever - Extras - huanqiu.com
      
         baseurl=
      
         #mirrorlist=
      
         gpgcheck=1
      
         gpgkey=
      
         #additional packages that extend functionality of existing packages
      
         [centosplus]
      
         name=CentOS-$releasever - Plus - huanqiu.com
      
         baseurl=
      
         #mirrorlist=
      
         gpgcheck=1
      
         enabled=0
      
         gpgkey=
      
         #contrib - packages by Centos Users
      
         [contrib]
      
         name=CentOS-$releasever - Contrib - huanqiu.com
      
         baseurl=
      
         #mirrorlist=
      
         gpgcheck=1
      
         enabled=0
      
         gpgkey=
      

      :wq! #保存退出

    • CentOS 7.x系列:

      # vi /etc/yum.repos.d/CentOS-Base.repo #添加以下代码
      
        # CentOS-Base.repo
      
        #
      
        # The mirror system uses the connecting IP address of the client and the
      
        # update status of each mirror to pick mirrors that are updated to and
      
        # geographically close to the client. You should use this for CentOS updates
      
        # unless you are manually picking other mirrors.
      
        #
      
        # If the mirrorlist= does not work for you, as a fall back you can try the
      
        # remarked out baseurl= line instead.
      
        #
      
        #
      
        [base]
      
        name=CentOS-$releasever - Base
      
        #mirrorlist=
      
        baseurl=
      
        gpgcheck=1
      
        gpgkey=
      
        #released updates
      
        [updates]
      
        name=CentOS-$releasever - Updates
      
        #mirrorlist=
      
        baseurl=
      
        gpgcheck=1
      
        gpgkey=
      
       #additional packages that may be useful
      
       [extras]
      
       name=CentOS-$releasever - Extras
      
       #mirrorlist=
      
       baseurl=
      
       gpgcheck=1
      
       gpgkey=
      
       #additional packages that extend functionality of existing packages
      
       [centosplus]
      
       name=CentOS-$releasever - Plus
      
       #mirrorlist=
      
       baseurl=
      
       gpgcheck=1
      
       enabled=0
      
       gpgkey=
      

      :wq! #保存退出

      • 或者参考:
        把里面的
  2. rpmforge源:

    • CentOS 5.x系列:

      # vi /etc/yum.repos.d/rpmforge.repo #添加以下代码
      
       [rpmforge]
      
       name = RHEL $releasever - RPMforge.net - dag
      
       baseurl = 
      
       enabled = 1
      
       protect = 0
      
       gpgkey=
      
       gpgcheck = 1
      
       [rpmforge-extras]
      
       name = RHEL $releasever - RPMforge.net - extras
      
       baseurl = 
      
       enabled = 0
      
       protect = 0
      
       gpgkey=
      
       gpgcheck = 1
      
      [rpmforge-testing]
      
      name = RHEL $releasever - RPMforge.net - testing
      
      baseurl = 
      
      enabled = 0
      
      protect = 0
      
      gpgkey=
      
      gpgcheck = 1
      

      :wq! #保存退出

    • CentOS 6.x系列:

      # vi /etc/yum.repos.d/rpmforge.repo #添加以下代码
      
        [rpmforge]
      
        name = RHEL $releasever - RPMforge.net - dag
      
        baseurl = 
      
        enabled = 1
      
        protect = 0
      
        gpgkey=
      
        gpgcheck = 1
      
        [rpmforge-extras]
      
        name = RHEL $releasever - RPMforge.net - extras
      
        baseurl = 
      
        enabled = 0
      
        protect = 0
      
        gpgkey=
      
        gpgcheck = 1
      
        [rpmforge-testing]
      
        name = RHEL $releasever - RPMforge.net - testing
      
        baseurl = 
      
        enabled = 0
      
        protect = 0
      
        gpgkey=
      
        gpgcheck = 1
      

      :wq! #保存退出

    • CentOS 7.x系列:

      # vi /etc/yum.repos.d/rpmforge.repo #添加以下代码
      
         [rpmforge]
      
         name = RHEL $releasever - RPMforge.net - dag
      
         baseurl = 
      
         enabled = 1
      
         protect = 0
      
         gpgkey=
      
         gpgcheck = 1
      
         [rpmforge-extras]
      
         name = RHEL $releasever - RPMforge.net - extras
      
         baseurl = 
      
         enabled = 0
      
         protect = 0
      
         gpgkey=
      
         gpgcheck = 1
      
         [rpmforge-testing]
      
         name = RHEL $releasever - RPMforge.net - testing
      
         baseurl = 
      
         enabled = 0
      
         protect = 0
      
         gpgkey=
      
         gpgcheck = 1
      

      :wq! #保存退出

  3. epel源:

    • CentOS 5.x系列:

      # vi /etc/yum.repos.d/epel.repo #添加以下代码
      
       [epel]
      
       name=Extra Packages for Enterprise Linux 5 - $basearch
      
       baseurl=
      
       failovermethod=priority
      
       enabled=1
      
       gpgcheck=1
      
       gpgkey =
      
       [epel-debuginfo]
      
       name=Extra Packages for Enterprise Linux 5 - $basearch - Debug
      
       baseurl=/debug
      
       failovermethod=priority
      
       enabled=0
      
       gpgkey =
      
       gpgcheck=1
      
       [epel-source]
      
       name=Extra Packages for Enterprise Linux 5 - $basearch - Source
      
       baseurl=
      
       failovermethod=priority
      
       enabled=0
      
       gpgkey =
      
       gpgcheck=1
      

      :wq! #保存退出

    • CentOS 6.x系列:

      # vi /etc/yum.repos.d/epel.repo #添加以下代码
      
       [epel]
      
       name=Extra Packages for Enterprise Linux 6 - $basearch
      
       baseurl=
      
       failovermethod=priority
      
       enabled=1
      
       gpgcheck=1
      
       gpgkey =
      
       [epel-debuginfo]
      
       name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
      
       baseurl=/debug
      
       failovermethod=priority
      
       enabled=0
      
       gpgkey =
      
       gpgcheck=1
      
       [epel-source]
      
       name=Extra Packages for Enterprise Linux 6 - $basearch - Source
      
       baseurl=
      
       failovermethod=priority
      
       enabled=0
      
       gpgkey =
      
       gpgcheck=1
      

      :wq! #保存退出

    • CentOS 7.x系列:

      # vi /etc/yum.repos.d/epel.repo #添加以下代码
      
       [epel]
      
       name=Extra Packages for Enterprise Linux 7 - $basearch
      
       baseurl=
      
       failovermethod=priority
      
       enabled=1
      
       gpgcheck=1
      
       gpgkey =
      
       [epel-debuginfo]
      
       name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
      
       baseurl=/debug
      
       failovermethod=priority
      
       enabled=0
      
       gpgkey =
      
       gpgcheck=1
      
       [epel-source]
      
       name=Extra Packages for Enterprise Linux 7 - $basearch - Source
      
       baseurl=
      
       failovermethod=priority
      
       enabled=0
      
       gpgkey =
      
       gpgcheck=1
      

      :wq! #保存退出

四、测试yum源是否配置正确

当前系统版本为CentOS 6.x,以此为例

  1. 添加CentOS-Base.repo

    # cd /etc/yum.repos.d/
    # mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    # vi CentOS-Base.repo #添加以下代码
    
      # CentOS-Base.repo
    
      #
    
      # The mirror system uses the connecting IP address of the client and the
    
      # update status of each mirror to pick mirrors that are updated to and
    
      # geographically close to the client. You should use this for CentOS updates
    
      # unless you are manually picking other mirrors.
    
      #
    
      # If the mirrorlist= does not work for you, as a fall back you can try the
    
      # remarked out baseurl= line instead.
    
      #
    
      #
    
      [base]
    
      name=CentOS-$releasever - Base - huanqiu.com
    
      baseurl=
    
      #mirrorlist=
    
      gpgcheck=1
    
      gpgkey=
    
      #released updates
    
      [updates]
    
      name=CentOS-$releasever - Updates - huanqiu.com
    
     baseurl=
    
     #mirrorlist=
    
     gpgcheck=1
    
     gpgkey=
    
     #additional packages that may be useful
    
     [extras]
    
     name=CentOS-$releasever - Extras - huanqiu.com
    
     baseurl=
    
     #mirrorlist=
    
     gpgcheck=1
    
     gpgkey=
    
     #additional packages that extend functionality of existing packages
    
     [centosplus]
    
     name=CentOS-$releasever - Plus - huanqiu.com
    
     baseurl=
    
     #mirrorlist=
    
    gpgcheck=1
    
    enabled=0
    
    gpgkey=
    
    #contrib - packages by Centos Users
    
    [contrib]
    
    name=CentOS-$releasever - Contrib - huanqiu.com
    
    baseurl=
    
    #mirrorlist=
    
    gpgcheck=1
    
    enabled=0
    
    gpgkey=
    

    :wq! #保存退出

  2. 添加rpmforge.repo

    # vi rpmforge.repo #添加以下代码
    
     [rpmforge]
    
     name = RHEL $releasever - RPMforge.net - dag
    
     baseurl = 
    
     enabled = 1
    
     protect = 0
    
     gpgkey=
    
     gpgcheck = 1
    
     [rpmforge-extras]
    
     name = RHEL $releasever - RPMforge.net - extras
    
     baseurl = 
    
     enabled = 0
    
     protect = 0
    
     gpgkey=
    
     gpgcheck = 1
    
     [rpmforge-testing]
    
     name = RHEL $releasever - RPMforge.net - testing
    
     baseurl = 
    
     enabled = 0
    
     protect = 0
    
     gpgkey=
    
     gpgcheck = 1
    

    :wq! #保存退出

  3. 添加epel.repo

    # vi epel.repo #添加以下代码
    
     [epel]
    
     name=Extra Packages for Enterprise Linux 6 - $basearch
    
     baseurl=
    
     failovermethod=priority
    
     enabled=1
    
     gpgcheck=1
    
     gpgkey =
    
     [epel-debuginfo]
    
     name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
    
     baseurl=/debug
    
     failovermethod=priority
    
     enabled=0
    
     gpgkey =
    
     gpgcheck=1
    
     [epel-source]
    
     name=Extra Packages for Enterprise Linux 6 - $basearch - Source
    
     baseurl=
    
    failovermethod=priority
    
    enabled=0
    
    gpgkey =
    
    gpgcheck=1
    

    :wq! #保存退出

  4. 清除缓存,列出可用源软件包

    # yum clean all #清除当前yum缓存
    # yum makecache #缓存yum源中的软件包信息
    # yum repolist #列出yum源中可用的软件包
    
  5. 使用yum命令安装软件
    # yum install php #测试CentOS官方标准源
    # yum install htop #测试rpmforge源
    # yum install nginx #测试epel源
    

至此,搭建CentOS在线yum源镜像服务器完成
此教程来源:

阅读(627) | 评论(0) | 转发(0) |
0

上一篇:rsync 自己yum本地源

下一篇:没有了

给主人留下些什么吧!~~