CentOS8の終了が発表されたため、VirtualBox上にCentOS8、RHEL8、ubuntu20.04を環境構築して動作を比較し次期OSの選定を行いました。

CentOS8の終了が発表されたため、VirtualBox上にCentOS8、RHEL8、ubuntu20.04を環境構築して動作を比較し次期OSの選定を行いました。
※CentOS8は比較元として。
※CentOS Stream 8は、CentOS8と大差ないと考え比較対象から外しました。
※OracleLinux8は時間の関係で比較対象から外しています。その他の理由はありません。
結果を先に申し上げると、私の場合、どのOSでも問題はありませんでした。
ゲストOSのIPは固定にしました。

# 各OSのサポート終了日
| OS | Red Hat/Debian | 有償/無償 | サポート終了日 | 備考 |
|:-----------:|:------------:|:------------:|:------------:|:------------|
|CentOS Linux 7| Red Hat | 無償|2024-06-30||
|CentOS Linux 8| Red Hat | 無償|<font color="Red">**2021-12-31**</font>|当初は2029-05-31だった。|
|CentOS Stream 8| Red Hat | 無償|2024-05-31||
|Red Hat Enterprise Linux 8| Red Hat | <font color="Red">**有償**</font>|2029-05-31|一部無償化の情報あり。|
|Ubuntu20.04| Debian | 無償|2025-04-XX||
|Oracle Linux 8| Red Hat | 無償 |2029-07-XX||

#本記事の環境
ホストOS：Windows10 Pro 64bit 8GB
ゲストOS1：CentOS Linux 8 (Core)
ゲストOS2：Red Hat Enterprise Linux 8.3 (Ootpa)
ゲストOS3：Ubuntu 20.04.1 LTS
Oracle VM VirtualBox：6.0.4a
vagrant：Vagrant 2.2.14
Apache：2.4.37
Tera Term：4.105
コマンドプロンプト
ホストOS側に実ソース

# 事前準備
* 各OSのvagrantのboxファイルを入手する。  
※以下、ダウンロード先の例。  
[[HashiCorp Vagrant Cloud / CentOS8]](https://app.vagrantup.com/centos/boxes/8)  
[[HashiCorp Vagrant Cloud / RHEL8]](https://app.vagrantup.com/generic/boxes/rhel8)  
[[HashiCorp Vagrant Cloud / ubuntu20.04]](https://app.vagrantup.com/ubuntu/boxes/focal64)  

# 構築手順
* コマンドプロンプトで作業用ディレクトリへ移動する。
<pre>
cd c:\vagrant_home
</pre>

* boxファイルを読み込む。
<pre>
vagrant box list
vagrant box add --name cent_box "[boxファイルのダウンロード先]/cent8.box"
vagrant box add --name rhel_box "[boxファイルのダウンロード先]/rhel8.box"
vagrant box add --name ub_box "[boxファイルのダウンロード先]/ub20.box"
vagrant box list
</pre>

* エクスプローラーで作業用ディレクトリを開き、Vagrantfileを作成する。※ipのXXX、YYY、ZZZは任意(1はホストOSが使用しているのでそれ以外。100番台推奨)

```
Vagrant.configure("2") do |config|
    config.vm.define "cent8" do |cent8|
    cent8.ssh.insert_key = false
    cent8.vm.network "private_network", ip: "192.168.56.XXX"
    cent8.vm.box = "cent_box"
    cent8.disksize.size = "10GB"
    cent8.vm.synced_folder "[ホストOSからゲストOSへ同期するソースのホストOS側の起点ディレクトリ]", "[ホストOSからゲストOSへ同期するソースのゲストOS側の起点ディレクトリ]", :owner => "apache", :group => "apache", :mount_options => ["dmode=777,fmode=777"]
  end

  config.vm.define "rhel8" do |rhel8|
    rhel8.ssh.insert_key = false
    rhel8.vm.network "private_network", ip: "192.168.56.YYY"
    rhel8.vm.box = "rhel_box"
    rhel8.disksize.size = "10GB"
    rhel8.vm.synced_folder "[ホストOSからゲストOSへ同期するソースのホストOS側の起点ディレクトリ]", "[ホストOSからゲストOSへ同期するソースのゲストOS側の起点ディレクトリ]", :owner => "apache", :group => "apache", :mount_options => ["dmode=777,fmode=777"]
  end

  config.vm.define "ub20" do |ub20|
    ub20.ssh.insert_key = false
    ub20.vm.network "private_network", ip: "192.168.56.ZZZ"
    ub20.vm.box = "ub_box"
    ub20.disksize.size = "10GB"
    ub20.vm.synced_folder "[ホストOSからゲストOSへ同期するソースのホストOS側の起点ディレクトリ]", "[ホストOSからゲストOSへ同期するソースのゲストOS側の起点ディレクトリ]", :owner => "www-data", :group => "www-data", :mount_options => ["dmode=777,fmode=777"]
  end

end
```

* ホストOSのhostsファイルを編集する。  
※直接は編集できないため、別の場所にコピーして編集し置き換えること。 
　C:\Windows\System32\drivers\etc\hosts  
※WEBブラウザで確認したいOSに合わせてhostsファイルを都度書き換えること。
<pre>
192.168.56.XXX testdomain
</pre>

* コマンドプロンプトからゲストOSを起動する。
<pre>
cd c:\vagrant_home
vagrant up
※時間がかかります。
※起動できているように見えてできてない場合があるので画面をよく確認すること。
</pre>

* 「Warning: Authentication failure. Retrying...」を繰り返し、ゲストOSが正常に起動（接続）できない場合の対処方法
  * 「vagrant ssh-config vm名」でパスを確認する。
  * 「ssh-keygen -yf パス > public_key」で公開鍵を作成する。
  * virtualbox本体から該当する仮想マシンを起動してログインする。
  * 公開鍵を設定する。
      * sudo vi /home/vagrant/.ssh/authorized_keys
          * 公開鍵をコピペする。
              * コピー＆ペースト方法はいくつかある。ゲストOSのメニュー「仮想マシン」の「ファイルマネージャー」からファイルを転送する、等。
      * sudo chmod 0600 /home/vagrant/.ssh/authorized_keys
  * vagrant reload

* ゲストOSにアクセスするためteratermを起動する。
※IP：192.168.56.XXX or 192.168.56.YYY or 192.168.56.ZZZ
※ポート：22
※USER：vagrant
※PASS：vagrant
※鍵が必要である場合は、「vagrant ssh-config vm名」でパスを確認して指定する。

* Apacheのインストール状況を確認する。
<pre>
※centOS、rhelの場合
httpd -v
※ubuntuの場合
apache2 -v
</pre>

* Apacheが未インストールであれば、インストールする。
<pre>
※centOS、rhelの場合
sudo su
dnf -y install httpd
※ubuntuの場合
su - vagrant
apt -y install apache2
</pre>

* WEBブラウザで確認したいOSに合わせてhostsファイルを書き換える。
* WEBブラウザのURLにIPを打ち込んで、アクセスできるか確認する。
* 実ソースがあれば、引き続き、動作を確認する。※私はここでphpであったり、DBであったり、フレームワークであったりをインストールして、実ソースの動作確認を行いました。

# 結果
私の場合、どのOSでもApache、実ソース共に問題ありませんでした。
有償/無償、セキュリティ、サポート、等を考慮して次期OSの選定を行いました。

# 補足情報
* Apacheのログの出力先
<pre>
※centOS、rhelの場合
sudo su
/etc/httpd/logs/error_log
/etc/httpd/logs/access_log
※ubuntuの場合
su - vagrant
/var/log/apache2/error.log
/var/log/apache2/access_log
</pre>

* RHEL8は2021年02月現在、有償のみです。今回は、無償試行版を使用しました。
https://www.redhat.com/ja/technologies/linux-platforms/enterprise-linux
https://qiita.com/1429takahiro/items/2f485a6aec0567fa6ea5

# 参考
https://qiita.com/yamada-hakase/items/1629d511ab4199d253b4
https://www.geekfeed.co.jp/geekblog/migration-path-from-centos8
https://www.cybertrust.co.jp/blog/linux-oss/linux/centos8.html
https://cloudadvisor.jp/blog/centos8_replace