搭建自己的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,不管你把文件放在哪里,都可以通过别名http://ip/yum来进行访问。

这里别名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命令来下载

wget http://IP/yum/http.repo

不同系统的YUM配置目录:

RedHat的目录是:/etc/yum.repos.d

SUSE的目录是: /etc/zypp/repos.d/

posted @ 2023-07-26 21:23  寻梦99  阅读(217)  评论(0)    收藏  举报