インターネット接続が出来ない環境で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リポジトリミラーサーバの構築は完了。