前々からやりたかったことがあった。
それはこのブログを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
設定はこれでおしまい。
アドレスバーに鍵マークが表示されていれば終了です。
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で開いて、コンソールを確認してみると、
Protocolがh2になっていればHTTP/2の設定は終了。
表示は半端無く速くなった!
関連記事
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を導入した