『Apache httpd 2.4.39 の設置準備』編
WordPress の最新版である 5.2.2 を使うために、LAMP 環境 をすべて最新の状態にアップグレードした上で HTTPS を適用します。また、WordPress を高速化するため、Apache httpd 2.4.39 の event MPM と PHP-FPM を利用してウェブサイトのスピードを向上できる環境を作ります。
※ 2019/10/15 追記
WordPress 5.2.4 でも正常動作します。
- 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
パッケージ|After
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.3 と HTTP/2、新しい圧縮アルゴリズムである Brotli に対応させるため Apache httpd 2.4 設置に必要なライブラリをインストールします。
設置準備 ❶: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 ) が必要なので、APR と APR-util の最新版をインストールします。
yum -y install pcre-devel yum -y install expat-devel
APR の最新版を確認してインストールします。
APR と APR-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 の設置準備が完了しました。
次回 は Apache と PHP をインストールして設定を行います。
参考文献
How to upgrade OpenSSL on Centos 7 or RHEL 7
Nghttp2: HTTP/2 C Library
Use C++14
Apache Portable Runtime Project
コメント