ApacheでHTTP/2.0対応してレスポンスを早くする

Apacheのインストール

yum install httpd

yumコマンドでインストールできます。

rpm -qa | grep httpd

確認はrpmコマンドで行います。表示されれば正常にインストールできています。

certbot-autoのインストール

HTTP/2.0では、SSL化が必須となります。
無料で使用できる、Let’s Encryptを使用していきます。

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chmod 755 /usr/local/bin/certbot-auto

これでcertbot-autoコマンドが使用できるようになると思います。

Apacheのhttpの設定

http(80番ポート)の設定を行っていきます。

<VirtualHost http2-test.com:80>
 ServerName http2-test.com
 LogLevel warn
 ErrorLog logs/error_log
 CustomLog logs/access_log combined
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{SERVER_PORT} !^443$
  RewriteRule ^/(.*)$ https://http2-test.com/$1 [R=301,L]
 </IfModule>
</VirtualHost>

上記の設定を/etc/httpd/conf.d/http2-test.confに設定します。

apachectl configtest

apachectlコマンドで設定の確認を行います。

systemctl start httpd

systemctlコマンドでhttpdを起動します。

SSL証明書のインストール

SSL証明書のインストールはとても簡単です。

certbot-auto certonly --apache

先程インストールしたcertbot-autoコマンドでインストールします。
certbot-autoコマンドを実行すると/etc/letsencrypt/live/http2-test.comに証明書がインストールされます。

Apacheのhttpsの設定

https(443番ポート)の設定を行っていきます。
先程作成した、/etc/httpd/conf.d/http2-test.confの末尾に設定を追加していきます。

<VirtualHost http2-test.com:443>
 ServerName http2-test.com
 DocumentRoot "/var/www/html"
 LogLevel warn
 ErrorLog logs/error_log
 CustomLog logs/access_log combined
 SSLEngine On
 SSLProtocol -all +TLSv1.2
 SSLCertificateFile /etc/letsencrypt/live/http2-test.com/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/http2-test.com/privkey.pem
 Protocols h2 http/1.1
 <Directory "/var/www/html/">
  AllowOverride All
  Require all granted
 </Directory>
</VirtualHost>

これでVirtualHostの設定は完了です。

mpmの設定

HTTP/2.0対応するにあたり、mpmの設定を変更しなければなりません。
デフォルトではmpm_prefork_moduleを使用していますが、mpm_event_moduleに変更します。

変更前

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_event_module modules/mod_mpm_event.so

変更後

#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
LoadModule mpm_event_module modules/mod_mpm_event.so

/etc/httpd/conf.modules.d/00-proxy.confの設定を変更します。

StartServers           4
MinSpareThreads        4
MaxSpareThreads        4
ThreadsPerChild        4
MaxRequestWorkers      16
MaxConnectionsPerChild 500

/etc/httpd/conf.d/mpm.confに上記の設定をします。
これで設定は完了です。

systemctl restart httpd

Apacheの再起動を行い、設定を反映させて完了です。