基于Nginx本地Yum仓库的搭建

来源:互联网 发布:web编程语言有哪些 编辑:程序博客网 时间:2024/06/05 16:07

基于Nginx本地Yum仓库的搭建

RHELCentos系列linux发行版中,Yum是我们安装软件包最为常用的工具,相较于单独安装单个软件包的rpm工具,Yum能够自动获取各个软件包之间的依赖关系并且能够一并下载安装,非常的简单方便。但是Yum工具非常依赖Yum工具获取软件包的目录,通常是在线的各大镜像站点,我们称之为Yum仓库
但有时在工作中,我们可能很难实时接触到互联网,或者从流量成本考虑,反复从互联网下载软件包花费大而且占用带宽,此时,构建本地Yum仓库会是个不错的选择。本文将介绍如何构建本地Yum仓库,并通过Ningx搭建的Http服务分发出去。

基于在线镜像站点创建Repo文件

Yum工具需要依靠Repo文件得到Yum仓库的基本信息,例如仓库路径,仓库标志。我们首先需要根据在线的镜像站点创建一个Repo文件,而且只能在指定的路径/etc/yum.repos.d/下创建,否则Yum将无法识别该文件。

[root@node1 ~]#cd /etc/yum.repos.d[root@node1 yum.repos.d]#lsrepobackup  selfbuild.repo[root@node1 yum.repos.d]#touch test.repo[root@node1 yum.repos.d]#lsrepobackup  selfbuild.repo  test.repo

以在线Mariadb仓库为例:

[root@node1 yum.repos.d]#cat test.repo[Mariadb]name= Mariadb Local Repositorybaseurl= https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos/7/x86_64/gpgcheck= 0enabled= 1[root@node1 yum.repos.d]#yum repolist allLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfilerepo id                        repo name                                        statusCDRom                          cdrom                                            enabled:  9,363EPEL                           epel-aliyun                                      enabled: 12,131Mariadb                        Mariadb Local Repository                         enabled:     14repolist: 21,508

这样mariadb的在线仓库就能够投入使用了,但这不是我们的目的,我们需要通过这个在线仓库获取仓库内的所有软件包。

安装必要工具包

在构建本地Yum仓库时需要用到两个工具reposynccreaterepo,分别来自yum-utils包和createrepo包。reposync用于同步远程Yum仓库至本地路径,createrepo用于生成安装包元数据信息。直接使用现有的在线EPEL源安装即可

[root@node1 yum.repos.d]#yum -y install yum-utils createrepo[root@node1 yum.repos.d]#reposync --helpUsage:    Reposync is used to synchronize a remote yum repository to a local    directory using yum to retrieve the packages.    /usr/bin/reposync [options] …… ……[root@node1 yum.repos.d]#createrepo --helpUsage: genpkgmetadata.py [options]…… ……

同步在线仓库的软件包文件至本地

在本地创建一个目录专门用于存放软件包构建Yum仓库,然后使用reposync同步在线仓库的软件包至本地。reposync的使用格式为reposync -g -m -r REPO-ID -p PATH,REPO-ID为需要同步的Yum仓库的标志,PATH为本地目录。

[root@node1 yum.repos.d]#mkdir /app/repository[root@node1 yum.repos.d]#cd /app/repository[root@node1 repository]#reposync -g -m -r Mariadb -p /app/repository  (1/18): MariaDB-10.2.11-centos7-x86_64-aws-key-management.rpm           | 1.2 MB  00:00:01     (2/18): MariaDB-10.2.11-centos7-x86_64-backup.rpm                       |  39 MB  00:00:10     (3/18): MariaDB-10.2.11-centos7-x86_64-common.rpm                       | 154 kB  00:00:00     (4/18): MariaDB-10.2.11-centos7-x86_64-compat.rpm                       | 2.8 MB  00:00:00     (5/18): MariaDB-10.2.11-centos7-x86_64-connect-engine.rpm               | 2.5 MB  00:00:00     (6/18): MariaDB-10.2.11-centos7-x86_64-cracklib-password-check.rpm      |  16 kB  00:00:00     (7/18): MariaDB-10.2.11-centos7-x86_64-devel.rpm                        | 6.6 MB  00:00:02     (8/18): MariaDB-10.2.11-centos7-x86_64-client.rpm                       |  48 MB  00:00:14     (9/18): MariaDB-10.2.11-centos7-x86_64-gssapi-server.rpm                |  46 kB  00:00:01     (10/18): MariaDB-10.2.11-centos7-x86_64-oqgraph-engine.rpm              | 604 kB  00:00:00     (11/18): MariaDB-10.2.11-centos7-x86_64-rocksdb-engine.rpm              |  69 MB  00:00:21     (12/18): MariaDB-10.2.11-centos7-x86_64-shared.rpm                      | 393 kB  00:00:01     (13/18): MariaDB-10.2.11-centos7-x86_64-server.rpm                      | 110 MB  00:00:33     (14/18): MariaDB-10.2.11-centos7-x86_64-tokudb-engine.rpm               | 5.4 MB  00:00:07     (15/18): MariaDB-10.2.11-centos7-x86_64-test.rpm                        |  92 MB  00:00:22     (16/18): galera-25.3.22-1.rhel7.el7.centos.x86_64.rpm                   | 8.0 MB  00:00:04     (17/18): jemalloc-devel-3.6.0-1.el7.x86_64.rpm                          |  22 kB  00:00:00     (18/18): jemalloc-3.6.0-1.el7.x86_64.rpm                                | 104 kB  00:00:00

软件包下载完成:

[root@node1 repository]#lsMariadb[root@node1 repository]#ls Mariadb/rpms/galera-25.3.22-1.rhel7.el7.centos.x86_64.rpmjemalloc-3.6.0-1.el7.x86_64.rpmjemalloc-devel-3.6.0-1.el7.x86_64.rpmMariaDB-10.2.11-centos7-x86_64-aws-key-management.rpmMariaDB-10.2.11-centos7-x86_64-backup.rpmMariaDB-10.2.11-centos7-x86_64-client.rpmMariaDB-10.2.11-centos7-x86_64-common.rpmMariaDB-10.2.11-centos7-x86_64-compat.rpmMariaDB-10.2.11-centos7-x86_64-connect-engine.rpmMariaDB-10.2.11-centos7-x86_64-cracklib-password-check.rpmMariaDB-10.2.11-centos7-x86_64-devel.rpmMariaDB-10.2.11-centos7-x86_64-gssapi-server.rpmMariaDB-10.2.11-centos7-x86_64-oqgraph-engine.rpmMariaDB-10.2.11-centos7-x86_64-rocksdb-engine.rpmMariaDB-10.2.11-centos7-x86_64-server.rpmMariaDB-10.2.11-centos7-x86_64-shared.rpmMariaDB-10.2.11-centos7-x86_64-test.rpmMariaDB-10.2.11-centos7-x86_64-tokudb-engine.rpm

创建软件包元数据目录

前面我们提到,已下载到本地的软件包需要使用createrepo工具创建元数据目录,命令格式为createrepo PATH,要注意PATH为下载的软件包所在的目录。

[root@node1 repository]#[root@node1 repository]#cd Mariadb/rpms/[root@node1 rpms]#createrepo /app/repository/Mariadb/rpms/Spawning worker 0 with 5 pkgsSpawning worker 1 with 5 pkgsSpawning worker 2 with 4 pkgsSpawning worker 3 with 4 pkgsWorkers FinishedSaving Primary metadataSaving file lists metadataSaving other metadataGenerating sqlite DBsSqlite DBs complete

重建本地仓库的Repo文件

本地的Yum仓库创建好后需要修改Repo文件指向该目录,否则mariadb还是会指向在线站点。

[root@node1 rpms]#cat /etc/yum.repos.d/test.repo[Mariadb]name= Mariadb Local Repository# baseurl= https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos/7/x86_64/baseurl= file:///app/repository/Mariadb/rpms/gpgcheck= 0enabled= 1[root@node1 rpms]#yum clean all                  Loaded plugins: fastestmirror, langpacksCleaning repos: CDRom EPEL MariadbCleaning up everything[root@node1 rpms]#[root@node1 rpms]#[root@node1 rpms]#yum repolist all               Loaded plugins: fastestmirror, langpacksCDRom                                                                   | 3.6 kB  00:00:00     EPEL                                                                    | 4.7 kB  00:00:00     Mariadb                                                                 | 2.9 kB  00:00:00     (1/6): CDRom/group_gz                                                   | 155 kB  00:00:00     (2/6): CDRom/primary_db                                                 | 5.6 MB  00:00:00     (3/6): EPEL/group_gz                                                    | 266 kB  00:00:00     (4/6): Mariadb/primary_db                                               |  21 kB  00:00:00     (5/6): EPEL/updateinfo                                                  | 858 kB  00:00:00     (6/6): EPEL/primary_db                                                  | 6.1 MB  00:00:00     Determining fastest mirrorsrepo id                        repo name                                        statusCDRom                          cdrom                                            enabled:  9,363EPEL                           epel-aliyun                                      enabled: 12,131Mariadb                        Mariadb Local Repository                         enabled:     18repolist: 21,512[root@node1 rpms]#yum list all Mariadb-server*Loaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfileAvailable PackagesMariaDB-server.x86_64                       10.2.11-1.el7.centos                       Mariadbmariadb-server.x86_64                       1:5.5.52-1.el7                             CDRom

至此,MariaDB的本地Yum仓库搭建完毕。

为Yum仓库搭建Web服务

MariaDB的本地Yum仓库搭建完成,我们还应该为Yum仓库搭建Http环境对以方便Yum仓库通过Web对外提供服务。此处,我们选用Nginx提供Http服务。

[root@node1 rpms]#yum -y install nginx…… ……[root@node1 rpms]#cd /etc/nginx/conf.d/

/etc/nginx/conf.d路径下创建配置文件yum.conf

[root@node1 conf.d]#cat yum.confserver {        listen 80 default_server;        root /usr/share/nginx/html;        location /yum {            alias /app/repository;            autoindex on;            autoindex_exact_size off;            autoindex_localtime on;        }}

重启服务:

[root@node1 conf.d]#systemctl enable nginx.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.[root@node1 conf.d]#systemctl start nginx.service        [root@node1 conf.d]#systemctl status nginx.service       ● nginx.service - The nginx HTTP and reverse proxy server   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)   Active: active (running) since Sun 2017-12-10 16:10:20 CST; 4min 39s ago Main PID: 41957 (nginx) …… ……[root@node1 conf.d]#ss -ntlState       Recv-Q Send-Q  Local Address:Port                 Peer Address:Port              LISTEN      0      128                 *:111                             *:*                  LISTEN      0      128                 *:80                              *:*                  LISTEN      0      32                  *:21                              *:*                  LISTEN      0      10      192.168.122.1:53                              *:*                  LISTEN      0      10       172.18.42.20:53                              *:*                  

端口监听正常,这样访问http://IP/yum就能获取Yum仓库列表了。

原创粉丝点击