您的位置:首页 > 运维架构 > Nginx

基于Nginx本地Yum仓库的搭建

2017-12-10 16:23 435 查看

基于Nginx本地Yum仓库的搭建

RHEL
Centos
系列
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]#ls
repobackup  selfbuild.repo
[root@node1 yum.repos.d]#touch test.repo
[root@node1 yum.repos.d]#ls
repobackup  selfbuild.repo  test.repo


以在线
Mariadb
仓库为例:

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


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

安装必要工具包

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

[root@node1 yum.repos.d]#yum -y install yum-utils createrepo
[root@node1 yum.repos.d]#reposync --help
Usage:
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 --help
Usage: 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]#ls
Mariadb
[root@node1 repository]#ls Mariadb/rpms/
galera-25.3.22-1.rhel7.el7.centos.x86_64.rpm
jemalloc-3.6.0-1.el7.x86_64.rpm
jemalloc-devel-3.6.0-1.el7.x86_64.rpm
MariaDB-10.2.11-centos7-x86_64-aws-key-management.rpm
MariaDB-10.2.11-centos7-x86_64-backup.rpm
MariaDB-10.2.11-centos7-x86_64-client.rpm
MariaDB-10.2.11-centos7-x86_64-common.rpm
MariaDB-10.2.11-centos7-x86_64-compat.rpm
MariaDB-10.2.11-centos7-x86_64-connect-engine.rpm
MariaDB-10.2.11-centos7-x86_64-cracklib-password-check.rpm
MariaDB-10.2.11-centos7-x86_64-devel.rpm
MariaDB-10.2.11-centos7-x86_64-gssapi-server.rpm
MariaDB-10.2.11-centos7-x86_64-oqgraph-engine.rpm
MariaDB-10.2.11-centos7-x86_64-rocksdb-engine.rpm
MariaDB-10.2.11-centos7-x86_64-server.rpm
MariaDB-10.2.11-centos7-x86_64-shared.rpm
MariaDB-10.2.11-centos7-x86_64-test.rpm
MariaDB-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 pkgs
Spawning worker 1 with 5 pkgs
Spawning worker 2 with 4 pkgs
Spawning worker 3 with 4 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite 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= 0
enabled= 1
[root@node1 rpms]#yum clean all
Loaded plugins: fastestmirror, langpacks
Cleaning repos: CDRom EPEL Mariadb
Cleaning up everything
[root@node1 rpms]#
[root@node1 rpms]#
[root@node1 rpms]#yum repolist all
Loaded plugins: fastestmirror, langpacks
CDRom                                                                   | 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 mirrors
repo id                        repo name                                        status
CDRom                          cdrom                                            enabled:  9,363
EPEL                           epel-aliyun                                      enabled: 12,131
Mariadb                        Mariadb Local Repository                         enabled:     18
repolist: 21,512
[root@node1 rpms]#yum list all Mariadb-server*
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
MariaDB-server.x86_64                       10.2.11-1.el7.centos                       Mariadb
mariadb-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.conf
server {
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.service
Created 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 -ntl
State       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仓库
列表了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息