Linuxサーバー

【Linuxサーバー構築(CentOS 7)】最新バージョンのApacheのインストールと設定 (HTTP/2 & SSL対応) 2019年12月現在

サーバー

事前知識なくApacheをインストールしてはダメ

何も知識を持たずにApacheをyumコマンドでインストールしようとした場合、おそらく次のようなコマンドを実行するでしょう。

これはNG
# yum -y install httpd 

このコマンドを実行すると、Apacheバージョン2.4.6がインストールされてしまいます。
このバージョンは2013年にリリースされたモノであり、
HTTP/2などの新しい技術にも対応しておらず、
複数の脆弱性が発見されているため、使用するべきではありません。

最新バージョンのApacheをインストールしよう

Apache (httpd)の最新バージョンに必要なパッケージは、
「iusリポジトリ」と「epelリポジトリ」にありますので、それぞれインストールします。

まずは、epel-releaseパッケージのインストールです。

# yum -y install epel-release

エラーが出なければ成功です。
(もしくは、すでにインストールする場合があり、その場合も問題ありません。
 筆者が使っている「さくらのVPS 」では最初からインストールされていました。)

続いて、ius-releaseパッケージのインストールです。

# yum -y install "https://centos7.iuscommunity.org/ius-release.rpm"

エラーが出なければ成功です。

epelリポジトリ、iusリポジトリがデフォルトで使用されないようにする

epelリポジトリやiusリポジトリをインストールすると、yumコマンド実行時にそれらのリポジトリが優先されて使用されるようになります。
これらのリポジトリは、信頼性が高いものですが、CentOSの正式なパッケージではありませんので、
必要でない限りは使用できないよう、無効にしておきましょう。

修正箇所は以下のとおりです。

epelリポジトリのyum実行時のデフォルト使用無効化

対象の設定ファイル:/etc/yum.repos.d/epel.repo

# vi /etc/yum.repos.d/epel.repo

【修正前】
[epel]
(略)
enabled = 1

【修正後】
[ius]
(略)
enabled = 0

iusリポジトリのyum実行時のデフォルト使用無効化

対象の設定ファイル:/etc/yum.repos.d/ius.repo

# vi /etc/yum.repos.d/ius.repo

【修正前】
[ius]
(略)
enabled = 1

【修正後】
[ius]
(略)
enabled = 0

なお、デフォルト使用を無効化した場合、
yumコマンドのオプションで、
epelリポジトリを使用する場合は「 --enablerepo=epel」、
iusリポジトリを使用する場合は「--enablerepo=ius」を指定することで使用できます。

# yum --enablerepo=epel (以下略)
# yum --enablerepo=ius (以下略)

Nghttp2(HTTP/2コアエンジン)のインストール

Webサイトの表示速度の高速化技術である「HTTP/2」を使えるようにしましょう。
ApacheでHTTP/2の処理をすには、mod_http2を使います。
そのコアエンジンとしてNghttp2が必要になるのでインストールします。

# yum --enablerepo=epel -y install nghttp2

/etc/mime.typesのインストール

/etc/mime.typesパッケージを使用するため、mailcapパッケージをインストールします。
baseリポジトリなので「--enablerepo=***」の指定は不要です。

# yum -y install mailcap

Brotli(ブロートリ)のインストール

2019年12月現在、最新のApacheをインストールすると以下のエラーが発生しました。

Error: Package: httpd24u-2.4.41-1.el7.ius.x86_64 (ius)
           Requires: libbrotlienc.so.1()(64bit)

Brotli(圧縮パッケージ)のインストールが必要ですので、Brotliをインストールします。
Brotliはepelリポジトリにあります。
Brotliのインストールコマンドは次のとおりです。

# yum --enablerepo=epel -y install brotli

インストール済みApacheと関連パッケージのアンインストール

最新のApacheをインストールする前に、Apache(httpd)およびhttpd関連パッケージをアンインストールしておきましょう。
また、httpd関連パッケージを削除していなければ、以後の最新Apacheインストール時にコンフリクトエラーが発生する場合があ流ため、これらもアンインストールします。

インストール済みApache(httpd)を停止

# systemctl stop httpd

インストール済みApache(httpd)およびhttpd関連パッケージをアンインストール
(最後にを付与することでhttpd関連パッケージを全削除)

# yum remove httpd*

Apacheのインストール

さて、いよいよ本命のインストールです。
Apacheの最新バージョンを「iusリポジトリ」からインストールします。違うリポジトリからインストールされないよう、念のため「--disablerepo」オプションで対象外のリポジトリを明示的に指定しておきます。

# yum --disablerepo=base,epel,extras,updates --enablerepo=ius -y install httpd

その他必要パッケージのインストール

まずは「openldap-devel」と「expat-devel」をbaseリポジトリからインストールします。

# yum -y install openldap-devel expat-devel libdb-devel

続いて、「httpd-devel (httpdに関連する開発ツールやモジュールなどのパッケージ)」と「mod_ssl (SSL対応パッケージ)」をiusリポジトリからインストールします。

# yum --disablerepo=base,extras,updates --enablerepo=ius -y install httpd-devel mod_ssl

インストールが完了したら、次のコマンドでApacheが最新バージョンになっていることを確認しましょう。

# httpd -v
Server version: Apache/2.4.41 (IUS)
Server built:   Aug 25 2019 19:41:04

Apache(httpd)を起動します

# systemctl start httpd

Apache(httpd)のプロセスが起動されていることを確認します。

# ps ax | grep httpd
16382 ?        Ss     0:00 /usr/sbin/httpd -DFOREGROUND
16383 ?        Sl     0:00 /usr/sbin/httpd -DFOREGROUND
16384 ?        Sl     0:00 /usr/sbin/httpd -DFOREGROUND
16385 ?        Sl     0:00 /usr/sbin/httpd -DFOREGROUND
16386 ?        Sl     0:00 /usr/sbin/httpd -DFOREGROUND
16387 ?        Sl     0:00 /usr/sbin/httpd -DFOREGROUND
16430 ttyS0    R+     0:00 grep --color=auto httpd

Apache(httpd)の自動起動設定

もし、Linuxサーバー自身が再起動された時に、Apacheが自動起動されるように設定します。

# systemctl enable httpd

次のコマンドを実行し、「enabled」と表示されていれば自動起動されるように設定されています。

# systemctl is-enabled httpd 
enabled

ブラウザでの動作確認

ブラウザを使って「http://サーバーのIPアドレス」にアクセスすると、Apacheの場合は次の画面が表示されます。

Apacheのブラウザ動作確認

以上で、HTTP/2、SSL対応した最新バージョンのApacheのインストールが完了です。

もし、表示されない場合は次の原因が考えられます。

PHPのインストールや、Apacheの各種設定については別記事で書こうと思います。

-Linuxサーバー
-, , ,

Copyright© ハッピー・プログラミング・ライフ , 2020 All Rights Reserved.