001.YUM源服务端搭建

一 前期准备

1.1 地址规划

主机名

IP地址

备注

mirrors

172.24.8.71/24

yum服务器,与互联网同步

client

172.24.8.72/24

内部客户端

1.2 架构示意图

建议关闭防火墙及SELinux。

二 部署步骤

2.1 创建相应目录

  1 [root@mirrors ~]# mkdir -p /rpm/centos/7/os/x86_64/Packages
  2 [root@mirrors ~]# mkdir -p /rpm/centos/7/updates/x86_64/Packages
  3 [root@mirrors ~]# mkdir -p /rpm/centos/7/extras/x86_64/Packages
  4 [root@mirrors ~]# mkdir -p /rpm/centos/7/centosplus/x86_64/Packages

提示:参考现有repo文件,创建yum服务器用于保存rpm文件的目录。

2.2 安装httpd组件

  1 [root@mirrors ~]# yum -y install httpd http-devel

2.3 配置虚拟主机

  1 [root@mirrors ~]# cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/mirrors-vhost.conf
  1 [root@mirrors ~]# vi /etc/httpd/conf.d/mirrors-vhost.conf
  2 <VirtualHost *:80>
  3 ServerAdmin mirrors-server
  4     DocumentRoot "/rpm"
  5     ServerName mirrors.example.com
  6     ServerAlias www.mirrors.example.com
  7     ErrorLog "/var/log/httpd/mirrors.example.com-error_log"
  8     CustomLog "/var/log/httpd/mirrors.example.com-access_log" common
  9         <Directory /rpm>
 10                 Options Indexes FollowSymLinks
 11                 AllowOverride All
 12                 Require all granted
 13         </Directory>
 14 </VirtualHost>

2.4 启动服务

  1 [root@mirrors ~]# systemctl start httpd
  2 [root@mirrors ~]# systemctl enable httpd

2.5 同步rpm包

  1 [root@mirrors ~]# yum -y install rsync			#安装同步rsync软件
  2 [root@mirrors ~]# rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/ \ /rpm/centos/7/os/x86_64/Packages
  3 [root@mirrors ~]# rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/extras/x86_64/Packages/ \
  4 /rpm/centos/7/extras/x86_64/Packages
  5 [root@mirrors ~]# rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/updates/x86_64/Packages/ \
  6 /rpm/centos/7/updates/x86_64/Packages
  7 [root@mirrors ~]# rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/centosplus/x86_64/Packages/ \
  8 /rpm/centos/7/centosplus/x86_64/Packages

提示:rsync更多使用方式见《001.Rsync备份》。

2.6 同步GPG文件

  1 [root@mirrors ~]# wget -P /rpm/centos/ http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-7

三 创建仓库

3.1 安装创建仓库所需包

  1 [root@mirrors ~]# wget -P /rpm/centos/ http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-7

3.2 创建仓库

  1 [root@mirrors ~]# createrepo -o /rpm/centos/7/os/x86_64 \
  2 /rpm/centos/7/os/x86_64/Packages/
  3 [root@mirrors ~]# createrepo -o /rpm/centos/7/extras/x86_64 \
  4 /rpm/centos/7/extras/x86_64/Packages/
  5 [root@mirrors ~]# createrepo -o /rpm/centos/7/updates/x86_64 \
  6 /rpm/centos/7/updates/x86_64/Packages/
  7 [root@mirrors ~]# createrepo -o /rpm/centos/7/centosplus/x86_64 \
  8 /rpm/centos/7/centosplus/x86_64/Packages/

四 验证确认

4.1 客户端配置

  1 [root@client ~]# vi /etc/hosts
  2 172.24.8.71 mirrors.example.com

提示:本环境方便测试,将服务器地址添加至hosts,生产环境在有DNS情况下可跳过。

  1 [root@client ~]# vi /etc/yum.repos.d/CentOS-Base.repo		#修改yum配置文件
  2 [base]
  3 name=CentOS-$releasever - Base - example.com
  4 baseurl=http://mirrors.example.com/centos/$releasever/os/$basearch/
  5 gpgcheck=1
  6 gpgkey=http://mirrors.example.com/centos/RPM-GPG-KEY-CentOS-7
  7 
  8 [updates]
  9 name=CentOS-$releasever - Updates - example.com
 10 release=$releasever&arch=$basearch&repo=updates
 11 baseurl=http://mirrors.example.com/centos/$releasever/updates/$basearch/
 12 gpgcheck=1
 13 gpgkey=http://mirrors.example.com/centos/RPM-GPG-KEY-CentOS-7
 14 
 15 [extras]
 16 name=CentOS-$releasever - Extras - example.com
 17 baseurl=http://mirrors.example.com/centos/$releasever/extras/$basearch/
 18 gpgcheck=1
 19 gpgkey=http://mirrors.example.com/centos/RPM-GPG-KEY-CentOS-7
 20 
 21 [centosplus]
 22 name=CentOS-$releasever - Plus - example.com
 23 baseurl=http://mirrors.example.com/centos/$releasever/centosplus/$basearch/
 24 gpgcheck=1
 25 enabled=0
 26 gpgkey=http://mirrors.example.com/centos/RPM-GPG-KEY-CentOS-7
 27 [root@client ~]# yum clean all
 28 [root@client ~]# yum repolist
  1 [root@client ~]# yum clean all
  2 [root@client ~]# yum repolist

五 优化配置

5.1 定时同步

若需要定时同步互联网最新yum源,可将同步任务添加至contab定时任务。

同步更新之后,需要更新仓库:

  1 [root@mirrors ~]# createrepo --update /rpm/centos/7/os/x86_64
  2 [root@mirrors ~]# createrepo --update /rpm/centos/7/extras/x86_64
  3 [root@mirrors ~]# createrepo --update /rpm/centos/7/updates/x86_64
  4 [root@mirrors ~]# createrepo --update /rpm/centos/7/centosplus/x86_64

5.2 其他同步方式

由于rsync只能支持开启rsync协议的镜像,推荐USTC。可使用reposync同步其他站点,相关参考命令如下:

  1 reposync -r base -p /rpm/centos/7/os/x86_64/Packages/
  2 createrepo --update /rpm/centos/7/os/x86_64
  3 OPTIONS:
  4 -h, --help				#显示帮助
  5 -c CONFIG, --config=CONFIG		#默认配置文件为/etc/yum.conf
  6 -a ARCH, --arch=ARCH		#按照指定的arch执行, 默认是当前机器的arch
  7 --source				#也同步src.rpm包
  8 -r REPOID, --repoid=REPOID		#同步远程的repo ID. 默认是所有enable的repo
  9 -e CACHEDIR, --cachedir CACHEDIR	#执行存储metadata的目录
 10 -t, --tempcache			#使用一个临时目录存储yum-cache
 11 -d, --delete			#删除远程仓库不存在的本地包
 12 -p DESTDIR, --download_path=DESTDIR	#下载包的存储目录, 默认是当前目录
 13 --norepopath                        #不在本地增加名为远程repo ID的目录. 只download一个repo的时候使用. 默认是增加目录
 15 -g, --gpgcheck			#删除package如果GPGkey检查失败.
 16 提示:可以使用rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 或者yum install package 来避免
 17 -u, --urls				#只显示下载的url, 不下载
 18 -l, --plugins			#开启yum插件支持
 19 -m, --downloadcomps			#同时下载comps.xml.
 20 -n, --newest-only                   #直下载最新的package, 一个包有多个版本在一个仓库中, 可以只选择下载最新的packages
 22 -q, --quiet				#最简输出.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏相遇Linux

Linux sysfs文件系统实现之顺聊Linux文件系统实现

最近三天写了一个jefffs文件系统,是高仿sysfs文件系统实现的,所以想分享一下sysfs文件系统的实现过程,顺道分享一下我对文件系统的一点理解,...

14740
来自专栏呆呆熊的技术路

mysql 关于时间类型的刨坑之路

前两天有做一个基于binglog的数据库实时同步,一张老数据表里有DATETIME、TIMESTAMP不同的时间字段类型,看起来值都是一样的,并且默认值都设置的...

19330
来自专栏呆呆熊的技术路

TCP/IP网络编程-进程篇学习笔记

6510
来自专栏呆呆熊的技术路

又拍云tokers-谈谈 nginx 信号集

昨天下午的时候,一台引流测试机器的一个 ngx_lua 服务突然出现了一些 HTTP/500 响应,从错误日志打印的堆栈来看,是不久前新发布的版本里添加的一个 ...

8410
来自专栏Java架构沉思录

Nginx 架构初探

高度模块化的设计是 Nginx 的架构基础。Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的...

11420
来自专栏Java程序猿部落

面试官常问的Nginx的几个问题

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器

7110
来自专栏一个会写诗的程序员的博客

并行执行任务的ForkJoin框架简介

从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。

10720
来自专栏跟Qt君学编程

Qt加载库

10720
来自专栏呆呆熊的技术路

wokerman启动分析

根据上面存储的static::<pre>不能识别此Latex公式: _workers和static::</pre>_pidMap 循环fork进程

13420
来自专栏呆呆熊的技术路

关于php strotime("-1 month")的思考

额。。。这都是些什么鬼,如果当前月比上一个月多,在多余的日子里去取上个月同期,会有问题。

12620

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励