CentOS7制作本地局域网yum源

CentOS7制作本地局域网离线yum源
Yum(软件包管理器,全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
通常情况下,我们内部的服务器不允许直接连外网,要安装某些服务器比较麻烦,还有各种依赖包的问题。如果制作一个本地局域网离线yum源仓库,再安装软件包就会方便许多。制作本地yum的方式有多种,如http,ftp等,这里以ftp、nginx两种方式进行实验。

文章目录

  • 一、制作本地离线yum源服务端
    • 1.上传iso镜像到系统
    • 2.安装FTP服务
    • 3.挂载镜像到FTP目录
    • 4.修改本地repo配置
  • 二、客户端配置
    • 1.其他服务器客户端修改repo配置
    • 2.测试安装软件包
  • 三、从公网获取最新软件包到本地yum仓库
    • 1.安装yum工具
    • 2.建立rpm库存放目录:
    • 3.修改nginx配置文件
    • 4.建立阿里云yum库
    • 5.刷新缓存
    • 6.开始同步下载rpm包
    • 7.建库
    • 8.建立定时同步
    • 9.客户端连接YUM仓库

一、制作本地离线yum源服务端

1.上传iso镜像到系统

新建目录,并将iso镜像文件上传到目录

mkdir /hdapp

CentOS-7.9-x86_64-Everything-2207-02.iso

2.安装FTP服务

(假设有外网情况直接安装。如果没有外网的话,先省略这一步完成步骤3-4再回来步骤2安装也可以)

yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd

3.挂载镜像到FTP目录

FTP服务默认路径/var/ftp/,可以修改,我这里没有改直接演示

mkdir /var/ftp/myyum
mount -o loop /hdapp/CentOS-7.9-x86_64-Everything-2207-02.iso /var/ftp/myyum/

可以将该命令写入/etc/rc.d/rc.local文件,服务器重启能自动挂载镜像到目录
在这里插入图片描述

4.修改本地repo配置

yum服务端也可以是客户端,毕竟自身也需要安装或者更新软件包
baseurl修改为本地yum源绝对路径

cd /etc/yum.repos.d/
mkdir ./repobak
mv ./*.repo ./repobak/
cp ./repobak/CentOS-Media.repo .
vi CentOS-Media.repo

CentOS7制作本地局域网yum源_第1张图片
清理yum源,更新缓存,列出所有库

yum clean all
yum makecache
yum repolist

CentOS7制作本地局域网yum源_第2张图片

二、客户端配置

1.其他服务器客户端修改repo配置

baseurl路径修改为FTP路径

cd /etc/yum.repos.d/
mkdir ./repobak
mv ./*.repo ./repobak/
cp ./repobak/CentOS-Media.repo .
vi CentOS-Media.repo

CentOS7制作本地局域网yum源_第3张图片
清理yum源

yum clean all
yum makecache
yum repolist

CentOS7制作本地局域网yum源_第4张图片

2.测试安装软件包

安装成功
CentOS7制作本地局域网yum源_第5张图片

三、从公网获取最新软件包到本地yum仓库

如果yum源服务器可以连公网的话,可以设置定时从从公网获取最新软件包到本地yum仓库。

1.安装yum工具

yum install -y yum-utils createrepo plugin-priorities
yum-utils:reposync同步工具
createrepo:编辑yum库工具
#plugin-priorities:控制yum源更新优先级工具,这个工具可以用来控制进行yum源检索的先后顺序,建议可以用在client端

2.建立rpm库存放目录:

由于rpm较多,最好是下载在额外的数据盘,/hdapp已挂载容量较大的数据盘
mkdir -p /hdapp/aliyun/CentOS/7/64bit/

3.修改nginx配置文件

yum install -y nginx
vi /etc/nginx/nginx.conf
systemctl start nginx
systemctl enable nginx

修改nginx的默认html目录/usr/share/nginx/html/为/hdapp/aliyun/CentOS/7/64bit/,头部user nginx 改为user root,否则访问页面会提示403没有权限
CentOS7制作本地局域网yum源_第6张图片
CentOS7制作本地局域网yum源_第7张图片

4.建立阿里云yum库

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
CentOS7制作本地局域网yum源_第8张图片

5.刷新缓存

yum clean all
yum makecache
yum repolist

6.开始同步下载rpm包

reposync -np /hdapp/aliyun/CentOS/7/64bit
reposync:-n:只下载最新的包,-p:下载包的路径:默认为当前目录
CentOS7制作本地局域网yum源_第9张图片

7.建库

cd /hdapp/aliyun/CentOS/7/64bit
ll

可以看到从阿里云同步了5个文件夹下来,依次建库
tip:其c7-media与“一、服务端”中本地离线yum源内容几乎一致,因此客户端修改repo源只需要用这个同步的yum仓库即可

cd base
createrepo -p .
cd ../c7-media
createrepo -p .
cd ../epel
createrepo -p .
cd ../extras
createrepo -p .
cd ../updates
createrepo -p .

CentOS7制作本地局域网yum源_第10张图片

8.建立定时同步

新建同步脚本,同步完更新repo库

vi /hdapp/yum_update.sh
#!/bin/bash
echo 'Updating Aliyun yum Source'
DATETIME=``
exec > /var/log/aliyunyumrepo_$DATETIME.log
     reposync -np /hdapp/aliyun/CentOS/7/64bit
if [ $? -eq 0 ];then
      createrepo --update /hdapp/aliyun/CentOS/7/64bit/base
      createrepo --update /hdapp/aliyun/CentOS/7/64bit/c7-media
      createrepo --update /hdapp/aliyun/CentOS/7/64bit/epel
      createrepo --update /hdapp/aliyun/CentOS/7/64bit/extras
      createrepo --update /hdapp/aliyun/CentOS/7/64bit/updates
    echo "SUCESS: $DATETIME aliyum_yum update successful" >>/var/log/aliyunyumrepo_$DATETIME.log
  else
    echo "ERROR: $DATETIME aliyum_yum update failed" >> /var/log/aliyunyumrepo_$DATETIME.log
fi

每周日的3点同步:

crontab -e
0 3 * * 7 /bin/sh  /hdapp/yum_update.sh

9.客户端连接YUM仓库

上面看到从阿里云同步5个文件夹,可以在/etc/yum.repos.d/下新建5个同名文件,这里从原repo直接复制,修改里面内容就好了
CentOS7制作本地局域网yum源_第11张图片
CentOS7制作本地局域网yum源_第12张图片

yum clear all
yum makecache
yum repolist

CentOS7制作本地局域网yum源_第13张图片
测试安装软件包,完成
谢谢

你可能感兴趣的:(虚拟机,Linux,服务器,linux,centos)