1. 程式人生 > >CentOS6.x rsync+httpd搭建配置本地YUM源庫

CentOS6.x rsync+httpd搭建配置本地YUM源庫

本地yum倉庫 本地repo倉庫 自動同步網上yum倉庫

一、環境說明

yum庫,是readhat/CentOS 系統軟件倉庫,可以通過http ftp協議傳輸存儲在網絡上的倉庫;yum 主要功能是更方便的添加/刪除/更新RPM 包,自動解決軟件包依賴性問題,便於管理大量系統的更新維護軟件包問題。yum 庫可以同時配置多個資源庫(Repository),簡潔的配置文件(/etc/yum.conf),自動解決增加或刪除rpm 包時遇到的依賴性問題,保持與RPM 數據庫的一致性。

本教程就以同步網絡上的開源yum倉庫到本地,配置成本地的yum倉庫(使用光盤即可,有興趣的可以自己配置以下)

系統采用CentOS6.8_x64 ,rsync httpd,同步CentOS6.x軟件包到本地,以及添加常用rpm包到本地yum倉庫;測試機器內網ip為10.168.118.93


二、安裝rsync和httpd

1、安裝軟件

#yum install rsync httpd -y

暫時不做配置,rsync用來從外網yum倉庫同步用的,httpd用來發本地yum倉庫

2、配置httpd

修改httpd配置如下(大約在295行)

DocumentRoot "/data1/www/html/" #這個目錄即下面腳本中同步外網yum倉庫到本地的位置

3、啟動httpd服務

#service httpd start

#chkconfig --httpd on


三、同步外網yum腳本

1、同步腳本

#cat rsync_yum.sh

#!/bin/bash
YUM_SITE="rsync://mirrors.kernel.org/centos/"
#存放路徑,我這裏用的是獨立分區的目錄
LOCAL_PATH="/data1/www/html/centos/"
#需要同步哪些目錄
LOCAL_VER=‘./‘
BW_limit=2048
LOCK_FILE="/var/log/yum_server.pid"
RSYNC_PATH=""
# check update yum server pid
MY_PID=$$
if [ -f $LOCK_FILE ]; then
get_pid=`/bin/cat $LOCK_FILE`
get_system_pid=`/bin/ps -ef|grep -v grep|grep $get_pid|wc -l`
if [ $get_system_pid -eq 0 ] ; then
echo $MY_PID>$LOCK_FILE
else
echo "Have update yum server now!"
exit 1
fi
else
echo $MY_PID>$LOCK_FILE
fi
# check rsync tool
if [ -z $RSYNC_PATH ]; then
RSYNC_PATH=`/usr/bin/whereis rsync|awk ‘ ‘‘{print $2}‘`
if [ -z $RSYNC_PATH ]; then
echo ‘Not find rsync tool.‘
echo ‘use comm: yum install -y rsync‘
fi
fi
verlist=6            #指定要同步的yum源,6即CentOS6,也可以同時同步多個版本,以空格隔開
# sync yum source,only 6
for VER in $verlist;
do
   $RSYNC_PATH -avzH --delete --bwlimit=$BW_limit --exclude-from=/data1/workshell/exclude.txt $YUM_SITE/$VER/ $LOCAL_PATH/$VER/
done
# clean lock file
`/bin/rm -f $LOCK_FILE`
echo "rsync end $(date +%Y-%m-%d_%k:%M:%S)" >> /data1/www/html/centos/centos_rsync_is_end.txt
exit 1

2、添加腳本到計劃任務

添加腳本到crontabl計劃中每周一淩晨3點執行同步

1 3 * * 1 /data1/workshell/rsync_yum.sh 2> /dev/null


3、手動執行測試

同步完後可以看到目錄結構如下:

技術分享


4、客戶端測試

移除系統自帶的repo倉庫,創建local.repo配置內容如下:

#cd /etc/yum.repos.d/
#mkdir bak
#mv *.repo ./bak

#cat local.repo

[base]
name=CentOS - base
baseurl=http://10.168.118.93/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://10.168.118.93/centos/RPM-GPG-KEY-CentOS-6
[updates]
name=CentOS - updates
baseurl=http://10.168.118.93/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://10.168.118.93/centos/RPM-GPG-KEY-CentOS-6
[extras]
name=CentOS - extras
baseurl=http://10.168.118.93/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://10.168.118.93/centos/RPM-GPG-KEY-CentOS-6

#yum clean all

#yum makecache 如圖:

技術分享


#測試安裝lftp如圖:

技術分享

技術分享


到此本地yum倉庫配置完成!


本文出自 “學地止境” 博客,請務必保留此出處http://dyc2005.blog.51cto.com/270872/1942480

CentOS6.x rsync+httpd搭建配置本地YUM源庫