系统环境:
[root@localhost ~]cat /etc/redhat-release #系统版本
CentOS Linux release 7.6.1804 (Core)
[root@localhost ~]uname –r #内核版本
3.10.0-758.el7.x86_64
[root@localhost ~] uname -m #系统架构
x86_64
[root@localhost ~]echo $LANG #系统字符集
en_US.UTF-8
实验环境:
Yum源仓库服务器IP地址 192.168.11.41 CentOS 7.6
Yum源测试客户端IP地址 192.168.11.40 CentOS 7.6
说明:
搭建内部yum源仓库有许多种类,例如file、ftp、http、https,本教程以http进行搭建内部yum源仓库
一、添加阿里云yum源并检查
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
yum repolist
二、安装相关软件
yum install -y wget make cmake gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel httpd yum-utils createrepo
备注:
yum-utils:reposync同步工具
createrepo:编辑yum库工具
httpd:通过Apache软件提供web服务,也可以使用nginx
三、同步阿里云yum源软件包到本地服务器指定目录/data(自定义目录)
mkdir -p /data
chown -R apache:apache /data
chmod -R 755 /data
###参数-n指下载最新软件包,-p指定目录,指定本地的源--repoid(如果不指定就同步本地服务器所有的源),下载过程比较久
reposync -n --repoid=extras --repoid=updates --repoid=base --repoid=epel -p /data
[root@localhost ~]# du -sh /data/*
9.0G /data/base
16G /data/epel
321M /data/extras
2.2G /data/updates
四、创建仓库索引
createrepo -po /data/base/ /data/base/
createrepo -po /data/extras/ /data/extras/
createrepo -po /data/updates/ /data/updates/
createrepo -po /data/epel/ /data/epel/
问题:如果创建仓库索引提示如下错误
Worker 0: Error: Could not open local rpm file: /data/epel//Packages/p/python2-pycryptodomex-3.9.7-1.el7.x86_64.rpm: RPM Error opening Package
解决办法:提示哪个软件包打开错误就删除哪个软件包
rm -rf /data/epel//Packages/p/python2-pycryptodomex-3.9.7-1.el7.x86_64.rpm
五、更新数据源
createrepo --update /data/base/
createrepo --update /data/extras/
createrepo --update /data/updates/
createrepo --update /data/epel/
六、启动并配置Apache服务
systemctl start httpd
systemctl enable httpd
systemctl status httpd
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/data/"
<Directory "/data/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
###修改Apache默认首页index.html,直接复制粘贴执行
cat << EOF > /usr/share/httpd/noindex/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CentOS 7 镜像</title>
<script>document.createElement("mySite")</script>
<style>
mySite {
display: block;
background-color: #ddd;
padding: 10px;
font-size: 20px;
}
</style>
</head>
<body>
<h1>简介</h1>
<hr>
<p>CentOS,是基于 Red Hat Linux 提供的可自由使用源代码的企业级 Linux 发行版本,是一个稳定,可预测,可管理和可复制的免费企业级计算平台。</p>
<hr>
<br>
<br>
<h1>CentOS 7 配置内部YUM源</h1>
<br>
<h2>1、备份</h2>
<mySite>mkdir /etc/yum.repos.d/bak</mySite>
<mySite>mv /etc/yum.repos.d/* /etc/yum.repos.d/bak</mySite>
<br>
<h2>2、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ </h2>
<mySite>curl -o /etc/yum.repos.d/CentOS-Base.repo http://192.168.11.41/repo/CentOS-Base.repo</Site>
<br>
<h2>3、运行 yum makecache 生成缓存</h2>
<br>
<h2>4、运行 yum repolist 查看已经生成缓存</h2>
<br>
<br>
</body>
</html>
EOF
七、编写yum源客户端配置文件
[root@localhost ~]# mkdir -p /data/repo/
###直接复制粘贴执行
cat << EOF > /data/repo/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base - 192.168.11.41
failovermethod=priority
baseurl=http://192.168.11.41/base/
enable=1
gpgcheck=0
#released updates
[updates]
name=CentOS-$releasever - Updates - 192.168.11.41
failovermethod=priority
baseurl=http://192.168.11.41/updates/
enable=1
gpgcheck=0
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 192.168.11.41
failovermethod=priority
baseurl=http://192.168.11.41/extras/
enable=1
gpgcheck=0
#additional packages that may be useful
[epel]
name=CentOS-$releasever - Epel - 192.168.11.41
failovermethod=priority
baseurl=http://192.168.11.41/epel/
enable=1
gpgcheck=0
EOF
八、客户端配置Yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://192.168.11.41/repo/CentOS-Base.repo
yum makecache
客户端浏览网页http://192.168.11.41首页提示如何配置。