美文网首页Linux 软件管理
CentOS7.3部署局域網yum源(http方式)

CentOS7.3部署局域網yum源(http方式)

作者: 鬼王丶 | 来源:发表于2017-09-06 19:07 被阅读32次

    一.搭建原因

    由於開發工作都是在單位局域網內,平時開發機可以通過代理服務器連外網絡,但是服務器是不允許連接到外網的。在部署一臺新的服務器,安裝服務軟件只能通內網環境的其它機器傳輸或拷貝,所以需要部署局域網內的yum源。

    Linux版本:

    [root@hanzo ~]# cat /etc/redhat-release 
    CentOS Linux release 7.3.1611 (Core) 
    

    二.安裝

    1.啓動httpd

    如果沒有安裝httpd,請執行以下命令:
    yum -y install httpd

    • 若對httpd配置不是很熟悉的話,不要修改其配置文件(/etc/httpd/conf/httpd.conf)。httpd默認目錄爲/var/www/html
    • 若需要修改httpd端口,可以先查看http的開放端口,防止訪問http服務失敗;
    [root@hanzo ~]# semanage port -l | grep http
    http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
    http_cache_port_t              udp      3130
    http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000 #httpd服務可用端口
    
    • 儘量使用80端口,不然很有可能訪問失敗。在這裏就使用默認的80端口了

    查看httpd是否已經啓動:
    systemctl status httpd.service
    如果沒有啓動,使用以下命令啓動:
    systemctl start httpd.service
    查看httpd服務是否開機啓動:

    [root@hanzo ~]# systemctl list-unit-files httpd.service
    UNIT FILE     STATE   
    httpd.service disabled #enabled爲開機啓動。這裏顯示開機不啓動
    
    1 unit files listed.
    

    若需要開機啓動,執行以下命令:
    systemctl enable httpd.service

    2.準備rpm

    本地yum源中的rpm軟件包可以通過以下方式獲取:

    • 從CentOS-xxxx.iso或其他iso鏡像中獲取;
    • 通過網絡下載自己所需要的rpm軟件包;
    • 通過reposync(由yum-utils提供的一個服務)工具從遠程鏡像站點(yum服務器)同步到本地。
      當然還有很多別的方式獲取,但是不管用什麼方式,總之,在你的本地會得到一些rpm軟件包文件。
      在本例中,我需要在內網的服務器上和自己的開發機上安裝docker。所以,我使用配置docker的yum源來獲取rpm軟件包以進行安裝。

    添加docker yum軟件源

    #在/etc/yum.repos.d目錄下新建文件docker.repo
    [root@hanzo yum.repos.d]# pwd
    /etc/yum.repos.d
    [root@hanzo yum.repos.d]# ls
    CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
    CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  docker.repo
    [root@hanzo yum.repos.d]# cat docker.repo 
    #添加以下內容至docker.repo文件中
    [dockerrepo] #[name]repo id,隨意但必須存在
    name=Docker Repository #repo name,描述性內容
    baseurl=https://yum.dockerproject.org/repo/main/centos/7/
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg
    

    完成上述步驟之後,就可以在本機上安裝docker了。如果你不需要就略過。
    yum update
    yum install docker-engine

    同步docker yum軟件源至本地

    #進入httpd默認目錄。將rpm包同步到此目錄,以供創建倉庫使用
    [root@hanzo html]# pwd
    /var/www/html
    #列出目前本機上所使用的倉庫,找到之上添加的dockerrepo倉庫標識
    [root@hanzo html]# yum repolist all
    ...
    repo id                        repo name                              status
    ......
    dockerrepo                     Docker Repository                      enabled:   110
    .......
    [root@hanzo html]# reposync -r dockerrepo -p /var/www/html/
    #-r 指定倉庫標識。我的是dockerrepo,如果你和我的不一樣,注意換成自己的
    #-p 指定目標目錄,默認爲當前工作目錄
    dockerrepo                                                             | 2.9 kB  00:00:00     
    (1/66): docker-engine-1.7.0-1.el7.centos.x86_64.rpm                    | 4.5 MB  00:00:32
    ......
    (66/66): docker-engine-debuginfo-17.05.0.ce-1.el7.centos.x86_64.rpm    | 3.4 MB  00:00:25 
    [root@hanzo html]# ls dockerrepo/
    Packages #包含一堆rpm
    

    上述reposync -r dockerrepo -p /var/www/html/執行完後,會將docker yum軟件源同步到本地的/var/www/html/目錄中,在此目錄中會生成dockerrepo目錄用於存放rpm包。第一次同時時間比較長,大概66個rpm包。

    3.創建本地yum倉庫

    [root@hanzo dockerrepo]# pwd
    /var/www/html/dockerrepo #當前工作目錄
    [root@hanzo dockerrepo]# ls
    Packages
    [root@hanzo dockerrepo]# createrepo . #創建當前目錄爲yum倉庫
    Spawning worker 0 with 17 pkgs
    Spawning worker 1 with 17 pkgs
    Spawning worker 2 with 16 pkgs
    Spawning worker 3 with 16 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    [root@hanzo dockerrepo]# ls
    Packages  repodata
    

    dockerrepo中的repodata目錄很重要,它就是分析rpm軟件後所產生的軟件屬性相依數據存放處。

    4.使用yum倉庫

    使用ssh登陸內網中其他的服務器

    [root@Riped-MicroService-01 yum.repos.d]# pwd
    /etc/yum.repos.d
    #當前服務器不能連接外網,所以默認使用的倉庫不能使用。
    #重命名或者修改enable=0使CentOS-Base.repo中配置的源失效。
    #若你的服務器上的其它*.repo文件中有啓用的最好也修改一下,以防影響測試。
    [root@Riped-MicroService-01 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak  
    #創建lan-yum.repo文件,並添加以下內容
    [root@Riped-MicroService-01 yum.repos.d]# cat lan-yum.repo 
    [lanrepo]
    name=LAN YUM Repository
    baseurl=http://yum倉庫IP/dockerrepo
    enable=1
    gpgcheck=0
    #查看當前目錄的變化
    [root@Riped-MicroService-01 yum.repos.d]# ls
    CentOS-Base.repo.bak  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
    CentOS-CR.repo        CentOS-fasttrack.repo  CentOS-Sources.repo  lan-yum.repo
    #查看當前服務器上此刻啓用的yum源
    #可以看到,僅有剛配置的repo id爲``lanrepo``的yum源是開啓的
    [root@Riped-MicroService-01 yum.repos.d]# yum repolist all
    ......
    lanrepo                     LAN YUM Repository                                enabled: 66
    ......
    

    通過yum repolist all命令可以看到,僅有剛配置的repo id爲lanrepo的yum源是開啓的。

    查看軟件列表

    [root@Riped-MicroService-01 yum.repos.d]# yum list
    Installed Packages
    ......
    Available Packages
    docker-engine.x86_64             17.05.0.ce-1.el7.centos                   lanrepo  
    docker-engine-debuginfo.x86_64   17.05.0.ce-1.el7.centos                   lanrepo  
    docker-engine-selinux.noarch     17.05.0.ce-1.el7.centos                   lanrepo 
    

    上述列出的結果Available Packages就是我所需要的,如果沒有列出期望的軟件,可以先執行yum clean all,然後再執行yum list
    接下來就可以進行內網服務器的軟件安裝了。

    4.更新yum倉庫

    • yum倉庫更新(開發機)
      通過yum下載(不安裝)一個或多個rpm軟件包,用於更新yum倉庫用。
      比如下載一個vsftpd rpm軟件包,可以通過以下兩種方式:
      1. yumdownloader --destdir=/var/www/html/dockerrepo/ vsftpd (推薦)
      2. yum -y install --downloadonly --downloaddir=/var/www/html/dockerrepo/ vsftpd (未成功下載)

    由於我需要的是GitLab的rpm包,所以之下用的是我直接從官網下載的gitlab-cerpm包。

    #在之前生成的yum倉庫文件夾下添加rpm包。在這裏添加的是gitlab的rmp包,從官網下載的。
    #無論是放到``Packages``中,還是新建目錄都可以
    [root@hanzo dockerrepo]# ls
    gitlab-ce-9.5.3-ce.0.el7.x86_64.rpm  Packages  repodata
    #更新yum倉庫
    [root@hanzo dockerrepo]# createrepo --update .
    Spawning worker 0 with 1 pkgs
    Spawning worker 1 with 0 pkgs
    Spawning worker 2 with 0 pkgs
    Spawning worker 3 with 0 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    
    • 使用端更新(本文所指內網服務器)
    #第一次列出結果沒有變化,沒看見新添加的rpm包
    [root@Riped-MicroService-01 yum.repos.d]# yum list
    Installed Packages
    ......
    Available Packages
    docker-engine.x86_64             17.05.0.ce-1.el7.centos                   lanrepo  
    docker-engine-debuginfo.x86_64   17.05.0.ce-1.el7.centos                   lanrepo  
    docker-engine-selinux.noarch     17.05.0.ce-1.el7.centos                   lanrepo 
    #清除舊數據(/var/cache/yum)
    #yum clean [packages | headers | all]
    #packages: 將已下載的軟件文件刪除
    #header  : 將下載的軟件文件頭刪除
    #all     : 刪除所有相關數據 
    [root@Riped-MicroService-01 yum.repos.d]# yum clean all
    Loaded plugins: fastestmirror, langpacks
    Cleaning repos: lanrepo
    Cleaning up everything
    Cleaning up list of fastest mirrors
    #再次列出會顯示新添加的rpm包
    [root@Riped-MicroService-01 yum.repos.d]# yum list
    ......
    gitlab-ce.x86_64                 9.5.3-ce.0.el7                             lanrepo
    

    刪除rpm包與添加rpm包過程相似,都需要執行相應的createrepo --update .yum clean all命令。

    本機使用本機的yum倉庫,僅需要在相應的*.repo文件中把baseurl修改爲file://path/repo。比如,在我這,我直接進行以下修改:

    [root@hanzo yum.repos.d]# cat docker.repo 
    [dockerrepo]
    name=Docker Repository
    #baseurl=https://yum.dockerproject.org/repo/main/centos/7/
    baseurl=file:///var/www/html/dockerrepo
    enabled=1
    #gpgcheck=1
    #gpgkey=https://yum.dockerproject.org/gpg
    

    相关文章

      网友评论

        本文标题:CentOS7.3部署局域網yum源(http方式)

        本文链接:https://www.haomeiwen.com/subject/qnxvjxtx.html