一、导言

YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。

相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在Internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。

二、搭建流程

1、准备一台服务器做yum仓

主机IP:10.0.0.71

操作系统:centos 6.9_x_86_64

2、创建yum仓目录

mkdir -p /yum/centos6./x86_64/
cd /yum/centos6.9/x86_64/

3、安装createrepo软件

yum -y install createrepo

4、初始化repodata索引文件

createrepo -pdo /yum/centos6.9/x86_64/ /yum/centos6.9/x86_64/

5、提供yum服务

可以使用web服务软件Apache或nginx提供web服务,但用Python的http模块更简答,使用于内网环境

cd /yum/centos6./x86_64
python -m SimpleHTTPServer &>/dev/null &

查看方法:通过浏览器输入yum仓服务器的IP(10.0.0.71)即可查看

5、添加新的rpm包

yumdownloader pcre-devel openssl-devel     # 只下载软件不安装
createrepo --update /application/yum/centos6./x86_64/ # 每加入新的rpm包就要更新一下 注:收集rpm包
平时yum安装软件时不删除安装包

vim /etc/yum.conf

[main]
cachedir=/var/cache/yum/$basearch/$releasever     #安装包存储目录
keepcache=1        #安装不删除,0为删除  1为保存
debuglevel=2
logfile=/var/log/yum.log

三、安装apache软件提供yum服务

1、安装apache服务

yum install -y httpd
/etc/init.d/http start #检查服务器是否正常启动
netstart -lntup | grep httpd

2、解析绑定域名

#centos系统操作
echo “10.0.0.71 yum.zhang.com” >>/etc/hosts #windows操作
在hosts文件中添加
10.0.0.71 yum.zhang.com

3、访问网站

在浏览器中输入:yum.zhang.com

4、修改apache配置文件提供yum仓下载服务

修改配置文件/etc/httpd/conf/httpd.conf,将默认的www目录指向本地创建的yum仓库目录

#给apache授权
chown -R apache.apache /yum/ #修改配置文件制定yum仓目录
sed -i.bak 's#DocumentRoot "/var/www/html"#DocumentRoot "/yum"#g;s#<Directory "/var/www/html">#<Directory "/yum">#g' /etc/httpd/conf/httpd.conf mv /etc/httpd/conf/conf.d/welcome.conf /tmp #删除默认主页
/etc/init.d/httpd restart

5、在浏览器输入yum.zhang.com测试访问

四、配置客户端

示例1:centos 6.x系统yum源配置

cd /etc/yum.repos.d/

vim localyum.repo

[root@yum yum.repos.d]# vi localyum.repo
[localyum]
name=centos6
baseurl=http://yum.zhang.com/centos/6/os/x86_64/
enable=
gpgcheck= [localepel]
name=epel
baseurl=http://yum.zhang.com/epel/6/x86_64/
enable=
gpgcheck= [localextra]
name=extra
baseurl=http://yum.zhang.com/centos/6/extras/x86_64/
enable=
gpgcheck=

示例2:centos7系统yum源配置方法

 [root@yum yum.repos.d]# vi localyum.repo
[localyum]
name=centos7
baseurl=http://yum.zhang.com/centos/7/os/x86_64/
enable=
gpgcheck= [localepel]
name=epel
baseurl=http://yum.zhang.com/epel/7/x86_64/
enable=
gpgcheck= [localextra]
name=extra
baseurl=http://yum.zhang.com/centos/7/extras/x86_64/
enable=
gpgcheck=

临时使用自建的yun仓,服务器重启后失效

yum --enablerepo=localyum --disablerepo=base,extras,updates,epel list 

永久使用自建的yum仓,需修改配置文件

vim /etc/yum.repos.d/CentOS-Base.repo
# 在每一个启动的源加上
# enabled= #改为1就启用,没有此参数也是启用。 [base]
…………
enabled=
[updates]
…………
enabled=
[extras]
…………
enabled=0
#其他开启的仓库也是使用此办法关闭

或使用下面方法,把/etc/yum.repos.d/下面的repo结尾文件,全部移到其他目录中去

mkdir /home/yum_backup

cd /etc/yum.repos.d

mv * /home/yum_backup

五、同步公网镜像

1、企业需求搭建yum仓,有以下几个方面:

a、在企业实际使用中,如果所有的机器都使用yum安装,会消耗大量的公网流量,增加成本;也能保证内网服务器安全。

b、在使用相关软件如PHP、saltstack等,需要从国外的镜像源下载,速度较慢,影响效率。

c、添加定制的rpm到自建yum仓,能更方便的使用

2、镜像同步公网yum源

上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。
http://mirrors.ustc.edu.cn/status/
CentOS官方标准源:rsync://mirrors.ustc.edu.cn/centos/
epel源:rsync://mirrors.ustc.edu.cn/epel/

同步命令:

# 使用rsync同步yum源,为了节省带宽、磁盘和下载时间,只同步了CentOS6的rpm包,这样所有的rpm包只占用了21G,全部同步需要300G左右。
# 同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概3G,这些就不用重新下载。

创建四个目录,用于同步公网yum源

mkdir -p /yum/centos//os/x86_64/
mkdir -p /yum/centos//extras/x86_64/
mkdir -p /yum/centos//updates/x86_64/
mkdir -p /yum/epel//x86_64/

执行以下命令,同时复制执行(或写入脚本),就会同步官网yum源到本地

/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /yum/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /yum/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /yum/centos/6/updates/x86_64/
/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /yum/epel/6/x86_64/

查看同步完成后yum源的大小相关操作:

#查看同属数据大小
du -sh /yum/
#查看目录结构
LANG=en
tree -L /yum/

六、常见故障及处理方法

故障1:

Error:
@ERROR: max connections () reached -- try again later
rsync error: error starting client-server protocol (code ) at main.c() [receiver=3.0.] 解决方法:
yum源服务器超过最大连接数,等待一会再进行测试(多尝试几次,即可成功,上述同步的yum源默认链接数40多个)。

故障2:

Error:
# rsync: getaddrinfo: mirrors.ustc.edu.cn : Name or service not known 解决方法:
DNS无法解析,更换一个DNS再进行测试 常使用的DNS:
114.114.114.114
114.114.115.115
223.5.5.5
223.6.6.6
112.124.47.27
114.215.126.16
8.8.8.8

七、拓展

zabbix源同步:

/usr/bin/rsync -av rsync:http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/  /yum/zabbix/3.0/rhel/6/x86_64/

PHP源同步:

/usr/bin/rsync -av http://repo.webtatic.com/yum/el6/x86_64/ /yum/el6/x86_64/

自动化部署之搭建yum仓的更多相关文章

  1. Windows版Jenkins+SVN+Maven自动化部署环境搭建【转】

    前言 因今年公司新产品线较多,为了降低耦合,达到业务分离.重用,提高内部开发效率的目的,采用了基于服务组件.前后端分离的架构体系.与之前传统单应用架构相比,系统部署.配置更加复杂,为了能够频繁地将软件 ...

  2. 自动化部署必备技能—部署yum仓库、定制rpm包

    部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...

  3. Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  4. 搭建jenkins实现自动化部署

    搭建jenkins实现自动化部署 一.安装jenkins 1.添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo https://p ...

  5. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)【转】

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  6. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  7. 从零搭建docker+jenkins 自动化部署环境

    从零搭建docker+jenkins+node.js自动化部署环境 本次案例基于CentOS 7系统 适合有一定docker使用经验的人阅读 适合有一定linux命令使用经验的人阅读 1.docker ...

  8. 基于 Node.js 的服务器自动化部署搭建实录

    基于 Node.js 的服务器自动化部署搭建实录 在服务器上安装 Node.js 编写拉取仓库.重启服务器脚本 配置 Github 仓库的 Webhook 设置 配置 Node.js 脚本 其他问题 ...

  9. jenkins+git+maven搭建自动化部署项目环境

    简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...

随机推荐

  1. Linux服务-openssh

    目录 1. 使用 SSH 访问远程命令行 1.1 OpenSSH 简介 1.2 SSH 版本 1.3 SSH 认证方式 1.4 openSSH 的工作模式 1.5 Secure Shell 示例 1. ...

  2. 20155331 丹增旦达 网络攻防 Exp2后门原理与实践

    20155331 丹增旦达<网络攻防>Exp2后门原理与实践 实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任务计划启 ...

  3. Android开发——Android中的二维码生成与扫描

    0. 前言 今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描.本篇旨在帮助有需求的同学快速完成二维 ...

  4. mfc Radio Buttons

    添加单选按钮 关联变量 调试宏TRACE BOOL类型 一.添加一组单选按钮 二.添加第二组单选按钮 三.关联变量 四.单选按钮运用 void CMY_Dialog::OnBnClickedButto ...

  5. MVC的多页面后台管理系统

    MVC的多页面后台管理系统 同样功能的后台管理系统,也是可以使用 ASP.NET MVC .Web API 和JQuery 来制作. 所有的功能都与Angular js的单页面相同.应用层所有的方法都 ...

  6. 前端项目模块化的实践1:搭建 NPM 私有仓库管理源码及依赖

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

  7. 【转载】python %s %d %f

    %s 字符串 string="hello" #%s打印时结果是hello print "string=%s" % string      # output: s ...

  8. 一张图理解Git

    更详细的git介绍:Git操作指南

  9. Notes of Daily Scrum Meeting(12.16)

    最近好几门课的大作业都到了要截止的时候了,好多天队员们都抽不出来时间做软工的项目了,这样确实 和我们的计划出入很大,不过希望老师谅解,三门课程设计确实压力很大. 今天的团队任务总结如下: 团队成员 今 ...

  10. wordpress学习三:wordpress自带的模板学习

    在<学习二>里,大概说了下怎么去查找模板,本节我们以一个简单的模板为例子,继续说说wordpress的模板机制,看看做一个自己的模板需要哪些知识点. 页面模板渲染 wordpress的模板 ...