1. 程式人生 > >001.YUM源服務端搭建

001.YUM源服務端搭建

一 前期準備

1.1 地址規劃

主機名 IP地址 備註
mirrors 172.24.8.71/24 yum伺服器,與網際網路同步
client 172.24.8.72/24 內部客戶端
1.2 架構示意圖

01

建議關閉防火牆及SELinux。

二 部署步驟

2.1 建立相應目錄

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

提示:參考現有repo檔案,建立yum伺服器用於儲存rpm檔案的目錄。

2.2 安裝httpd元件

  1 [[email protected] ~]# yum -y install httpd http-devel

2.3 配置虛擬主機

  1 [[email protected] ~]# cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/mirrors-vhost.conf

  1 [[email protected] ~]# 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 [[email protected] ~]# systemctl start httpd
  2 [[email protected] ~]# systemctl enable httpd

2.5 同步rpm包

  1 [[email protected] ~]# yum -y install rsync			#安裝同步rsync軟體
  2 [[email protected] ~]# rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/ \ /rpm/centos/7/os/x86_64/Packages
  3 [[email protected] ~]# rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/extras/x86_64/Packages/ \
  4 /rpm/centos/7/extras/x86_64/Packages
  5 [[email protected] ~]# rsync -avz --delete rsync://mirrors.ustc.edu.cn/centos/7/updates/x86_64/Packages/ \
  6 /rpm/centos/7/updates/x86_64/Packages
  7 [[email protected] ~]# 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 [[email protected] ~]# wget -P /rpm/centos/ http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-7

三 建立倉庫

3.1 安裝建立倉庫所需包

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

3.2 建立倉庫

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

四 驗證確認

4.1 客戶端配置

  1 [[email protected] ~]# vi /etc/hosts
  2 172.24.8.71 mirrors.example.com

提示:本環境方便測試,將伺服器地址新增至hosts,生產環境在有DNS情況下可跳過。

  1 [[email protected] ~]# 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 [[email protected] ~]# yum clean all
 28 [[email protected] ~]# yum repolist
  1 [[email protected] ~]# yum clean all
  2 [[email protected] ~]# yum repolist


02

五 優化配置

5.1 定時同步

若需要定時同步網際網路最新yum源,可將同步任務新增至contab定時任務。

同步更新之後,需要更新倉庫:

  1 [[email protected] ~]# createrepo --update /rpm/centos/7/os/x86_64
  2 [[email protected] ~]# createrepo --update /rpm/centos/7/extras/x86_64
  3 [[email protected] ~]# createrepo --update /rpm/centos/7/updates/x86_64
  4 [[email protected] ~]# 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
 14 #不在本地增加名為遠端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
 21 #直下載最新的package, 一個包有多個版本在一個倉庫中, 可以只選擇下載最新的packages
 22 -q, --quiet				#最簡輸出.