インターネット接続が出来ない環境でCentOSを構築した場合でも、今回紹介するようなyumサーバ(yumリポジトリミラー)を構築しDMZ領域に設置することで、yumを用いたパッケージ導入が可能になる。
今回は、そんなyumリポジトリサーバをCentOS 7を用いて構築を行う。

1.前提パッケージの導入

yumサーバ(yumリポジトリミラーサーバ)は、ただミラーサーバとして動作させるだけであればwebサーバ機能(+外部のyumサーバからパッケージを取得してくるrsyncコマンド)があれば事足りる。独自のrpmパッケージを配布したい場合は、別途createrepoパッケージが必要になる。今回はミラーサーバとして構築するが、これらのパッケージを事前にインストールしておく。

まずは、以下のコマンドでパッケージをインストールする。

yum install httpd rsync createrepo

インターネットに接続出来ない環境の場合は、こちらの内容を参考にisoファイルからパッケージを導入すると良いだろう。

2.配布させるパッケージのダウンロードを行う

まずは配布するパッケージを設置するディレクトリを作成する。今回は、CentOS 6及び7のOS、updatesのパッケージを対象とする。

mkdir -p /var/www/html/centos/{6,7}/{os,updates}/

次に、このyumサーバで配布するパッケージを既存のyumリポジトリサーバからダウンロードする。

rsync -rptv --delete rsync://ftp.riken.jp/centos/6/os/ /var/www/html/centos/6/os/
rsync -rptv --delete rsync://ftp.riken.jp/centos/6/updates/ /var/www/html/centos/6/updates/
rsync -rptv --delete rsync://ftp.riken.jp/centos/7/os/ /var/www/html/centos/7/os/
rsync -rptv --delete rsync://ftp.riken.jp/centos/7/updates/ /var/www/html/centos/7/updates/

上記のコマンドをcronで定期実行(1日1回程度)することで、最新の状態を維持することができる。

3.apacheの設定を行う

apacheの設定を行い、リポジトリサーバとして利用できるようにする。
以下のコマンドで、新規に「/etc/httpd/conf.d/centos-mirror.conf」を作成する。

echo '<directory "/var/www/html/centos">' >  /etc/httpd/conf.d/centos-mirror.conf
echo '  options +indexes'                 >> /etc/httpd/conf.d/centos-mirror.conf
echo '</directory>'                       >> /etc/httpd/conf.d/centos-mirror.conf

4.クライアントの設定を行う

最後に、クライアント側がyumを使う際に、構築したyumレポジトリサーバを参照するように設定を変更する。

CentOS6

[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://yumリポジトリサーバのアドレス/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
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://yumリポジトリサーバのアドレス/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

CentOS7

[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://yumリポジトリサーバのアドレス/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
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://yumリポジトリサーバのアドレス/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

後は、クライアント側で以下のコマンドを実行し、動作確認を行う。

yum clean all
yum list all

問題なく動作すれば、無事yumリポジトリミラーサーバの構築は完了。