事前知識なく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の場合は次の画面が表示されます。
以上で、HTTP/2、SSL対応した最新バージョンのApacheのインストールが完了です。
もし、表示されない場合は次の原因が考えられます。
- Apacheが起動していない。
Apacheを起動してください。 - ファイアウォールの設定によりWeb(ポート番号80番、443番)が遮断されている。
さくらのVPS の場合は、パケットフィルタが原因の可能性が高いので、次の記事をご覧ください。
【Linuxサーバー構築(CentOS 7)】さくらのVPSでApacheをインストール後、ブラウザでサイトにアクセスできない。なぜ?
PHPのインストールや、Apacheの各種設定については別記事で書こうと思います。