提供:maruko2 Note.
CentOS をネットワークインストールする時やアップデートする時、CentOS のミラーサーバを利用するが、 何台も&何度もセットアップとなるとインターネットの帯域を圧迫するし public なミラーサーバに申し訳なくなってしまう。
そこで、ローカルに private なミラーサーバを構築することで、快適にセットアップできるようにする。
|
- 単に RPM リポジトリのミラーサーバにするだけなら Web サーバと rsync さえ使えれば OS は何でも良い。(CentOS 以外でも可)
- 独自に作成した RPM のリポジトリ用サーバを構築するには createrepo コマンドを使うので CentOS をサーバにすると楽に構築できる。
|
ミラーサーバの構築
公式サイトには ミラーサーバについての HowToが紹介されているが、必要な部分だけミラーしたいので次のように設定する。
CentOS にはいくつかのリポジトリがある(/etc/yum.repos.d/CentOS-Base.repo)が、そのうち base と update だけ利用する。
- base は CentOS をインストールする時に必要になるリポジトリ。
- update は文字どおりアップデートされたリポジトリ。
手順
ミラーするディレクトリを用意し、rsync コマンドでミラーする。この3行のコマンドでは、CentOS 5.x i386 版の os と update だけミラーできる。
mkdir -p /var/www/html/centos/5/{os,updates}/i386
rsync -rptv --delete rsync://ftp.riken.jp/centos/5/os/i386/ /var/www/html/centos/5/os/i386/
rsync -rptv --delete rsync://ftp.riken.jp/centos/5/updates/i386/ /var/www/html/centos/5/updates/i386
Web サーバの設定
/etc/httpd/conf.d/centos-mirror.conf を作成。
<directory "/var/www/html/centos">
options +indexes
</directory>
cron で定期的にミラーする
次のようなシェルスクリプトを定期的に(1日1回くらい)実行し、public なミラーサーバと同期させる。
#!/bin/sh
releasever="4 5"
basearch="i386 x86_64"
repos="os updates"
localdir="/var/www/html/centos"
rsync="rsync -rptq --delete"
for release in $releasever ; do
for arch in $basearch ; do
for repo in $repos ; do
src="rsync://ftp.riken.jp/centos/$release/$repo/$arch/"
dest="$localdir/$release/$repo/$arch"
if [ -d $dest ] ; then
$rsync $src $dest
else
mkdir -p $dest
$rsync $src $dest
fi
done
done
done
CentOS 5 i386/x86_64 の os と updates のみミラーするのに必要なディスク容量は 約9.1GB
yum コマンドで利用できるようにする
yum コマンドは /etc/yum.repos.d/CentOS-Base.repo に記述されている mirrorlist を元にリポジトリサーバを決定している[1]ので、自前のリポジトリサーバを使うようにするには mirrorlist を使わないようにし、baseurl に自前のリポジトリサーバを記述しておく。
/etc/yum.repos.d/CentOS-Base.repo の [base] と [update] にある mirrorlist の行をコメントアウトし、新たに baseurl の行を追加する。
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://構築したミラーサーバのアドレス/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
[update]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://構築したミラーサーバのアドレス/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
脚注
- ↑ yum-plugin-fastestmirror を参照
参考ページ