VirtualBox CentOS 7でApacheを最新バージョンに更新するための検証と対応方法

## はじめに
CentOS7にてapacheのパッケージのアップデートを試してみた

VirtualBoxのゲストOSのapacheのバージョンは最新ではありません。
```
# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   May 30 2023 14:01:11
```
apacheをyumアップデートしましたが、リポジトリがnot Foundと表示されます。
CentOS7はEOLを迎えているため、リポジトリがサポートされていないです。

CentOS 7はEOL（End of Life）を迎えたため、標準のリポジトリでは最新のパッケージ（特にApache HTTP Serverのようなパッケージ）を取得できません。このため、リポジトリが404エラーを返すのは想定内
```
# yum update httpd

http://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/7.9.2009/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
他のミラーを試します。
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.9.2009/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
# No packages marked for update
```

## 対応手順
Vaultリポジトリは、すでにサポートが終了した古いバージョンのCentOSやRHELに対して、過去にリリースされたすべてのパッケージをアーカイブして提供するリポジトリです。

CentOS7 リポジトリの設定はサイトを参考にさせていただきました。
https://qiita.com/tkfm1991/items/f657f2ae30ede056951b

CentOSのリポジトリvaultの対応完了しました
```
 cat CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/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&infra=$infra
baseurl=http://vault.centos.org/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://vault.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
```

リポジトリキャッシュのクリアと更新: リポジトリの設定を変更した後は、yumのキャッシュをクリアして、再度パッケージ情報を取得する
```
sudo yum clean all
sudo yum makecache
```
yum updateしてもパッケージがありませんと言われます。
```
# yum update httpd
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: repo.jing.rocks
 * remi-safe: cdn.centos.no
No packages marked for update
```
**apacheの最新バージョンがCentOS-Base.repoに入っていないことが分かりました。**

引き続き　remiとepel-releaseをインストールしてリポジトリを登録した
```
# yum install epel-release -y
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
```
リポジトリキャッシュのクリアと更新: リポジトリの設定を変更した後は、yumのキャッシュをクリアして、再度パッケージ情報を取得する
```
sudo yum clean all
sudo yum makecache
```
remiのリポジトリではhttpdの最新2.4.62をインストールできない
```
# yum --enablerepo=remi install httpd -y
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: repo.jing.rocks
 * remi: cdn.centos.no
 * remi-safe: cdn.centos.no
remi                                                                                                                                                                           | 3.0 kB  00:00:00
remi/primary_db                                                                                                                                                                | 3.7 MB  00:00:00
パッケージ httpd-2.4.6-99.el7.centos.1.x86_64 はインストール済みか最新バージョンです
何もしません
[root@localhost tmp]#
```
remiのリポジトリにhttpdの最新2.4.62が含まれていない
```
[root@localhost ~]# yum --enablerepo=remi list httpd --showduplicates
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: repo.jing.rocks
 * remi: cdn.centos.no
 * remi-safe: cdn.centos.no
利用可能なパッケージ
httpd.x86_64                                                            2.4.6-95.el7.centos                                                              base
httpd.x86_64                                                            2.4.6-97.el7.centos                                                              updates
httpd.x86_64                                                            2.4.6-97.el7.centos.1                                                            updates
httpd.x86_64                                                            2.4.6-97.el7.centos.2                                                            updates
httpd.x86_64                                                            2.4.6-97.el7.centos.4                                                            updates
httpd.x86_64                                                            2.4.6-97.el7.centos.5                                                            updates
httpd.x86_64                                                            2.4.6-98.el7.centos.6                                                            updates
httpd.x86_64                                                            2.4.6-98.el7.centos.7                                                            updates
httpd.x86_64                                                            2.4.6-99.el7.centos.1                                                            updates
[root@localhost ~]#
```
epelのリポジトリではhttpdの最新2.4.62をインストールできない
```
# yum --enablerepo=epel install httpd -y
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: repo.jing.rocks
 * remi-safe: cdn.centos.no
パッケージ httpd-2.4.6-99.el7.centos.1.x86_64 はインストール済みか最新バージョンです
何もしません
```

2.4.6-99のバージョンがepelの最新版の様に見えます
```
[root@localhost ~]# yum --enablerepo=epel list httpd --showduplicates
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: repo.jing.rocks
 * remi-safe: cdn.centos.no
利用可能なパッケージ
httpd.x86_64                                                            2.4.6-95.el7.centos                                                              base
httpd.x86_64                                                            2.4.6-97.el7.centos                                                              updates
httpd.x86_64                                                            2.4.6-97.el7.centos.1                                                            updates
httpd.x86_64                                                            2.4.6-97.el7.centos.2                                                            updates
httpd.x86_64                                                            2.4.6-97.el7.centos.4                                                            updates
httpd.x86_64                                                            2.4.6-97.el7.centos.5                                                            updates
httpd.x86_64                                                            2.4.6-98.el7.centos.6                                                            updates
httpd.x86_64                                                            2.4.6-98.el7.centos.7                                                            updates
httpd.x86_64                                                            2.4.6-99.el7.centos.1                                                            updates
```
### IUSリポジトリで試しました
以下のサイトが非常に参考になりました。
http://labo-blog.aegif.jp/2020/08/centos7apache-httpd2443iusurl.html

IUSのリポジトリを追加しました
```
# yum -y install https://repo.ius.io/ius-release-el7.rpm
```
※iusのリポジトリ「/etc/yum.repos.d/ius.repo」をenable=0にする。

apacheを停止する
```
# systemctl stop httpd
# systemctl disable httpd.service
```
yumのパッケージをアンインストールしました。
```
yum remove httpd
yum remove httpd-tools
```
最新のhttpdをインストールしました
```
[root@localhost ~]# yum --disablerepo=base,extras,updates --enablerepo=ius -y install httpd httpd-devel
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: repo.jing.rocks
 * remi-safe: cdn.centos.no
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ httpd24u.x86_64 0:2.4.58-1.el7.ius を インストール
--> 依存性の処理をしています: httpd24u-tools = 2.4.58-1.el7.ius のパッケージ: httpd24u-2.4.58-1.el7.ius.x86_64
---> パッケージ httpd24u-devel.x86_64 0:2.4.58-1.el7.ius を インストール
--> 依存性の処理をしています: apr15u-util-devel >= 1.5.0 のパッケージ: httpd24u-devel-2.4.58-1.el7.ius.x86_64
--> 依存性の処理をしています: apr15u-devel >= 1.5.0 のパッケージ: httpd24u-devel-2.4.58-1.el7.ius.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ apr15u-devel.x86_64 0:1.5.2-2.ius.el7 を インストール
---> パッケージ apr15u-util-devel.x86_64 0:1.5.4-3.ius.el7 を インストール
---> パッケージ httpd24u-tools.x86_64 0:2.4.58-1.el7.ius を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================================================================================================
 Package                                     アーキテクチャー                 バージョン                                    リポジトリー                   容量
================================================================================================================================================================
インストール中:
 httpd24u                                    x86_64                           2.4.58-1.el7.ius                              ius                           1.4 M
 httpd24u-devel                              x86_64                           2.4.58-1.el7.ius                              ius                           221 k
依存性関連でのインストールをします:
 apr15u-devel                                x86_64                           1.5.2-2.ius.el7                               ius                           194 k
 apr15u-util-devel                           x86_64                           1.5.4-3.ius.el7                               ius                            77 k
 httpd24u-tools                              x86_64                           2.4.58-1.el7.ius                              ius                            92 k

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

総ダウンロード容量: 2.0 M
インストール容量: 6.6 M
Downloading packages:
(1/5): apr15u-util-devel-1.5.4-3.ius.el7.x86_64.rpm                                                                                      |  77 kB  00:00:05
(2/5): httpd24u-2.4.58-1.el7.ius.x86_64.rpm                                                                                              | 1.4 MB  00:00:00
(3/5): apr15u-devel-1.5.2-2.ius.el7.x86_64.rpm                                                                                           | 194 kB  00:00:06
(4/5): httpd24u-tools-2.4.58-1.el7.ius.x86_64.rpm                                                                                        |  92 kB  00:00:00
(5/5): httpd24u-devel-2.4.58-1.el7.ius.x86_64.rpm                                                                                        | 221 kB  00:00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                            323 kB/s | 2.0 MB  00:00:06
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : apr15u-devel-1.5.2-2.ius.el7.x86_64                                                                                             1/5
  インストール中          : apr15u-util-devel-1.5.4-3.ius.el7.x86_64                                                                                        2/5
  インストール中          : httpd24u-tools-2.4.58-1.el7.ius.x86_64                                                                                          3/5
  インストール中          : httpd24u-2.4.58-1.el7.ius.x86_64                                                                                                4/5
  インストール中          : httpd24u-devel-2.4.58-1.el7.ius.x86_64                                                                                          5/5
  検証中                  : apr15u-util-devel-1.5.4-3.ius.el7.x86_64                                                                                        1/5
  検証中                  : httpd24u-devel-2.4.58-1.el7.ius.x86_64                                                                                          2/5
  検証中                  : httpd24u-tools-2.4.58-1.el7.ius.x86_64                                                                                          3/5
  検証中                  : httpd24u-2.4.58-1.el7.ius.x86_64                                                                                                4/5
  検証中                  : apr15u-devel-1.5.2-2.ius.el7.x86_64                                                                                             5/5

インストール:
  httpd24u.x86_64 0:2.4.58-1.el7.ius                                          httpd24u-devel.x86_64 0:2.4.58-1.el7.ius

依存性関連をインストールしました:
  apr15u-devel.x86_64 0:1.5.2-2.ius.el7             apr15u-util-devel.x86_64 0:1.5.4-3.ius.el7             httpd24u-tools.x86_64 0:2.4.58-1.el7.ius

完了しました!
```
2.4.58のバージョンになりました。
```
[root@localhost ~]# httpd -v
Server version: Apache/2.4.58 (IUS)
Server built:   Oct 26 2023 16:56:39
```
最新のパッケージは2.4.58です
```
[root@localhost ~]#  yum --enablerepo=ius list httpd24u --showduplicates
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: repo.jing.rocks
 * remi-safe: cdn.centos.no
インストール済みパッケージ
httpd24u.x86_64                                                              2.4.58-1.el7.ius                                                               @ius
利用可能なパッケージ
httpd24u.x86_64                                                              2.4.57-1.el7.ius                                                               ius
httpd24u.x86_64                                                              2.4.58-1.el7.ius                                                           ius
```
IUSでapacheのサービスをインストールするとパッケージ名がhttpd24uになるところが個人的には気になります。
```
# yum list installed | grep httpd
httpd24u.x86_64                    2.4.58-1.el7.ius           @ius
httpd24u-devel.x86_64              2.4.58-1.el7.ius           @ius
httpd24u-filesystem.noarch         2.4.58-1.el7.ius           @ius
httpd24u-tools.x86_64              2.4.58-1.el7.ius           @ius
```
### まとめ
私の試した限りでは現在 valutのリポジトリにあるapacheの最新は2.4.6です。
remiとepelも同様にapacheの最新は2.4.6でした。
IUSリポジトリはapacheについて2.4.58が一番最新でした。
しかしIUSはパッケージ名がhttpd24uになるため、個人的には本番環境での利用は慎重になります。

以下のサイトからCentOS7の場合はコンパイルして最新のパッケージを入れる必要があります。
https://downloads.apache.org/httpd/

本番環境でのコンパイルには慎重さが求められます。コンパイルに必要な多くのパッケージをサーバーにインストールする必要があり、その過程でエラーが発生することがあります。これらの問題を解決するためには、適切なスキルと知識が必要です。

CentOS 7環境で利用可能なVaultリポジトリやEPEL/Remi、IUSリポジトリでは、現在のところApacheのバージョン2.4.58以下のみが提供されています。最新のApacheバージョンを手動でコンパイルして導入することは可能ですが、それには高度なパッケージ管理スキルが求められる上、コンパイルに必要な多くの依存パッケージもインストールする必要があります。このプロセスは時間と手間がかかるため、可能であれば早急にCentOS 7から新しいOSへの移行を検討することを強くお勧めします。新しいOS環境では、最新のパッケージとセキュリティアップデートが継続的に提供され、より安全かつ効率的な運用が可能となります。