搭建自己的yum源服务器
一、生产需求
生产服务器一般都上百台,而且可能大部分不能访问外网,部署一台自己内部使用的YUM源服务器,给其它服务器提供软件的安装是非常有必要的。
要远程提供YUM源服务,可以使用HTTP、NFS等服务来提供。这里我使用HTTP来提供远程YUM源服务。
二、安装Apache/Nginx提供web服务
这里通过安装Apache来提供HTTP服务,Apache是系统自带的软件,安装非常方便。
2.1 安装Apache
#yum -y install httpd http-devel
启动服务:
Centos6/RHEL6:
#service httpd start
#checkconfig httpd on
Centos7/RHEL7:
# systemctl start httpd
# systemctl enable httpd
2.2 设置Apache
在Apache的配置文件httpd.conf文件中的
这里别名yum设置指向目录/data/yum(可自己自定义设置),这个目录用来存放相关YUM源相关文件。
# vim /etc/httpd/conf/httpd.conf
<IfModule alias_module>
Alias /yum <span data-raw-text-1688472508642="" "="" data-textnode-index-1688472508642="308" data-index-1688472508642="657" data-index-len-1688472508642="657" class="character">"/data/yum/<span data-raw-text-1688472508642="" "="" data-textnode-index-1688472508642="308" data-index-1688472508642="668" data-index-len-1688472508642="668" class="character">"
<Directory <span data-raw-text-1688472508642="" "="" data-textnode-index-1688472508642="310" data-index-1688472508642="683" data-index-len-1688472508642="683" class="character">"/data/yum<span data-raw-text-1688472508642="" "="" data-textnode-index-1688472508642="310" data-index-1688472508642="693" data-index-len-1688472508642="693" class="character">">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</IfModule>
/data/yum目录下的文件目录结构:
说明文件.txt #可以放一个说明文档,让访问YUM源的人可以看到
http.repo #提供下载的配置文件。各服务器可以下载过去使用
yumdata #存放各操作系统安装iso文件中解压出来的文件或者从第三方网站下载的系统文件(主要目录)
根据自己的实际情况,可以修改目录名和路径等,只要在httpd.repo文件中指定的位置跟这里名称相符即可。
三、repo文件中的变量
在YUM源配置文件repo中,是支持使用变量的,常用的几个变量:$releasever:系统版本号(大版本号),如CentOS7.2,变量显示为7Server$arch:CPU类型,变量值有”i386″, “i486″,”i586”, “alpha”, “sparc”, “arm”, “m68k”,”mips”,”ppc”,”ia64″,”x86_64″等$basearch:硬件架构,变量值有”i386″, “x86_64”
除了有这些默认变量外,我们还可以自定义变量。在/etc/yum/vars/目录下创建文件,文件名就是变量名,而文件里面的内容就是变量的值。如创建一个名称为osname的文件,然后在里面写入内容
# cd /etc/yum/vars
# echo “OracleLinux6.8” > osname
设置完成后,在repo文件中就可以使用$osname作为变量,获取的值是OracleLinux6.8。变量的设置对于后面配置YUM源文件repo很有用处。
四、YUM源文件来源
获取软件来源主要有两种:
4.1 操作系统iso文件
把操作系统的安装iso文件mount起来,然后把里面的文件复制到/data/yum/yumdata相对应系统目录下即可。
#cd yumdata
#ls
OracleLinux6.8 CentOS6.5 RHEL7.2
不过iso中的软件一般可能比较老,而且可能有一些特定的软件是没有的,所以还需要其它的方式来满足需求。
4.2 同步外网的YUM源服务器
把一些企业或组织提供的外网YUM源文件定期同步到自己的YUm源服务器上来。
这里提供三种把外网yum源同步到本地来的方法:
wget方法:
这里以同步oracle linux 5.8yum源为例:
wget -e robots=off -c -t 5 -q -r -np -pk -nc -nH -nd --accept=rpm http://public-yum.oracle.com/repo/OracleLinux/OL5/8/base/x86_64/index.html
#下载http://public-yum.oracle.com/repo/OracleLinux/OL5/8/base/x86_64/index.html页面上的rpm后缀的文件,就是把软件文件下载下来
wget -e robots=off -c -t 5 -q -r -np -pk -nc -nH -nd --reject=html http://public-yum.oracle.com/repo/OracleLinux/OL5/8/base/x86_64/repodata/
#下载http://public-yum.oracle.com/repo/OracleLinux/OL5/8/base/x86_64/repodata/中的所有文件,不下载以html后缀的文件,下载一些数据文件
reposync方法:这种是根据本地的/etc/yum.repos.d/中repo文件中的配置,来下载远程yum源的文件到本地来。可以直接执行命令
# reposync #根据repo配置中的地址下载文件到当前目录下
可以指定下载repo中哪个源,再指定下载到哪个目录下
# reposync --repoid=ol6_UEK_latest --repoid=ol6_latest -p /repos/x86_64
-repoid 指定要下载的yum源,默认会全部下载
-p 下载到目录
rsync方法:这种需要网站支持rsync才行
# rsync -avrt --delete --no-iconv --bwlimit=1000 rsync://mirrors.yun-idc.com/epel/5/ /data
#把mirrors.yun-idc.com/epel/5/上的软件同步到本地
可根据实际情况自行选择同步方式。
五、配置repo文件
为了方便使用,我们可以通过使用变量,使所有服务器通用一个repo文件。
提供两种方式供参考:一种是可以在repo中使用自定义的变量名一种是使用yum-config-manager命令禁用不使用的YUM源也可以两种方法同时使用。
5.1 在repo中使用自定义的变量名我们可以在repo文件中,把存放iso的目录名设置成变量,然后系统会根据变量获取到不同的值,从而使用不同的YUM源来进行安装软件。
如我们在每个系统中的/etc/yum/vars中设置osname,在文件中设置好系统版本。然后在repo文件中使用osname变量就能指向相对应的操作系统文件:
[ol_base]
name=Oracle Linux $osname ($basearch)
baseurl=http://IP/yum/yumdata/$osname/
enabled=1
gpgcheck=0
keepcache = 0
在每个系统上,我们在osname文件中填入不同的值,当要安装软件时,系统即会根据osname变量名去连接不同的YUM源。
当然,还可以使用其它变量,因为这个自定义变量的方式并不是每个发行版本都支持的。
5.2 使用yum-config-manager命令禁用YUM源我们可以把所有在用的系统的YUM源都写进一个repo文件中,然后禁用所有的YUM源,默认只开启符合当前系统版本的YUM源即可。
# yum-config-manager –save –disable \*
# yum-config-manager –enable ol_u8_base
这两种方法各有优缺点,可根据自己的实际情况来制作repo文件。
六、客户端设置
在各服务器的系统上,可以用浏览器访问YUM源服务器http://IP/yum下载http.repo文件到当前系统的YUM配置目录下,或者使用wget命令来下载
不同系统的YUM配置目录:
RedHat的目录是:/etc/yum.repos.d
SUSE的目录是: /etc/zypp/repos.d/
浙公网安备 33010602011771号