CentOS7系 + Apache2.4最新版yumインストール


修正履歴

  • 2021/04/07 iusリポジトリのURLが変更になっていたのに(やっと)気づいたので修正

はじめに

環境

  • asianux7(※CentOS7.2相当)※ゲストOS、本番環境で試せないことを手軽に試すためにWinPCに試用版を導入
  • Windows10 Professional ※ホストOS
  • VirtualBox5.1.30
  • Vagrant1.9.8

本記事の目的

CentOS7でApache2.4をインストールすると 2.4.6 という古いバージョンが入ります。
今回の記事は 2.4.6 から最新の 2.4.29 に入替えたときのメモです。
ググるとソースからインストールする系の情報が多くヒットしますが、yumで最新版を入れたかったので、そのときの手順を備忘録として投稿します。
PHPの入れ直しも発生したので一部PHPインストールについても記載します。(むしろPHPでてこずったのでそちらをメインにしようかとも思っていたのですがショボい話だったので端折ります)

参考URL

以下のサイトを参考に作業しました。

CentOS7にApache2.4最新版をyum installする(w3g.jp)

作業メモ

rootで作業しました。root以外の場合、適宜 sudo を付けて作業します。

epelリポジトリ

HTTP/2用コアエンジン Nghttp2 インストール用です。
既にリポジトリがある場合はスキップ。

epelリポジトリのインストール
# yum -y install epel-release

ターゲットのソフトウェアをインストールするときだけepelを使用する様にデフォルトから外しておくことを推奨します。

有効化(enable)を外す
# vi /etc/yum.repos.d/epel.repo

[epel]
(略)
enabled=0 ←※0にする
(略)

Remiリポジトリ

PHPインストール用です。既にリポジトリがある場合はスキップ。
メンテナンス等でたまにRemiリポジトリ公式サイトへ繋がらないときがあるようです。
その場合はタイミングをずらして試してみてください。
またはミラーサイトを利用します。
(参考URL)
yumでremiリポジトリが落ちたときの対応

Remiリポジトリのインストール
# yum -y install "http://rpms.famillecollet.com/enterprise/remi-release-7.rpm"

iusリポジトリ

Apacheの最新版のインストール用です。
iusはCentOS/RedHad用の最新ソフトウェアのrpmを提供するプロジェクトです。

iusリポジトリのインストール
# yum install -y https://repo.ius.io/ius-release-el7.rpm

最新版のソフトウェアをインストールするときだけiusを使用する様にデフォルトから外しておくことを推奨します。

有効化(enable)を外す
# vi /etc/yum.repos.d/ius.repo

[ius]
(略)
enabled=0 ←※0にする
(略)

HTTP/2コアエンジン、/etc/mime.types

Nghttp2インストール
# yum --enablerepo=epel -y install nghttp2

mime.typesはmailcapパッケージに含まれます。

mailcapパッケージのインストール
# yum -y install mailcap

古いバージョンのhttpd、httpd-toolsを削除

yum update を試してみたけどコンフリクト(バージョンの競合)が起きました。
なので、古いバージョンを削除してから新しいバージョンを入れます。
httpd.confなどの設定はなくなるので必要に応じてバックアップしておきます。

httpdを削除
# systemctl stop httpd
# yum remove httpd

古いバージョンのhttpdを削除する際、道連れで削除されるパッケージがあるのでメモっておいて後でインストールし直します。
実はこの時PHPのパッケージが削除されていたのですが、 php -v で確認したところ普通に動いたので無視していたら後で苦労することに・・・

古いバージョンのhttpd-toolsが残っていると新しいhttpdのインストールの際にコンフリクトが起きるのでこれも削除します。

httpd-toolsを削除
# yum remove httpd-tools

Apache2.4最新版インストール

やっと本題のApache2.4最新版のインストールです。
既存のリポジトリを無効(--disablerepo)にして、iusリポジトリを有効(--enablerepo)にします。

Apache2.4最新版インストール
# yum --disablerepo=base,extras,updates --enablerepo=ius -y install httpd

追加パッケージのインストール

必要に応じて追加のパッケージをインストールします。
httpd-develとmod_sslを入れました。

openldap-devel、expat-devel、httpd-devel、mod_sslインストール
# yum -y install openldap-devel expat-devel
※http-develで必要
# yum --disablerepo=base,extras,updates --enablerepo=ius -y install httpd-devel mod_ssl

設定など

httpd.confへの設定については割愛します。
設定変更したら必ず httpd -tでシンタックスのチェックをしましょう(これ重要)。

httpd起動、再起動、停止、自動起動設定

httpd起動・停止など
(起動)
# systemctl start httpd
(再起動)
# systemctl reload httpd
(停止)
# systemctl stop httpd
(自動起動設定※サーバ起動時に自動で起動する)
# systemctl enable httpd

PHP(再)インストール

phpのコンテンツが表示されずに「おかしいな。おかしいな。」と思っていましたが、古いバージョンのhttpdを削除したときにPHPも一緒に削除されていました。
php -v でちゃんと動くので見落としがちですが、 rpm -qa | grep php で確認するとパッケージがなくなっていることが確認できます。

Remiリポジトリから必要なバージョンを選んでPHPをインストールします。
remi-php72を有効にしてphp7.2.1をインストールしました。

PHPインストール
# yum --enablerepo=remi-php72 -y install php

PHPのインストールにより、/etc/httpd/modules/にlibphp7.soが入り、/etc/httpd/conf.modules.d/15-php.confからLoadModuleしてくれます。

おわりに

やってみて古いパッケージを残しつつ、ソースからインストールの方がよほど楽なんじゃないかなとも思いました(笑)
公に(商用向けなど)Apacheを使っている場合はHTTP/2を使いたい等相当な理由がない限りバージョンアップは慎重に検討すべきと思います。