搭建一个基于http的yum服务器
基于http的yum服务器
在集群中搭建一个基于HTTP的yum服务器,不仅安装速度变快了许多,还能扩展自己定制的rpm包放入yum服务器中,其他服务器只需要正常使用yum install即可批量安装统一经过定制的rpm包。这篇文章对习惯使用yum的人来说,以后对很多机器需要进行安装软件很方便
先安装一个web软件,apache或nginx都可以,我使用的是nginx
nginx编译安装文档 :
http://www.cnblogs.com/czlun/articles/7119297.html
扩展(可选):
nginx开启文件目录列表显示功能 :
http://www.cnblogs.com/czlun/articles/7698504.html
开始搭建yum源服务器
第一步 创建目录
在web根目录下创建centosplus、extras、updates、os四个目录
mkdir -p /data/wwwroot/yum-server
#虚拟主机的路径需要设置为该路径
cd /data/wwwroot/yum-server
mkdir centosplus extras updates os
#这四个目录用来区分类型
for DIR in $(ls); do cd $DIR; mkdir Packages; cd ..; done
#分别在四个目录下创建存储rpm包的目录
第二步 获取rpm包
现在我们要获取yum服务向外提供的rpm包
方法一 下载iso,并从iso镜像里拷贝(推荐)
wget http://mirror.nsc.liu.se/centos-store/7.2.1511/isos/x86_64/CentOS-7-x86_64-Everything-1511.iso
mount CentOS-7-x86_64-Everything-1511.iso /mnt
cp /mnt/Packages/* /data/wwwroot/yum-server/os/Packages/
方法二 利用rsync同步至本地(不推荐)
rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/ /data/wwwroot/yum-server/os/Packages/
rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/extras/x86_64/Packages/ /data/wwwroot/yum-server/extras/Packages/
rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/updates/x86_64/Packages/ /data/wwwroot/yum-server/updates/Packages/
rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/centosplus/x86_64/Packages/ /data/wwwroot/yum-server/centosplus/Packages/
该方法不推荐的原因很简单,慢。
第三步 创建仓库
对三个目录使用createrepo创建仓库(生成repodata目录)
yum install -y createrepo
createrepo -o /data/wwwroot/yum-server/os /data/wwwroot/yum-server/os/Packages/
createrepo -o /data/wwwroot/yum-server/extras /data/wwwroot/yum-server/extras/Packages/
createrepo -o /data/wwwroot/yum-server/updates /data/wwwroot/yum-server/updates/Packages/
createrepo -o /data/wwwroot/yum-server/centosplus /data/wwwroot/yum-server/centosplus/Packages/
#-o 指定repodata生成的目录
此时yum服务器已经搭建完成
客户端配置
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
> /etc/yum.repos.d/CentOS-Base.repo
cat >> /etc/yum.repos.d/CentOS-Base.repo << eof
[base]
name=CentOS-$releasever - Base
baseurl=http://192.168.127.200/os/
enabled=1
gpgcheck=0
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://192.168.127.200/updates/
enabled=1
gpgcheck=0
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://192.168.127.200/extras/
enabled=1
gpgcheck=0
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://192.168.127.200/centosplus/
enabled=1
gpgcheck=0
eof
yum clean all
yum makecache
#当yum服务器内容修改了之后或者修改了yum源文件,客户机需要重新建立缓存
#baseurl指向仓库(repodata)所在的目录
若是要保持本地yum源于网络yum源同步,则可以将
rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/ /data/wwwroot/yum-server/os/Packages/
rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/extras/x86_64/Packages/ /data/wwwroot/yum-server/extras/Packages/
rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/updates/x86_64/Packages/ /data/wwwroot/yum-server/updates/Packages/
rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/centosplus/x86_64/Packages/ /data/wwwroot/yum-server/centosplus/Packages/
加入定时任务。
镜像站点与本地路径对应的目录:
在http://mirrors.ustc.edu.cn/centos/7/的基础上
os/x86_64/Packages/ 对应 /data/wwwroot/yum-server/os/Packages/
updates/x86_64/Packages/ 对应 /data/wwwroot/yum-server/updates/Packages/
extras/x86_64/Packages/ 对应 /data/wwwroot/yum-server/extras/Packages/
centosplus/x86_64/Packages/ 对应 /data/wwwroot/yum-server/centosplus/Packages/
当yum服务器内容修改了之后,需要更新仓库
createrepo --update /data/wwwroot/yum-server/os
createrepo --update /data/wwwroot/yum-server/centosplus
createrepo --update /data/wwwroot/yum-server/extras
createrepo --update /data/wwwroot/yum-server/updates
更新了仓库,客户机也需要重新建立缓存
yum clean all
yum makecache
到这里,我们的yum服务器及客户机的配置都已经完成了。