Edited at

CentOS7 リポジトリサーバ クイックスタート

More than 3 years have passed since last update.

イントラ内にリポジトリサーバを設置する

この手順内でリポジトリサーバのホストアドレスは便宜上

172.27.0.67とする


個別に必要なパッケージを導入

# yum install httpd rsync createrepo


パッケージを設置するディレクトリを作成

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


手動rsyncでパッケージをローカルにダウンロード

rsync -rptvz --delete rsync://ftp.riken.jp/centos/7/os/ /var/www/html/centos/7/os/

rsync -rptvz --delete rsync://ftp.riken.jp/centos/7/updates/ /var/www/html/centos/7/updates/
rsync -rptvz --delete rsync://ftp.riken.jp/centos/7/extras/ /var/www/html/centos/7/extras/

※結構時間かかるので気長に待つ。

rsyncオプションメモ
-r ディレクトリ内を再帰的にコピー。
-p パーミッションをそのままコピー。
-t タイムスタンプをそのままコピー。
-v コピーしているファイル名やバイト数などの情報を表示。
-z 通信を圧縮。
-u コピー先がコピー元より新しいならコピーしない


リポジトリサーバhttp設定

# cd /etc/httpd/conf.d

# mkdir old
# mv .* old
# 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
# systemctl restart httpd


httpリクエストを受けるホストIPを設定

# vi /etc/sysconfig/network-scripts/ifcfg-eth0


/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes
BOOTPROTO=dhcp
HWADDR=XX:XX:XX:XX:XX:XX
TYPE=Ethernet
IPADDR=172.27.0.67
NETMASK=255.255.255.0
IPV6INIT=no

# systemctl restart NetworkManager

# systemctl restart network

ホストから以下のアドレスで接続確認する

# curl 172.27.0.67/centos/7/os/x86_64/Packages/

# vi /etc/yum.repos.d/CentOS-Base.repo


/etc/yum.repos.d/CentOS-Base.repo

[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://172.27.0.67/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://172.27.0.67/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://172.27.0.67/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7


参照しているリポジトリが設定したホストである事を確認

# du -sh /var/cache/yum

# yum clean all
# yum repolist all
# du -sh /var/cache/yum

定期的に差分同期する為にcronとスクリプトを仕込む

# yum install cronie-noanacron

# yum remove cronie-anacron
# systemctl start crond
# systemctl enable crond
# cat /etc/cron.d/dailyjobs


/etc/cron.daily/reposync.sh

#!/bin/bash

rsync -aurvz --delete rsync://ftp.riken.jp/centos/7/os/ /var/www/html/centos/7/os/ > /tmp/reposync.centos_7_os.log
rsync -aurvz --delete rsync://ftp.riken.jp/centos/7/updates/ /var/www/html/centos/7/updates/ > /tmp/reposync.centos_7_updates.log
rsync -aurvz --delete rsync://ftp.riken.jp/centos/7/extras/ /var/www/html/centos/7/extras/ > /tmp/reposync.centos_7_extras.log

「cron.daily」をミラーサイトと同期したい時刻に変更


/etc/cron.d/dailyjobs

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# run-parts
01 00 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
# ll /tmp/