前々からやりたかったことがあった。

それはこのブログをapache2.4 + PHP7 + Let's Encrypt + HTTP/2で表示の爆速化。

Goで運営しているサイトでLet's Encryptを利用してみた


前に使っていたサーバの更新があったので、

ちょうど良い機会だから共有サーバからVPSに乗り換えることにした。


ちなみにVPSはさくらの512ね。

http://vps.sakura.ad.jp/specification/#target_beginner


サーバ自体の操作はお世辞でも速いと言えないぐらいもっさりしたものだったけど、

PHP7 + HTTP/2はきっと速いのだろうと期待して頑張った。




早速、インストールしてみる。

PHP7のインストール手順は下記にあるのでここでは省略

さくらのVPSにPHP7を入れてSOY CMSを動かしてみた


ここで注意事項があって、

Apache2のインストールは

sudo apt-get install apache2

で入れてはいけない。


この方法で入れるとApache2.4ではあるけれど、

バージョンが古くて、HTTP/2を使うためのモジュールがありません。


なので、

リポジトリから最新のApache2.4をインストールするために、

sudo apt-get install python-software-properties software-properties-common
sudo add-apt-repository -y ppa:ondrej/apache2
sudo apt-get update
sudo apt-get install apache2

上記の手順でインストールを行った。


インストールが無事に終わっているか確認するために下記のコマンドを実行

apache2 -v
Server version: Apache/2.4.20 (Ubuntu)
Server built:   2016-05-05T00:00:00

Apache/2.4.20はHTTP/2が使用できるバージョンなので、このまま話を続ける。




一旦、Apacheの設定はここまでにしておいて、

ApacheでLet's Encryptを使用できるようにしてみる。


はじめにGitでLet's Encryptの設定のためのライブラリを取得する。


sudo apt-get update
sudo apt-get install git
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

上記コマンドでLet's Encryptを使用する準備ができた。


それではLet's Encryptの設定に入る。

cd /opt/letsencrypt
./letsencrypt-auto --apache -d {ドメイン}

このコマンドを実行すると、青い背景の画面が表示されるので、必要事項を記入してAgreeなりのボタンで進める。

※{ドメイン}にはSSL(https)にしたいサイトのドメインを入れる。

※うちのドメインはsaitodev.co


設定はこれでおしまい。


apache24pluslets


アドレスバーに鍵マークが表示されていれば終了です。


Let's Encryptは3ヶ月毎に更新しなければならないので、

この更新を自動化するためにcronの設定をしておく。

sudo crontab -e
0 4 * * * /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

毎日四時に更新すべきか調べて、切れていたら更新にしておく


2018年11月3日追記

Let's Encryptの自動更新は上記方法では行えなくなり、

この記事の最後にあるリンク先のページに記載されているCertBotを利用する必要があります。




Let's EncryptでブログのSSL対応が終わったら、

Apache2.4の方でHTTP/2のモジュールを有効にする。


sudo a2enmod http2
sudo emacs /etc/apache2/sites-available/000-default-le-ssl.conf

で、エディタが表示されたら、ServerNameの下の行あたりに

Protocols h2 http/1.1

を追加してファイルを保存する。


sudo /etc/init.d/apache2 restart

でApache2を再起動して、Chromeで開いて、コンソールを確認してみると、


chrome_http2_confirm


Protocolがh2になっていればHTTP/2の設定は終了。


表示は半端無く速くなった!


関連記事

Apacheサーバでバージョンの表示を隠す


2017年8月3日追記

Apache 2.4.27で標準の設定であるMPM_preforkを使用している場合、

HTTP/2の設定は無効になるように仕様変更された。

設定によってはアップグレードで突然使用できなくなるので注意

対応に関しては下記の記事をご覧ください。

Apache2.4.27の標準設定ではHTTP/2が使用できなくなったのでその対応


2018年11月1日追記

Let's Encryptの自動更新の方法を修正しました

ApacheでLet's Encryptの自動更新する為にCertBotを導入した