云网牛站
所在位置:首页 > Linux云服务器 > 使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

2019-11-23 10:24:25作者:高风科稿源:云网牛站

在本文中,我们将探讨如何通过使用Rsync来创建CentOS 8或7操作系统的本地存储库(托管在Nginx Web服务器上),通过具有本地cron作业来创建本地CentOS 8镜像,该作业会定期检查上游存储库中的更新,并相应地在本地进行更新。通过创建CentOS 8存储库镜像,您可以配置CentOS 8服务器来访问软件包,而无需访问Internet,通过从外部来源提取RPM软件包,可以提高安全性并减少带宽消耗量,在此设置中,我们将使用CentOS 7或CentOS 8服务器执行操作,您应该具有一个外部存储,该存储应具有足够的容量来托管存储库软件包和潜在的增长。

 

步骤1:安装Nginx Web服务器

由于Nginx用作首选的Web服务器,因此将其安装在CentOS系统中。

CentOS 8:

sudo dnf -y install @nginx

参考:在CentOS 8系统中安装Nginx的方法

CentOS 7:

sudo yum -y install epel-release

sudo yum -y install nginx

安装后,启动并启用该服务:

sudo systemctl enable --now nginx

确认服务正在运行:

$ systemctl status nginx

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

在防火墙中打开http端口:

sudo firewall-cmd --add-service=http --permanent

sudo firewall-cmd --reload

 

步骤2:创建存储库目录

我的服务器中有一个辅助磁盘,用于存储存储库数据–100GB的/dev/vdc:

$ lsblk

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

参考:用lsblk在Linux上找到硬盘信息:硬盘标签,找到分区名称,查找UUID信息

我将在此块设备上创建一个分区,并将其安装在/data目录下,首先,在其上创建一个分区:

sudo parted -s -a optimal -- /dev/vdc mklabel gpt

sudo parted -s -a optimal -- /dev/vdc mkpart primary 0% 100%

sudo parted -s -- /dev/vdc align-check optimal 1

在其中创建物理卷和卷组:

$ sudo pvcreate /dev/vdc1

Physical volume "/dev/vdc1" successfully created.

$ sudo vgcreate data /dev/vdc1

Volume group "data" successfully created

创建逻辑卷:

$ sudo lvcreate -n repos -l+100%FREE data

Logical volume "repos" created.

创建一个文件系统:

$ sudo mkfs.xfs /dev/mapper/data-repos

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

创建用于挂载逻辑卷的目录:

sudo mkdir /data

创建一个挂载点:

$ sudo vim /etc/fstab

/dev/mapper/data-repos /data xfs defaults 0 0

安装它:

sudo mount -a

确认:

$ df -hT /data

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

为CentOS 8存储库数据创建基本目录:

sudo mkdir -p /data/repos/centos/8/

确认所有目录均已创建:

$ tree /data/

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

 

步骤3:建立储存库同步处理指令码

现在,我们创建一个脚本,该脚本将用于将内容从远程存储库同步到本地系统:

$ sudo vim /etc/centos8_reposync.sh

粘贴下面的数据:

#!/bin/bash

repos_base_dir="/data/repos/centos/8/"

# Start sync if base repo directory exist

if [[ -d "$repos_base_dir" ]] ; then

# Start Sync

rsync  -avSHP --delete rsync://mirror.liquidtelecom.com/centos/8/  "$repos_base_dir"

# Download CentOS 8 repository key

wget -P $repos_base_dir wget https://www.centos.org/keys/RPM-GPG-KEY-CentOS-Official

使脚本可执行:

sudo chmod +x /etc/centos8_reposync.sh

安装Tmux并启动第一次执行:

$ sudo yum -y install tmux

$ tmux

$ sudo /etc/centos8_reposync.sh

该脚本应开始运行:

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

应该创建许多目录:

$ ls -1 /data/repos/centos/8/

AppStream

BaseOS

centosplus

COMPOSE_ID

cr

extras

fasttrack

isos

PowerTools

等待初始脚本完成运行,然后创建cron作业以进行每周同步:

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

我将同步设置为在每个星期日的晚上6点运行:

$ sudo crontab -e

00 18 * * 7  /etc/centos8_reposync.sh

 

步骤4:配置Nginx

创建Nginx配置文件以服务存储库内容:

$ sudo vim /etc/nginx/conf.d/centos.conf

server {

listen 80;

server_name repos.example.com;

root /data/repos/;

location / {

autoindex on;

}

}

其中repos.example.com是用于访问存储库的域名。

配置SELinux标签:

sudo semanage fcontext -a -t httpd_sys_content_t "/data/repos(/.*)?"

sudo restorecon -Rv /data/repos

更改后重新启动nginx:

sudo nginx -t

sudo systemctl restart nginx

打开服务器URL确认它正在运行:

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

 

步骤5:配置CentOS 8客户端计算机

现在我们的镜像已经准备好了,我们可以配置CentOS 8机器以使用本地存储库。

首先备份当前存储库:

cd /etc/yum.repos.d/

sudo mkdir old-repos

sudo mv *.repo old-repos 

创建一个新的存储库文件:

sudo vim local.repo

在下面进行修改并将其粘贴:

[BaseOS]

name=CentOS-$releasever - Base

baseurl=http://repos.computingforgeeks.com/centos/$releasever/BaseOS/$basearch/os/

gpgcheck=1

enabled=1

gpgkey=http://repos.computingforgeeks.com/centos/$releasever/RPM-GPG-KEY-CentOS-Official

[AppStream]

name=CentOS-$releasever - AppStream

baseurl=http://repos.computingforgeeks.com/centos/$releasever/AppStream/$basearch/os/

gpgcheck=1

enabled=1

gpgkey=http://repos.computingforgeeks.com/centos/$releasever/RPM-GPG-KEY-CentOS-Official

[centosplus]

name=CentOS-$releasever - Plus

baseurl=http://repos.computingforgeeks.com/centos/$releasever/centosplus/$basearch/os/

gpgcheck=1

enabled=0

gpgkey=http://repos.computingforgeeks.com/centos/$releasever/RPM-GPG-KEY-CentOS-Official

[extras]

name=CentOS-$releasever - Extras

baseurl=http://repos.computingforgeeks.com/centos/$releasever/extras/$basearch/os/

gpgcheck=1

enabled=1

gpgkey=http://repos.computingforgeeks.com/centos/$releasever/RPM-GPG-KEY-CentOS-Official

[PowerTools]

name=CentOS-$releasever - PowerTools

baseurl=http://repos.computingforgeeks.com/centos/$releasever/PowerTools/$basearch/os/

gpgcheck=1

enabled=0

gpgkey=http://repos.computingforgeeks.com/centos/$releasever/RPM-GPG-KEY-CentOS-Official

[cr]

name=CentOS-$releasever - cr

baseurl=http://repos.computingforgeeks.com/centos/$releasever/cr/$basearch/os/

gpgcheck=1

enabled=0

gpgkey=http://repos.computingforgeeks.com/centos/$releasever/RPM-GPG-KEY-CentOS-Official

[fasttrack]

name=CentOS-$releasever - fasttrack

baseurl=http://repos.computingforgeeks.com/centos/$releasever/fasttrack/$basearch/os/

gpgcheck=1

enabled=0

gpgkey=http://repos.computingforgeeks.com/centos/$releasever/RPM-GPG-KEY-CentOS-Official

注:

repos.computingforgeeks.com是用于repos访问的域。

清理当前回购缓存:

sudo yum clean all

更新:

$ sudo yum makecache

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

列出存储库:

$ sudo yum repolist

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

从中运行系统更新:

sudo yum -y update

 

步骤6:启用禁用的存储库

默认情况下,某些存储库是禁用的,要启用它们,请安装yum-utils软件包:

sudo yum install yum-utils

要激活存储库,请使用以下命令:

sudo yum-config-manager --enable reponame

以下是启用PowerTools和centosplus存储库的示例:

sudo yum-config-manager --enable PowerTools

sudo yum-config-manager --enable centosplus

确认:

$ sudo yum repolist

使用Rsync和Nginx创建CentOS 8系统本地存储库镜像

要禁用,请用–disable代替–enable。

 

结语

通过上面的操作步骤,你现在可以使用本地CentOS 8系统镜像了。

 

相关主题

在RHEL 8/CentOS 8上安装EPEL存储库(EPEL Repository)的方法

精选文章
热门文章