はじめに
このたび、非常に地味ながらサイト・リニューアルをしました。何が変わったのかというと、ほぼ見た目以外の部分です。なので地味ではありますが、何が変わったのか、そんなことを書いてみたいと思います。
なお、移行作業中は基本的にメンテナンス表示に切り替えていましたが、ごく短いタイミングでエラー表示がなされているところに遭遇された方も一人二人ほどいらっしゃるかと思います。お見苦しい表示をお見せしていまい申し訳ありませんでした。
変わった部分
さて、早速今回のリニューアルで変わった部分を列挙してみたいと思います:
- OSが変わった → CentOS 7からCentOS 8へ
- URLが変わった → HTTPからHTTPSへと変更
- プロトコルが変わった → HTTP/1.1からHTTP/2へと変更
- ソーシャル・ボタンの撤去
それぞれ、なにをどうして変えたのか、順番に説明をしていきます。
CentOS 7からCentOS 8へ変更した理由
これまで、The CentOS Projectが提供するCentOS 7を使用してきました。※1これをCentOS 8に変更しました。変更した理由は大きく分けて2つあります。
そのうちの1つはCentOS 7の標準リポジトリーで使用することができるPHPのバージョンがPHP 5.4であるというところにあります。これの何がまずいのかというと、本サイトを管理するために使用しているWordPressの最新版を動かすことができないということです。※2
これがCentOS 8ではPHP 7.2となっており、最新版のWordPressを動かすことができます。WordPressでサイトを管理するのであれば、最新版を追いかける必要があり、これが最も大きな理由となりました。とはいえ、WordPressのサイトを見ると今現在はPHP 7.3推奨なのがつらいところです。ちなみに今回の移行までは、手動インストールでPHP 5.4に対応する系統の最終版である5.1ブランチを追いかけていました。
もう1つの理由はCentOS 7ではApache HTTP serverのデフォルトMPM※3の設定がmpm_prefork_module
でしたが、CentOS 8ではデフォルトでmpm_event_module
へと変更になっており、同時にPHPの動作形態もApache HTTP serverのプロセス内で動作する方式から独立した専用のプロセスで動作するphp-fpmへと変更になっています。
これにより、特に設定変更などを考えずにApache HTTP serverとPHPをインストールするだけで、最初からEvent MPMとphp-fpmの構成が使用できることになります。さらに言えば、デフォルトであるということは動作実績が十分で信頼に値するであろうという安心感があるということでもあります。そして、この構成がなぜ好ましいのかというと後述するHTTP/2対応のために必要とされるからです。
CentOS 8に変えて困ったこと
CentOS 8の標準リポジトリーにはApache Tomcatが存在しなくなりました。これが一番困りました。仕方なく、ここだけ手動でダウンロード&インストールを行いました。あとで最新バージョンを追いやすいような工夫をしましたが、CentOS 8の標準レポジトリーだけで更新を完結したいという目的は断念せざるを得ませんでした。
Apache Tomcatが存在しないことに気づいたとき、思わず他のディストリビューションに乗り換えようか、Amazon EC2とAmazon Linux 2の環境へと移行するかなどとも一瞬考えたのですが、今回は踏みとどまってみました。次回はちょっと考えるかもしれません。※4
HTTPからHTTPSへと変更した理由
これも理由は2つあります。
1つ目は時代が常時HTTPS※5を求めているからです。各社のブラウザーでも無印HTTPではいろいろと警告が出るようになっていますし、偽サイトへの接続と区別がつかないという状況もよくないというのはその通りであり、DV証明書※6であればコストも年間で1000円程度と低いので、導入をしなければと常々思っていました。
2つ目の理由は後述するHTTP/2を導入したかったからです。HTTP/2はその実装上HTTPS接続であることが前提となっています。このことからHTTP/2を使用したければ必然的に常時HTTPSを実現する必要があったのです。※7
このように2つの動機が後押しをしました。
HTTP/1.1からHTTP/2へと変更した理由
OSを変更した理由と常時HTTPS化した理由でも切り替える理由として挙げましたが、HTTP/2を使用するように設定を変更しました。
HTTP/2を使用すると通信プロトコルで発生する遅延が最小化され、データの転送が効率的になります。またヘッダーの圧縮も行われるので通信量も削減されます。スマートフォンなどの公衆網など、通信量で費用が発生する環境下ではこれはメリットとなりえるとともに、表示速度の向上が見込まれるわけですから、ぜひ導入しておきたいと考えました。
それと技術的な面での理由もあります。私が担当しているサーバー群には、まだ明示的にHTTP/2を導入しているものがなく、様子を見てみたいということも理由の一部としてありました。※8
ちなみに当サイトでは以前※9からHTMLなどは圧縮転送をするように設定しています。
ソーシャル・ボタンの撤去
これが今回唯一変わった見た目にかかわる部分です。
WordPressの更新とともに、テンプレートも最新のものをベースに当サイト専用のカスタマイズをやり直しました。それと同時にソーシャル・ボタン(はてなブックマーク、Twitter、Facebookなど)を撤去しました。その点が大きな見た目の違いです。いえ、全体から見れば小さな違いですよね。言われないと気付けないくらいかもしれません。
撤去した理由ですが、自分のサイト内に他サイトのサービスを呼び出すようなコードの埋め込みをしたくない気分になっていたことと、それらによってページの表示速度に遅延(と通信量の増加)が生じるのではないかという思いがあったことによります。当サイトは広告料を得るために設置しているわけではないので、あまり積極的にビュー数を稼ぐようなことをする必要がないというのも理由です。
まとめ
クラウドで各種サービスがあり、それらを選択あるいはいくつか組み合わせれば同等のサイトを構成できる中で、あえて手動でOSを入れて、HTTPサーバーを入れて、PHPを入れて、MariaDB※10とWordPressをインストールしてなどとやっているのですから、こういった部分を趣味的に楽しみたいというところが大きな目的の一つとなっています。仕事で設置しているサイトとは全く逆向きなのが、私としては趣味的でやっていて楽しいと感じられるのです。
- CentOSはRed Hat, Inc.の製品であるRed Hat Enterprise Linux(RHEL)互換のOSです。
- PHP 最低必須バージョンの変更 | WordPress.org 日本語より引用:
お使いのサーバーでサポート対象外バージョンの PHP が稼働している場合、 WordPress 更新ツールは WordPress 5.2 をサイトに提供しません。WordPress を手動で更新しようとした場合、作業は失敗するでしょう。最新の WordPress 機能を使い続けたい場合は PHP をより新しいバージョンにアップグレードする必要があります。
- 現在はさくらインターネットのさくらのVPS内に当サイトは存在しています。
- 「常時SSL」という表現もありますが、私はこの表現は使いたくありません。というのも、現在HTTPSで使用されているプロトコルはTLS(Transport Layer Security)へと移り変わっているからです。SSL(Secure Sockets Layer)は古い規格でいくつかの脆弱性が指摘されている関係で現在では無効にすることが一般的になっています。そのような状況下で「常時SSL」とか「SSL証明書」とは言いたくないのです。TLSは技術用語の側面が強いので、個人的には「常時HTTPS」が良いのではないかと思います。証明書の方も「サーバー証明書」という一般名があるのでこちらを使うべきと考えています。
- ドメイン認証証明書のこと。該当するドメインの管理者からの証明書発行依頼であることを確認して発行される証明書がこれにあたります。ほかにはOV証明書(実在認証証明書)とEV証明書(拡張実在認証証明書)があり、運営団体が実在していることおよびドメインを所有していることを確認したうえで、それらの情報込みで証明書が発行されます。前者と後者の違いは、前者の方がドメイン登録情報の確認と一般的なと実在確認(電話をする、法人番号で実在確認をするなど)をして認証をするのに対して、後者は追加でより厳重な認証(法人代表者印の入った書類の提出を求めるなど)を行います。
- HTTP/2の規格上はHTTPSを必須とはしていませんが、各社ブラウザーの実装としてはHTTPSとともに使用するようになっていますので、事実上HTTPSとHTTP/2はセットで導入しなければ意味をなしません。
- 途中に入っているバランサーなりなんなりで外部から見るとHTTP/2になっているものはあるかもしれませんし、(仮想)サーバーではないクラウドのストレージ・サービスなどはすでに対応しているものも多数あるでしょう。
- 2003年から2004年位だったかと思います。当時使用していたApache HTTP serverのバージョンは1.3系で、圧縮モジュールに関しては標準では含まれておらず、別作者がソースコードの形で提供していたものを別途入手し、makeして組み込んでいました。
- MariaDBはOracle Corporationの管理するオープンソース・ソフトウェアであるMySQLからフォーク(分家)したもので、MariaDB Foundationが管理するオープンソース・ソフトウェアです。MariaDBはCentOS 7やCentOS 8の標準レポジトリーに含まれています。