インターネットに繋がらない環境でyumでApache Http Serverをインストールする手順（Red Hat Enterprise Linux編）

インターネットに繋がらない環境で、パッケージ（httpd）のローカルリポジトリを作成しyumコマンドでインストールしてみました。
その時の手順を紹介します。

# 前提条件
- Tera Termをインストール済み
- VirtualBox6.0をインストール済み
- ホストOS：Windows7
- ゲストOS：RedHatEnterpriseLinix7.7

# 手順

### 1. Tera TermでゲストOS（LHEL7.7）にログイン

Tera Term を起動する。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292434/675b1afd-8199-88a3-fced-9ca33ef1b9d2.png)

ゲストOS（LHEL7.7）にログインする。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292434/c33ec9d2-3330-d299-b570-75dcde8b9249.png)
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292434/73b5cb1e-4e80-0bcf-1b62-488a356f8edd.png)

```
Last login: Sat Oct  5 21:48:15 2019 from 192.168.0.2
[root@RHEL-DEMO ~]#
```


### 2. `rhel-server-7.7-x86_64-dvd.iso`をゲストOS（LHEL7.7）へ転送

「ファイル」－「SSH SCP...」を選択する。
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292434/38a140ea-aad7-24f3-cf2a-5f28fb6e60d0.png)

Fromに`rhel-server-7.7-x86_64-dvd.iso`を選択し「Send」ボタンをクリックする。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292434/d873e85d-fee8-c1cc-892f-f14548646e92.png)

ファイルを確認する。

```
[root@RHEL-DEMO ~]# ls -l
合計 4396036
-rw-------. 1 root root       1550 10月  5 17:35 anaconda-ks.cfg
-rw-r--r--. 1 root root 4501536768 10月  5 02:42 rhel-server-7.7-x86_64-dvd.iso
[root@RHEL-DEMO ~]#
```

### 3. `rhel-server-7.7-x86_64-dvd.iso`を`/media`にマウントする。

```
[root@RHEL-DEMO ~]# mount -o loop -t iso9660 /root/rhel-server-7.7-x86_64-dvd.iso /media
mount: /dev/loop0 is write-protected, mounting read-only
[root@RHEL-DEMO ~]#
```

mountしたディレクトリを確認する。

```
[root@RHEL-DEMO ~]# cd /media
[root@RHEL-DEMO media]# ls -l
合計 974
dr-xr-xr-x. 3 root root   2048  7月 23 23:56 EFI
-r--r--r--. 1 root root   8266  7月 23 23:29 EULA
-r--r--r--. 1 root root  18092  7月 23 23:29 GPL
dr-xr-xr-x. 2 root root   2048  7月 23 23:56 LiveOS
dr-xr-xr-x. 2 root root 946176  7月 23 23:56 Packages
-r--r--r--. 1 root root   3375  7月  3 21:51 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root   3211  7月  3 21:51 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root   1796  7月 23 23:56 TRANS.TBL
dr-xr-xr-x. 4 root root   2048  7月 23 23:56 addons
-r--r--r--. 1 root root   1455  7月 23 23:29 extra_files.json
dr-xr-xr-x. 3 root root   2048  7月 23 23:56 images
dr-xr-xr-x. 2 root root   2048  7月 23 23:56 isolinux
-r--r--r--. 1 root root    114  7月 23 23:32 media.repo
dr-xr-xr-x. 2 root root   2048  7月 23 23:56 repodata
[root@RHEL-DEMO media]#
```

### 4. マウントしたメディアのリポジトリファイルを作成する。

```
[root@RHEL-DEMO rpm-gpg]# cd /etc/yum.repos.d
[root@RHEL-DEMO yum.repos.d]# vi RHEL-Server-DVD.repo
```

以下のファイルを作成する。

```:/etc/yum.repos.d/RHEL-Server-DVD.repo
[RHEL-Server-DVD]
name=Red Hat Enterprise Linux $releasever - $basearch (DVD)
baseurl=file:///media/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
```

### 5. createrepo、yum-utils をインストールする。

```
[root@RHEL-DEMO yum.repos.d]# yum --enablerepo=RHEL-Server-DVD install -y createrepo yum-utils
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
RHEL-Server-DVD                                          | 2.8 kB     00:00
(1/2): RHEL-Server-DVD/group_gz                            | 103 kB   00:00
(2/2): RHEL-Server-DVD/primary                             | 2.0 MB   00:00
RHEL-Server-DVD                                                       5229/5229
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ createrepo.noarch 0:0.9.9-28.el7 を インストール
--> 依存性の処理をしています: python-deltarpm のパッケージ: createrepo-0.9.9-28.el7.noarch
--> 依存性の処理をしています: deltarpm のパッケージ: createrepo-0.9.9-28.el7.noarch
---> パッケージ yum-utils.noarch 0:1.1.31-52.el7 を インストール
--> 依存性の処理をしています: python-kitchen のパッケージ: yum-utils-1.1.31-52.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ deltarpm.x86_64 0:3.6-3.el7 を インストール
---> パッケージ python-deltarpm.x86_64 0:3.6-3.el7 を インストール
---> パッケージ python-kitchen.noarch 0:1.1.1-5.el7 を インストール
--> 依存性の処理をしています: python-chardet のパッケージ: python-kitchen-1.1.1-5.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-chardet.noarch 0:2.2.1-3.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package              アーキテクチャー
                                  バージョン         リポジトリー          容量
================================================================================
インストール中:
 createrepo           noarch      0.9.9-28.el7       RHEL-Server-DVD       94 k
 yum-utils            noarch      1.1.31-52.el7      RHEL-Server-DVD      121 k
依存性関連でのインストールをします:
 deltarpm             x86_64      3.6-3.el7          RHEL-Server-DVD       82 k
 python-chardet       noarch      2.2.1-3.el7        RHEL-Server-DVD      227 k
 python-deltarpm      x86_64      3.6-3.el7          RHEL-Server-DVD       31 k
 python-kitchen       noarch      1.1.1-5.el7        RHEL-Server-DVD      266 k

トランザクションの要約
================================================================================
インストール  2 パッケージ (+4 個の依存関係のパッケージ)

総ダウンロード容量: 822 k
インストール容量: 3.4 M
Downloading packages:
警告: /media/Packages/createrepo-0.9.9-28.el7.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID fd431d51: NOKEY
createrepo-0.9.9-28.el7.noarch.rpm の公開鍵がインストールされていません
--------------------------------------------------------------------------------
合計                                               3.4 MB/s | 822 kB  00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release から鍵を取得中です。
Importing GPG key 0xFD431D51:
 Userid     : "Red Hat, Inc. (release key 2) <security@redhat.com>"
 Fingerprint: 567e 347a d004 4ade 55ba 8a5f 199e 2f91 fd43 1d51
 Package    : redhat-release-server-7.7-10.el7.x86_64 (@anaconda/7.7)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Importing GPG key 0x2FA658E0:
 Userid     : "Red Hat, Inc. (auxiliary key) <security@redhat.com>"
 Fingerprint: 43a6 e49c 4a38 f4be 9abf 2a53 4568 9c88 2fa6 58e0
 Package    : redhat-release-server-7.7-10.el7.x86_64 (@anaconda/7.7)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : deltarpm-3.6-3.el7.x86_64                       1/6
  インストール中          : python-deltarpm-3.6-3.el7.x86_64                2/6
  インストール中          : python-chardet-2.2.1-3.el7.noarch               3/6
  インストール中          : python-kitchen-1.1.1-5.el7.noarch               4/6
  インストール中          : yum-utils-1.1.31-52.el7.noarch                  5/6
  インストール中          : createrepo-0.9.9-28.el7.noarch                  6/6
  検証中                  : python-chardet-2.2.1-3.el7.noarch               1/6
  検証中                  : python-deltarpm-3.6-3.el7.x86_64                2/6
  検証中                  : yum-utils-1.1.31-52.el7.noarch                  3/6
  検証中                  : deltarpm-3.6-3.el7.x86_64                       4/6
  検証中                  : createrepo-0.9.9-28.el7.noarch                  5/6
  検証中                  : python-kitchen-1.1.1-5.el7.noarch               6/6
RHEL-Server-DVD/productid                                | 1.6 kB     00:00

インストール:
  createrepo.noarch 0:0.9.9-28.el7       yum-utils.noarch 0:1.1.31-52.el7

依存性関連をインストールしました:
  deltarpm.x86_64 0:3.6-3.el7            python-chardet.noarch 0:2.2.1-3.el7
  python-deltarpm.x86_64 0:3.6-3.el7     python-kitchen.noarch 0:1.1.1-5.el7

完了しました!
[root@RHEL-DEMO yum.repos.d]#
```

### 6. httpdに必要なrpmファイルをダウンロードし、ローカルリポジトリを作成する。

ディレクトリを作成する。

```
[root@RHEL-DEMO ~]# cd
[root@RHEL-DEMO ~]# pwd
/root
[root@RHEL-DEMO ~]# mkdir -p yum/httpd_repo/Packages
[root@RHEL-DEMO ~]# cd yum/httpd_repo/Packages
```

メディアのリポジトリから **httpd**  のインストールに必要なrpmファイルをダウンロードする。

```
[root@RHEL-DEMO Packages]# yumdownloader --enablerepo=RHEL-Server-DVD install --resolve httpd
読み込んだプラグイン:product-id, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
RHEL-Server-DVD                                          | 2.8 kB     00:00
(1/2): RHEL-Server-DVD/group_gz                            | 103 kB   00:00
(2/2): RHEL-Server-DVD/primary                             | 2.0 MB   00:00
RHEL-Server-DVD                                                       5229/5229
No Match for argument install
--> トランザクションの確認を実行しています。
---> パッケージ httpd.x86_64 0:2.4.6-90.el7 を インストール
--> 依存性の処理をしています: httpd-tools = 2.4.6-90.el7 のパッケージ: httpd-2.4.6-90.el7.x86_64
--> 依存性の処理をしています: /etc/mime.types のパッケージ: httpd-2.4.6-90.el7.x86_64
--> 依存性の処理をしています: libaprutil-1.so.0()(64bit) のパッケージ: httpd-2.4.6-90.el7.x86_64
--> 依存性の処理をしています: libapr-1.so.0()(64bit) のパッケージ: httpd-2.4.6-90.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ apr.x86_64 0:1.4.8-5.el7 を インストール
---> パッケージ apr-util.x86_64 0:1.5.2-6.el7 を インストール
---> パッケージ httpd-tools.x86_64 0:2.4.6-90.el7 を インストール
---> パッケージ mailcap.noarch 0:2.1.41-2.el7 を インストール
--> 依存性解決を終了しました。
(1/5): apr-1.4.8-5.el7.x86_64.rpm                          | 104 kB   00:00
(2/5): httpd-2.4.6-90.el7.x86_64.rpm                       | 1.2 MB   00:00
(3/5): httpd-tools-2.4.6-90.el7.x86_64.rpm                 |  91 kB   00:00
(4/5): mailcap-2.1.41-2.el7.noarch.rpm                     |  31 kB   00:00
(5/5): apr-util-1.5.2-6.el7.x86_64.rpm                     |  92 kB   00:00
[root@RHEL-DEMO Packages]#
```

**httpd** のインストール用のローカルリポジトリを作成する。

```
[root@RHEL-DEMO Packages]# cd ../..
[root@RHEL-DEMO yum]# ls
httpd_repo
[root@RHEL-DEMO yum]# createrepo httpd_repo
Spawning worker 0 with 5 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@RHEL-DEMO yum]#
```

ローカルリポジトリファイルを作成する。

```
[root@RHEL-DEMO yum]# cd /etc/yum.repos.d
[root@RHEL-DEMO yum.repos.d]# vi httpd_repo.repo
```

以下のファイルを作成する。

```:/etc/yum.repos.d/httpd_repo.repo
[httpd_repo]
name=httpd_repo
baseurl=file:///root/yum/httpd_repo
enabled=1
gpgcheck=0
```


### 7. ローカルリポジトリから`httpd`をインストールする。

cleanする。

```
[root@RHEL-DEMO yum.repos.d]# cd
[root@RHEL-DEMO ~]# pwd
/root
[root@RHEL-DEMO ~]# yum --enablerepo=RHEL-Server-DVD clean all
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
リポジトリーを清掃しています: RHEL-Server-DVD httpd_repo
[root@RHEL-DEMO ~]#
```

`httpd`をインストールする。

```
[root@RHEL-DEMO ~]# yum --enablerepo=httpd_repo install httpd
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
httpd_repo                                               | 2.9 kB     00:00
httpd_repo/primary_db                                      | 6.2 kB   00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ httpd.x86_64 0:2.4.6-90.el7 を インストール
--> 依存性の処理をしています: httpd-tools = 2.4.6-90.el7 のパッケージ: httpd-2.4.6-90.el7.x86_64
--> 依存性の処理をしています: /etc/mime.types のパッケージ: httpd-2.4.6-90.el7.x86_64
--> 依存性の処理をしています: libaprutil-1.so.0()(64bit) のパッケージ: httpd-2.4.6-90.el7.x86_64
--> 依存性の処理をしています: libapr-1.so.0()(64bit) のパッケージ: httpd-2.4.6-90.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ apr.x86_64 0:1.4.8-5.el7 を インストール
---> パッケージ apr-util.x86_64 0:1.5.2-6.el7 を インストール
---> パッケージ httpd-tools.x86_64 0:2.4.6-90.el7 を インストール
---> パッケージ mailcap.noarch 0:2.1.41-2.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package            アーキテクチャー
                                  バージョン            リポジトリー       容量
================================================================================
インストール中:
 httpd              x86_64        2.4.6-90.el7          httpd_repo        1.2 M
依存性関連でのインストールをします:
 apr                x86_64        1.4.8-5.el7           httpd_repo        104 k
 apr-util           x86_64        1.5.2-6.el7           httpd_repo         92 k
 httpd-tools        x86_64        2.4.6-90.el7          httpd_repo         91 k
 mailcap            noarch        2.1.41-2.el7          httpd_repo         31 k

トランザクションの要約
================================================================================
インストール  1 パッケージ (+4 個の依存関係のパッケージ)

総ダウンロード容量: 1.5 M
インストール容量: 4.3 M
Is this ok [y/d/N]: y
Downloading packages:
--------------------------------------------------------------------------------
合計                                                56 MB/s | 1.5 MB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : apr-1.4.8-5.el7.x86_64                          1/5
  インストール中          : apr-util-1.5.2-6.el7.x86_64                     2/5
  インストール中          : httpd-tools-2.4.6-90.el7.x86_64                 3/5
  インストール中          : mailcap-2.1.41-2.el7.noarch                     4/5
  インストール中          : httpd-2.4.6-90.el7.x86_64                       5/5
  検証中                  : httpd-tools-2.4.6-90.el7.x86_64                 1/5
  検証中                  : apr-1.4.8-5.el7.x86_64                          2/5
  検証中                  : mailcap-2.1.41-2.el7.noarch                     3/5
  検証中                  : httpd-2.4.6-90.el7.x86_64                       4/5
  検証中                  : apr-util-1.5.2-6.el7.x86_64                     5/5

インストール:
  httpd.x86_64 0:2.4.6-90.el7

依存性関連をインストールしました:
  apr.x86_64 0:1.4.8-5.el7                 apr-util.x86_64 0:1.5.2-6.el7
  httpd-tools.x86_64 0:2.4.6-90.el7        mailcap.noarch 0:2.1.41-2.el7

完了しました!
[root@RHEL-DEMO ~]#
```

### 8. systemctlコマンドでhttpdを起動する。

```
[root@RHEL-DEMO /]# systemctl start httpd
[root@RHEL-DEMO /]# ps -ef | grep httpd
root      1620     1  0 22:20 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    1621  1620  0 22:20 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    1622  1620  0 22:20 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    1623  1620  0 22:20 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    1624  1620  0 22:20 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    1625  1620  0 22:20 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root      1627  1306  0 22:20 pts/0    00:00:00 grep --color=auto httpd
[root@RHEL-DEMO /]# yum list installed | grep httpd
apr.x86_64                           1.4.8-5.el7                @httpd_repo
apr-util.x86_64                      1.5.2-6.el7                @httpd_repo
httpd.x86_64                         2.4.6-90.el7               @httpd_repo
httpd-tools.x86_64                   2.4.6-90.el7               @httpd_repo
mailcap.noarch                       2.1.41-2.el7               @httpd_repo
[root@RHEL-DEMO /]#
```

### 9. firewall-cmdコマンドで80番ポート（http）をオープンする。

```
[root@RHEL-DEMO /]# firewall-cmd --add-service=http --permanent
success
[root@RHEL-DEMO /]#
```

設定内容を反映させる。

```
[root@RHEL-DEMO /]# firewall-cmd --reload
success
[root@RHEL-DEMO /]#
```

内容を確認する。

```
[root@RHEL-DEMO /]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: dhcpv6-client http ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@RHEL-DEMO /]#
```

### 10. ホストOSからブラウザで接続確認する。

以下でブラウザで接続し、デフォルトのトップページが表示されることを確認する。

`http://192.168.0.6/`

![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292434/7560fd0d-5fec-e6ed-160a-fed87515e248.png)


以上