一、需求及实现方式介绍:

  需求:现在各个软件版本更新迭代很快,在我们部署一套集群(比如:openstack)后,如果过一段时间想扩展集群时发现软件版本早已迭代更新,安装后导致和现有环境或多或少不兼容,比较麻烦,因此我们可以在集群搭建时就将所有的安装包下载到本地,使用本地仓库进行安装,可以保证软件版本不会发生变化。

  实现方式:使用nginx + createrepo + downloadonly 搭建本地yum 源。

二、搭建

  1、安装createrepo 

    # yum -y install createrepo

  2、创建镜像存放目录,最好能挂在一个单独的分区

    # mkdir /my_repo

  3、安装nginx

    # yum -y install nginx

    # vim /etc/nginx/nginx.conf    

    server {
listen 80 default_server;
listen [::]:80 default_server;
server_name x.x.x.x; #修改此行,yum源服务器的IP
root /usr/share/nginx/html; # Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; location / {
root /my_repo; #添加仓库的实际路径
autoindex on; #关键所在,必须添加
} error_page 404 /404.html;
location = /40x.html {
}

# systemctl restart nginx.service    #重启nginx 服务

  4、安装downloadonly  插件包

    # yum install yum-utils

  5、下载镜像包

    命令格式:
      yumdownloader --resolve(可选,意为下依赖包) --destdir=软件存放位置 (可选) +软件包名

    # yumdownloader --resolve nginx  --destdir=/my_repo/nginx

    

  6、生成镜像仓库,会在仓库目录下生成一个repodata 的目录

    #  createrepo -p /my_repo/

    

三、客户端测试:

  1、浏览器访问:

    

  2、客户端修改yum 源

    # cd /etc/yum.repos.d/ 

    # mkdir back

    # mv *.repo back

    # vin Internal.repo    

[base]
name = "Internal_repo"
baseurl = http://x.x.x.x #局域网yum 源IP地址
gpgcheck = 0
enabled = 1
[updates]
name = "Internal_repo"
baseurl = http://x.x.x.x
gpgcheck = 0
enabled = 1

    

    # yum repolist     #  客户端repo 列表查看

      

    #  yum -y install nginx   #客户端测试安装 nginx

      

四、后期维护

  1、服务端

    每次下载完镜像后,都需要更新yum仓库列表

    # createrepo --update -p /my_repo

  2、客户端

    #  yum clean all    #清除原有的yum信息

五、拓展

  1、同步网上现有的镜像源:

    a、创建存储目录

      # mkdir -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit  

    b、 准备同步阿里云的源,base,updates,extras,epel, 确保/etc/yum.repos.d/ 下只有下面这两个repo

      # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

      # wget -O /etc/yum.repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    c、 开始同步下载包

      # reposync -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/

    d、 建仓

      # createrepo -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/base/Packages

      # createrepo -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/extras/Packages

      # createrepo -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/updates/Packages

      # createrepo -p /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/epel

    e、crontab定时同步

      # crontab -e

        1 2 * * * reposync -np /my_repo/CentOS_72_1511_Yum/Aliyun/version_7.2/64bit/      #-np:只同步更新的部分

  2、挂在ISO镜像

    a、创建挂在目录

      # mkdir /my_repo/cdrom

    b、挂在镜像

      # mount -t iso9660  /dev/cdrom    /my_repo/cdrom

    c、建仓

      # createrepo -p /my_repo/cdrom

最新文章

  1. jQuery文件上传插件Uploadify(转)
  2. Android-java基础内部类
  3. Unity WebGL MoonSharp崩溃问题
  4. Java8 时间 API
  5. velocity自定义动画
  6. apt软件包管理
  7. 接口测试——httpclient介绍与请求方式详解
  8. php使用curl下载指定大小的文件
  9. HTML5 使用FileReader实现调用相册、拍照功能
  10. 11175-From D to E and Back(思维)
  11. CPU, PSU, SPU - Oracle Critical Patch Update Terminology Update
  12. 「TJOI2015」概率论 解题报告
  13. Centos7修改分区空间
  14. mv,rm等命令出现unrecognized option提示的解决方法
  15. 在Unity中使用Lua脚本
  16. django 项目运行时static静态文件不能加载问题处理
  17. 模式(一)javascript设计模式
  18. PHP之ctype扩展
  19. ABAP术语-Update Module
  20. alexnet,VGG,googlenet,resnet

热门文章

  1. 对javaEE Tutorial上hello2的源码分析详解
  2. PHP的DBA扩展学习
  3. Java基础系列(22)- For循环详解
  4. DevOps与CICD简介
  5. 一文让你彻底理解group by和聚合函数
  6. genymotion从本地拖拽apk到模拟器失败,报错“An error occured while deploying the file……”-解决方案
  7. LR进行内外网附件上传并发——实践心得
  8. SVN服务器的环境搭建(图文并茂)
  9. heoi2020信号传递
  10. Python技法2:函数参数的进阶用法