CentOS7.2でリポジトリサーバ構築

### やりたい事
ローカル環境でサーバを構築するのに毎回メディアをマウントしてRPMパッケージをインストールするのが面倒なので、
リポジトリサーバの構築手順を知るついでにyumコマンドでインストールできるようにする。
(インストールだけしたいのでアップデートは考えない)

### 環境
・ホスト：ESXi 6.0.0
・VM：CentOS 7.2

### 大まかな流れ
1.ローカルリポジトリの設定
　⇒構築時にRPMパッケージの依存関係を解決するのが面倒だったのでローカル上でyumコマンドが使えるように設定
2.必要なパッケージ(Apache、createrepo)のインストール～Webアクセス確認
3.リポジトリサーバの設定
4.動作確認

#### 1.ローカルリポジトリの設定
1-1.仮想マシンにCentOSのメディアをマウント
・メディアの挿入
![20170210_001_1.jpg](https://qiita-image-store.s3.amazonaws.com/0/113271/978f64f0-5867-4961-8195-4d0ad010c08e.jpeg)


・マウント～確認
\# 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
![20170210_003_1.jpg](https://qiita-image-store.s3.amazonaws.com/0/113271/dcf6eb19-6302-e542-597c-8a38dff46490.jpeg)

#### 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ディレクトリの内容が見えるか確認

![20170210_004_1.jpg](https://qiita-image-store.s3.amazonaws.com/0/113271/a6f9161f-80c6-e19c-8eee-a1222dd74bdb.jpeg)


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リポジトリサーバ構築](http://wikiwiki.jp/poiuy/?yum%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA%A5%B5%A1%BC%A5%D0#nb5d0b81)
・[Qiita：yumのリポジトリをローカルに作成する](http://qiita.com/nwsoyogi/items/109e1f3338848f788f9f)
・[UnixPower on Networking：CentOS7 firewalldの設定](http://www.unix-power.net/centos7/firewalld.html)