zoukankan      html  css  js  c++  java
  • 搭建基于HTTP协议内网yum仓库

    环境:VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5

    1. 前言

    如果我们的yum仓库需要多台机器共同使用,此时把yum仓库做成本地的,然后一台台scp推送过去比较麻烦,此时可以考虑搭建一个基于HTTP协议,供给内网其它机器使用的本地yum仓库。

    下面的操作步骤以内网管理机器(10.0.0.61)作为rpm包仓库,在其上安装nginx,并对外提供HTTP服务,其它机器使用内网管理机器上的rpm包仓库作为自己的仓库。

    总体操作步骤如下:

    • 在内网管理机器(存放rpm包的机器)准备好rpm包
    • 在管理机器上生成repodata信息
    • 在管理机器上配置nginx并对外提供服务
    • 在管理机器上配置仓库的repo文件
    • 把管理机器上的repo文件推送给其它机器使用
    • 在其它内网机器上测试使用

    2. 把rpm包下载到本地

    yum install  --downloadonly --downloaddir=/aspack/ mysql-community-server
    

    看到了吗,就是如此简单,上述命令即可把mysql-community-server对应的所有rpm包及其依赖下载到/aspack/目录里,也就是说yum本地安装mysql需要的所有文件我们都准备好了。

    执行上述命令本机不会安装mysql,本机初始处于没有安装任何mysql相关包的状态

    下图是我用此方法,下载的一些rpm包:

    3. 配置nginx对外提供服务

    在管理机器上安装好nginx并配置如下:

    [root@m01 ~]# hostname -I
    10.0.0.61 172.16.1.61 
    [root@m01 ~]# cat /etc/nginx/conf.d/as4k-http.conf 
    # yum repository for other machine over http
    server {
        listen       2222;
        server_name  10.0.0.61;
    
        location / {
            root   /aspack;
            index  index.html;
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;
        }
    
    }
    [root@m01 ~]# nginx -t
    [root@m01 ~]# systemctl restart nginx
    [root@m01 ~]# netstat -lntp | grep 2222
    

    监控其它端口也一样,开启索引功能不是必须的,根目录一定是rpm包存放的目录。

    4. 配置本地repo文件

    [root@m01 ~]# cat /etc/yum.repos.d/as4k-http.repo 
    [as4k-http]
    name=as4k http repository
    baseurl=http://10.0.0.61:2222/
    gpgcheck=0
    enabled=1
    

    5. 生成repodata信息

    createrepo命令默认系统没有,需要我们额外安装:

    # yum install createrepo -y
    

    安装完毕之后,直接使用:

    # createrepo /aspack/
    

    这时会发现本地仓库repodata相关信息已经生成完毕:

    6. 检查及使用

    首先在本地管理机器上检查看是否可用。

    [root@m01 ~]# yum repoinfo as4k-http
    as4k-http                            | 2.9 kB  00:00:00     
    as4k-http/primary_db                 |  42 kB  00:00:00     
    Repo-id      : as4k-http
    Repo-name    : as4k http repository
    Repo-status  : enabled
    Repo-revision: 1538128513
    Repo-updated : Fri Sep 28 17:55:13 2018
    Repo-pkgs    : 45
    Repo-size    : 215 M
    Repo-baseurl : http://10.0.0.61:2222/
    Repo-expire  : 21,600 second(s) (last: Mon Oct  1 15:12:22 2018)
    Filter     : read-only:present
    Repo-filename: /etc/yum.repos.d/as4k-http.repo
    repolist: 45
    

    然后再把as4k-http.repo文件推送到其它机器,测试使用情况。

    [root@m01 ~]# scp /etc/yum.repos.d/as4k-http.repo 
    root@10.0.0.9:/etc/yum.repos.d/
    [root@web03 ~]# hostname -I
    10.0.0.9 172.16.1.9 
    [root@web03 ~]# yum repoinfo as4k-http
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Repo-id      : as4k-http
    Repo-name    : as4k http repository
    Repo-status  : enabled
    Repo-revision: 1538128513
    Repo-updated : Fri Sep 28 17:55:13 2018
    Repo-pkgs    : 45
    Repo-size    : 215 M
    Repo-baseurl : http://10.0.0.61:2222/
    Repo-expire  : 21,600 second(s) (last: Mon Oct  1 15:17:53 2018)
    Filter     : read-only:present
    Repo-filename: /etc/yum.repos.d/as4k-http.repo
    repolist: 45
    

    在其它机器上安装软件测试:

    7. 对管理机器上的仓库进行更新

    管理机器仓库上的rpm包如有增删,需要在管理机器上重建仓库索引信息,可按下述步骤操作

    1. 查看旧的软件包总数 yum repoinfo as4k-http | grep pkgs
    2. 更新本地仓库 createrepo --update /aspack/
    3. 清除所有缓存 yum clean all
    4. 查看新的软件包总数 yum repoinfo as4k-http | grep pkgs

    如果软件包的数量增加或减少,说明仓库更新成功。

    有一个很大的问题暂未解决,上述更新操作是在管理机器上执行的,经过测试我发现管理机器上的软件包如有变动,必须对其它客户端机器也同样使用相同的操作更新仓库索引信息,该问题貌似可以通过添加gpgkey签名验证来解决,但本人暂未能解决,可参考的资料如下:

    http://www.narrabilis.com/mybook/repo
    http://www.ruanyifeng.com/blog/2013/07/gpg.html

    参考资料

    搭建本地离线yum仓库
    https://www.cnblogs.com/asheng2016/p/local-yum.html

    作者: 阿胜4K
    出处: https://www.cnblogs.com/asheng2016/p/local-yum-http.html

  • 相关阅读:
    一种线程安全的handle
    基于数组的无锁队列(译)
    distri.lua的web运维工具
    distri.lua重写开源手游服务器框架Survive
    99 Lisp Problems 二叉树(P54~P69)
    99 Lisp Problems 列表处理(P1~P28)
    TSPL学习笔记(4):数组相关练习
    TSPL学习笔记(3):排序算法练习
    用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 热更新Live2D
    用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用FairyGUI (二)
  • 原文地址:https://www.cnblogs.com/asheng2016/p/local-yum-http.html
Copyright © 2011-2022 走看看