ApacheCentOS 7WordPress APRAPR-utilBrotliLAMPnghttp2OpenSSL自宅サーバ

最新のローカル LAMP 環境で WordPress を構築する〜Apache httpd の設置準備|CentOS 7

wordpress-apache2.4.39-logo Apache
スポンサーリンク

Apache httpd 2.4.39 の設置準備

WordPress の最新版である 5.2.2 を使うために、LAMP 環境 をすべて最新の状態にアップグレードした上で HTTPS を適用します。また、WordPress を高速化するため、Apache httpd 2.4.39event MPMPHP-FPM を利用してウェブサイトのスピードを向上できる環境を作ります。

※ 2019/10/15 追記
WordPress 5.2.4 でも正常動作します。

最近の LAMP 関連のリリース情報まとめ
  • 2018年4月
    MySQL8.0 Release、5.x 系より最大 2 倍に高速化
  • 2018年8月
    RFC8446 ( TLS1.3 標準仕様 ) 発表
  • 2018年10月
    APACHE httpd2.4 の TLS1.3 サポート
  • 2018年12月
    PHP7.3 および WordPress5.0 Release
  • 2019年2月26日
    OpenSSL 1.1.1(b) Release
  • 2019年4月01日
    Apache httpd 2.4.39 Released
  • 2019年5月02日
    PHP 7.3.5 Release
  • 2019年5月21日
    WordPress 5.2.1 Release
  • 2019年5月28日
    OpenSSL 1.1.1(c) Release
  • 2019年5月30日
    PHP 7.3.6 Release
  • 2019年6月18日
    WordPress 5.2.2 Release

これから上記の最新版をインストールして行きます。

「最新のローカル LAMP 環境で WordPress を構築する」は、4編に分けてあります。他の記事は ▼ をご参照ください。

パッケージ|Before

  • CentOS 7.6.1810 (Core)
  • OpenSSL 1.0.2k-fips 26 Jan 2017
  • PHP 5.6
  • Apache 2.4.6
  • mysql-community-common-5.7.26-1.el7.x86_64
  • WordPress 4.5

パッケージ|After

  • CentOS 7.6.1810(Core)
  • OpenSSL 1.1.1c 28 May 2019
  • nghttp nghttp2/1.39.1
  • Brotli-1.0.7
  • PHP 7.3.6 (cli) (built: May 28 2019 09:32:59) ( NTS )
  • apr-1.7.0
  • apr-util-1.6.1
  • Apache/2.4.39 (Unix)
  • mysql  Ver 8.0.16 for Linux on x86_64 (MySQL Community Server – GPL)
  • WordPress 5.2.2

CentOS 7

[root@centos7 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

開発ツールをインストール

yum -y groupinstall base
yum -y groupinstall development
yum -y groupinstall network-tools

設置済みのパッケージをアップデート

設置されたパッケージをすべて最新版にアップデートします。(ご自身の環境によって時間が多少掛かる場合があります)

yum -y update

Apache httpd 2.4.39 の設置準備 | OpenSSL

Apache httpd 2.4 に TLS1.3HTTP/2、新しい圧縮アルゴリズムである Brotli に対応させるため Apache httpd 2.4 設置に必要なライブラリをインストールします。

設置準備 ❶:TLS 1.3 に対応させるため OpenSSL 1.1.1 を設置

Apache HTTP Server 2.4.39 以降 TLS 1.3 を適用するためには OpenSSL 1.1.1 バージョンが必須です。

OpenSSL のバージョンを確認

# Before
[root@centos7 ~]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017

# After
[root@centos7 ~]# openssl version
OpenSSL 1.1.1c  28 May 2019

現在の OpenSSL パッケージ情報を確認してみます。 ( 選択 )

[root@centos7 src]# yum info openssl
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * atomic: mirrors.hosting.in.th
 * base: ty1.mirror.newmediaexpress.com
 * epel: ftp.jaist.ac.jp
 * extras: ty1.mirror.newmediaexpress.com
 * remi-safe: ftp.riken.jp
 * updates: ty1.mirror.newmediaexpress.com
Installed Packages
Name        : openssl
Arch        : x86_64
Epoch       : 1
Version     : 1.0.2k
Release     : 16.el7_6.1
Size        : 814 k
Repo        : installed
From repo   : updates
Summary     : Utilities from the general purpose cryptography library with TLS implementation
URL         : http://www.openssl.org/
License     : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications between
            : machines. OpenSSL includes a certificate management tool and shared
            : libraries which provide various cryptographic algorithms and
            : protocols.

OpenSSL のコンパイルに必要なパッケージをインストールします

yum -y install zlib-devel
yum -y install perl-core

OpenSSL の最新版を確認してインストールします。

OpenSSL の 最新版 を確認します。(2019/06/19現在)

インストールします。

cd /usr/local/src
 wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz
 tar xvzf openssl-1.1.1c.tar.gz

 cd openssl-1.1.1c
 ./config --prefix=/usr/local/openssl-1.1.1c shared zlib

 make depend
 make
 make test
 make install

設置された OpenSSL 1.1.1 ライブラリのパスを認識させます

openssl111.conf という名前で新しいファイルを作ります。(ファイル名は任意)

# 重複しないようにファイル名をチェックします。
[root@centos7 ~]# ls /etc/ld.so.conf.d/
...

# ファイルを作成
[root@centos7 ~]# echo /usr/local/openssl-1.1.1c/lib > /etc/ld.so.conf.d/openssl111.conf

# ライブラリのパスを認識させる
[root@centos7 ~]# ldconfig

パス認識に失敗した場合、No such file or directory エラーが発生します。

[root@centos7 ~]# openssl version
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

openSSL の実行ファイルを新しいバージョンに書き換えます

mv /bin/openssl /root/
ln -s /usr/local/openssl-1.1.1c/bin/openssl /bin/openssl

適用されたバージョンを確認して TLS 1.3 に対応できるか確認します。

[root@centos7 ~]# openssl version
OpenSSL 1.1.1c  28 May 2019

[root@centos7 ld.so.conf.d]# openssl ciphers -v | grep "TLSv1.3" | sort
TLS_AES_128_GCM_SHA256  TLSv1.3 Kx=any      Au=any  Enc=AESGCM(128) Mac=AEAD
TLS_AES_256_GCM_SHA384  TLSv1.3 Kx=any      Au=any  Enc=AESGCM(256) Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any      Au=any  Enc=CHACHA20/POLY1305(256) Mac=AEAD

他のサイトの openSSL 情報も確認できます。

[root@centos7 ~]# openssl s_client -connect google.com:443

Apache httpd 2.4.39 の設置準備 | Nghttp 2

設置準備 ❷ : Nghttp 2 インストール

HTTP/2 ( mod_http2 ) のコアエンジンである Nghttp 2 をインストールするためにコンパイルに必要なパッケージをインストールします。

yum -y install jansson-devel
yum -y install libev-devel
yum -y install c-ares-devel

Nghttp 2 はバージョン 1.35.0 から C++14 が必要です。

CentOS7 の場合、Software Collections(SCL) レポジトリから devtoolset-7 パッケージをインストールして有効化できます。

yum -y install centos-release-scl
yum -y install devtoolset-7
scl enable devtoolset-7 bash

上記を適用しないとエラー発生 :

/usr/include/c++/4.8.2/bits/c++0x\_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

Nghttp 2 の最新版を確認してインストールします。

Nghttp 2 の 最新版 を確認します。(2019/06/19現在)

インストールします。

cd /usr/local/src
wget https://github.com/nghttp2/nghttp2/releases/download/v1.39.1/nghttp2-1.39.1.tar.gz
tar xvzf nghttp2-1.39.1.tar.gz

cd nghttp2-1.39.1/
scl enable devtoolset-7 bash

# OPENSSL_CFLAGSと OPENSSL_LIBS 環境変数に先ほど設置した openssl-1.1.1c を指定してコンパイルします。
env OPENSSL_CFLAGS="-I/usr/local/openssl-1.1.1c/include" \
OPENSSL_LIBS="-L/usr/local/openssl-1.1.1c/lib -lssl -lcrypto"

./configure -enable-app    # エラーの場合、-std=c++11 を追加する

make
make install

HTTP/2 のライブラリである libnghttp2 の設置場所:/usr/local/llib

[root@centos7 nghttp2-1.39.1]# ls /usr/local/lib/libnghttp2.*
/usr/local/lib/libnghttp2.a   /usr/local/lib/libnghttp2.so     /usr/local/lib/libnghttp2.so.14.17.3
/usr/local/lib/libnghttp2.la  /usr/local/lib/libnghttp2.so.14  /usr/local/lib/libnghttp2.so.14.17.4

Nghttp 2 関連のコマンドの設置場所:/usr/local/bin

[root@centos7 nghttp2-1.39.1]# ls /usr/local/bin/nghttp*
/usr/local/bin/nghttp  /usr/local/bin/nghttpd  /usr/local/bin/nghttpx

適用された Nghttp 2 のバージョンを確認

[root@centos7 nghttp2-1.39.1]# nghttp --version
nghttp nghttp2/1.39.1

Apache httpd 2.4.39 の設置準備 | Brotli

設置準備 ❸:新しい圧縮アルゴリズムである Brotli を適用します。

コンパイルに必要な cmake をインストールします。

yum -y install cmake

最新版を確認してインストールします。

Brotli最新版 を確認します。(2019/06/19現在)

インストールします。

cd /usr/local/src/
wget https://github.com/google/brotli/archive/v1.0.7.tar.gz
tar xvzf v1.0.7.tar.gz

cd brotli-1.0.7/
mkdir out && cd out

../configure-cmake

make
make test
make install

Brotli のライブラリの設置場所:/usr/local/lib/

[root@centos7 brotli-1.0.7]# ls  /usr/local/lib |grep libbrotli*
libbrotlicommon.so
libbrotlicommon.so.1
libbrotlicommon.so.1.0.7
libbrotlicommon-static.a
libbrotlidec.so
libbrotlidec.so.1
libbrotlidec.so.1.0.7
libbrotlidec-static.a
libbrotlienc.so
libbrotlienc.so.1
libbrotlienc.so.1.0.7
libbrotlienc-static.a

設置された Brotli ライブラリのパスを認識させます

usr-local-lib.conf という名前で新しいファイルを作ります。(ファイル名は任意)

# 重複しないようにファイル名をチェックします。
[root@centos7 ~]# ls /etc/ld.so.conf.d/
...

# ファイルを作成
[root@centos7 ~]# echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf

# ライブラリのパスを認識させる
[root@centos7 ~]# ldconfig

Apache httpd 2.4.39 の設置準備 | APR・APR-util

設置準備 ❹:APR と APR-util インストール

Apache httpd 2.4.39 をコンパイルしてインストールする場合は Apache Portable Runtime ( APR ) が必要なので、APRAPR-util の最新版をインストールします。

yum -y install pcre-devel
yum -y install expat-devel

APR の最新版を確認してインストールします。

APRAPR-util 最新版 を確認します。(2019/06/19現在)

インストールします。

ARP
cd /usr/local/src/
wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.7.0.tar.gz
tar xvzf apr-1.7.0.tar.gz

cd apr-1.7.0/
./configure

make
make install
APR-util
cd /usr/local/src/
wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.6.1.tar.gz
tar xvzf apr-util-1.6.1.tar.gz

cd apr-util-1.6.1/
./configure --with-apr=/usr/local/apr

make
make install

以上、Apache の設置準備が完了しました。
次回ApachePHP をインストールして設定を行います。

参考文献

How to upgrade OpenSSL on Centos 7 or RHEL 7
Nghttp2: HTTP/2 C Library
Use C++14
Apache Portable Runtime Project

スポンサーリンク

コメント

タイトルとURLをコピーしました