本地yum仓库搭建
# 本地仓库介绍
本地仓库一般只在服务器较多时搭建,个人直接通过网络仓库安装软件即可,服务器规模较多时部署本地仓库有以下好处:
- 节省流量,避免从公网重复下载软件包。
- 提升下载速度,仓库部署在本地,服务器就可以通过内网快速下载软件包。
- 方便统一管理软件版本。
- 避免访问外网,在公司服务器不允许访问外网时,可以通过本地仓库安装软件。
# 本地仓库部署流程
本地仓库的部署可以分为以下几个流程:
- 配置好网络源以及其他需要的软件源。
- 安装仓库同步工具(reposync)与仓库管理工具(createrepo)。
- 同步远程仓库到本地,并创建索引。可以将该操作写为脚本作为定时任务执行,定时更新本地仓库的rpm包。
- 部署Http服务以便其他主机访问仓库,例如:httpd、nginx等。
- 配置Http服务的配置文件指向本地rpm包存放位置。
- 编写本地仓库配置文件。
- 将创建的配置文件复制到其他主机上,并在其他主机上重新建立缓存即可。
# 本地仓库部署实践
- 配置网络源。
# 备份默认配置
cp /etc/yum.repos.d/CentOS-Base.repo{,.bak}
# 下载阿里云CentOS7镜像源+EPEL镜像源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 下载Docker源
wget -P/etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 刷新缓存
yum clean all
yum makecache
# 检查仓库列表
yum repolist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 安装仓库同步工具(reposync)与仓库管理工具(createrepo)。
# 安装yum-utils、createrepo软件包
yum install -y yum-utils createrepo
1
2
2
- 同步网络仓库的rpm包到本地,并创建索引。
# 创建仓库目录
mkdir -p /data/yumrepo/
# 同步远程仓库到本地,-p指定下载路径 (需要更新仓库时再加上-n参数可以只同步最新的包,而不是整个存储库)
reposync -p /data/yumrepo/
# 创建各个源的索引,-o指定xml索引文件输出位置,-p会以整洁的格式输出xml索引文件
# 可以一条一条执行,也可以通过命令批量执行:
# ls /data/yumrepo/ | xargs -i createrepo -po /data/yumrepo/{} /data/yumrepo/{}
createrepo -po /data/yumrepo/base/ /data/yumrepo/base/
createrepo -po /data/yumrepo/docker-ce-stable/ /data/yumrepo/docker-ce-stable/
createrepo -po /data/yumrepo/epel/ /data/yumrepo/epel/
createrepo -po /data/yumrepo/extras/ /data/yumrepo/extras/
createrepo -po /data/yumrepo/updates/ /data/yumrepo/updates/
# 如果以后本地仓库使用reposync命令更新rpm包,则可以使用createrepo --update命令更新索引:
# ls /data/yumrepo/ | xargs -i createrepo --update /data/yumrepo/{} /data/yumrepo/{}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 部署Nginx服务(参考:https://blog.lalafell.cn/ops/nginx/002/#nginx%E9%83%A8%E7%BD%B2)。
- 配置Nginx指向本地rpm包存放位置,然后用浏览器测试下能否正常访问即可。
server {
listen 80;
server_name localhost;
location / {
root /data/yumrepo/;
autoindex on;
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 编写本地仓库配置文件,并将创建的配置文件复制到其他主机上。
# 生成配置文件
ls /data/yumrepo/ | xargs -i echo -e "[{}]\nname={}\nbaseurl=http://192.168.10.100/{}\nenabled=1\ngpgcheck=0\n" > /data/CentOS-Local.repo
# 传输文件
scp /data/CentOS-Local.repo root@192.168.10.101:/root/
1
2
3
4
5
2
3
4
5
- 其他主机上移动到配置目录并重新建立缓存即可。
# 其他主机执行备份原仓库配置文件并删除
tar -czvf /etc/yum.repos.d/repos.tar.gz /etc/yum.repos.d/*
rm -rf /etc/yum.repos.d/CentOS-*
# 其他主机执行移动本地仓库配置文件到配置目录中
mv /root/CentOS-Local.repo /etc/yum.repos.d/
# 刷新缓存
yum clean all
yum makecache
# 检查仓库列表
yum repolist
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- 自此,仓库已成。
# YUM配置文件详解
# 源标识,用于区别各个不同的仓库,必填且唯一,不然可能覆盖。
[docker-ce-stable]
# 源名称,可以不填,但是会有提示。
# $basearch变量表示架构名称,也就是arch命令的执行结果。
# $releasever变量表示系统名称,由/etc/yum.conf中的distroverpkg参数决定。
name=Docker CE Stable - $basearch
# 仓库地址,必填,可以指定多个,用换行分隔,url支持http、ftp、file三种协议。
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
# 是否启用该源,1为启用(默认),0为关闭。
enabled=1
# 是否启用校验,1为启用(默认),0为关闭。
gpgcheck=1
# 校验公钥,如果开启gpgcheck校验,则需要指定RPM公钥,会安装到RPM中。
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14