やりたい事
ローカル環境でサーバを構築するのに毎回メディアをマウントしてRPMパッケージをインストールするのが面倒なので、
リポジトリサーバの構築手順を知るついでにyumコマンドでインストールできるようにする。
(インストールだけしたいのでアップデートは考えない)
環境
・ホスト:ESXi 6.0.0
・VM:CentOS 7.2
大まかな流れ
1.ローカルリポジトリの設定
⇒構築時にRPMパッケージの依存関係を解決するのが面倒だったのでローカル上でyumコマンドが使えるように設定
2.必要なパッケージ(Apache、createrepo)のインストール~Webアクセス確認
3.リポジトリサーバの設定
4.動作確認
1.ローカルリポジトリの設定
1-1.仮想マシンにCentOSのメディアをマウント
・メディアの挿入
・マウント~確認
# mount /dev/cdrom /media/
mount: /dev/sr0 is write-protected, mounting read-only
# ls -l /media/
drwxr-xr-x. 2 root root 589824 M月 DD YYYY Packages
-rw-r--r--. 1 root root 1690 M月 DD YYYY RPM-GPG-KEY-CentOS-7
-rw-r--r--. 1 root root 1690 M月 DD YYYY RPM-GPG-KEY-CentOS-Testing-7
drwxr-xr-x. 2 root root 2048 M月 DD YYYY isolinux
drwxr-xr-x. 2 root root 4096 M月 DD YYYY repodata
(省略)
1-2.repoファイルの作成
# vi /etc/yum.repos.d/CentOS-media.repo
[centos-media]
name=centos-media
baseurl=file:///media
gpgcheck=0
enabled=1
1-3.確認
# yum --disablerepo=* --enablerepo=centos-media list
パッケージの一覧が出力されればOK
2.必要なパッケージ(Apache、createrepo)のインストール~Webアクセス確認
2-1.yumコマンドでApache、createrepoのパッケージをインストール
# yum --disablerepo=* --enablerepo=centos-media install httpd
# yum --disablerepo=* --enablerepo=centos-media install createrepo
2-2.Apacheサービスの起動
# systemctl status httpd
(出力メッセージなし)
# systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
Active: active (running) since DAY YYYY-MM-DD HH:MM:SS JST; Xs ago
Main PID: XXXXX (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
tq12631 /usr/sbin/httpd -DFOREGROUND
tq12632 /usr/sbin/httpd -DFOREGROUND
tq12633 /usr/sbin/httpd -DFOREGROUND
tq12634 /usr/sbin/httpd -DFOREGROUND
tq12635 /usr/sbin/httpd -DFOREGROUND
mq12636 /usr/sbin/httpd -DFOREGROUND
M月 DD HH:MM:SS CentOS7.2-1 httpd[12631]: AH00557: httpd: apr_sockaddr_info_get() failed for C...2-1
M月 DD HH:MM:SS CentOS7.2-1 httpd[12631]: AH00558: httpd: Could not reliably determine the ser...age
M月 DD HH:MM:SS CentOS7.2-1 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
2-3.ファイアウォールの設定(http通信許可)
デフォルトゾーンの確認
# firewall-cmd --get-default-zone
public
http通信の追加
# firewall-cmd --add-service=http --zone=public --permanent
success
ファイアウォール設定の読み込み
# firewall-cmd --reload
success
2-4.Webブラウザからの疎通確認
ブラウザを立ち上げて「http://[サーバのIPアドレス]」をURL欄に入力
以下の画面が表示されればOK
3.リポジトリサーバの設定
3-1.公開ディレクトリに必要なディレクトリを作成
# cd /var/www/html
\html# mkdir x86_64
\html# mkdir rpm
\html# ls -l
drwxr-xr-x. 2 root root 6 M月 DD HH:SS rpm ← OSのメディアに入っていないRPMを格納するディレクトリ
drwxr-xr-x. 2 root root 6 M月 DD HH:SS x86_64 ←64bitのパッケージを格納するディレクトリ
3-2.メディア内のファイル・ディレクトリをコピー
# cp -pR /media/* /var/www/html/xyum/x86_64/
3-3.rpmディレクトリをリポジトリデータベースとして登録
# createrepo -v /var/www/html/yum/rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Starting other db creation: [DAY] [MON] DD HH:MM:SS YYYY
Ending other db creation: [DAY] [MON] DD HH:MM:SS YYYY
Starting filelists db creation: [DAY] [MON] DD HH:MM:SS YYYY
Ending filelists db creation: [DAY] [MON] DD HH:MM:SS YYYY
Starting primary db creation: [DAY] [MON] DD HH:MM:SS YYYY
Ending primary db creation: [DAY] [MON] DD HH:MM:SS YYYY
Sqlite DBs complete
4.動作確認
4-1.Webブラウザからyumディレクトリの内容が見えるか確認
4-2.リポジトリサーバとして他のサーバに認識させる
# vi /etc/yum.repos.d/CentOS-localnet.repo
[localnet-repo]
name=CentOS-7.2 - localnet repo
baseurl=http://[リポジトリサーバのIPアドレス]/yum/$basearch/
gpgcheck=0
enabled=1
[localnet-repo-rpm]
name=Intra repo rpm
baseurl=http://[リポジトリサーバのIPアドレス]/yum/rpm/
gpgcheck=0
enabled=1
4-3.ミラーサイトに見に行かないように設定を無効化
「4-2」で作成したファイル以外に「enabled=0」を追記する。(記載されている場合は「0」に変える)
(例)
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0 ←追記
4-4.Apacheをインストールできるか確認
# yum install httpd
インストール処理が実行されればOK
参考サイト
・オヤジのサーバ構築奮戦記!:yumリポジトリサーバ構築
・Qiita:yumのリポジトリをローカルに作成する
・UnixPower on Networking:CentOS7 firewalldの設定