CentOS の RPM リポジトリのミラーサーバを構築する
CentOS をネットワークインストールする時やアップデートする時、CentOS のミラーサーバを利用するが、 何台も&何度もセットアップとなるとインターネットの帯域を圧迫するし public なミラーサーバに申し訳なくなってしまう。
そこで、ローカルに private なミラーサーバを構築することで、快適にセットアップできるようにする。
|
目次 |
ミラーサーバの構築
公式サイトには ミラーサーバについての 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
脚注
参考ページ
- CentOS Mirroring HowTo [www.centos.org]
- 独自/ミラー yum リポジトリを作ろう : アシアルブログ [blog.asial.co.jp]