はじめに
2020年4月29日に
このたび、非常に地味ながらサイト・リニューアルをしました。
という書き出しで、「地味なサイト・リニューアル」というメモを書きました。この中ではCentOS 7からCentOS 8への変更と、HTTPSやHTTP/2の導入などを行ったことを書いています。
本日(2023年1月7日)またサイト・リニューアルをしました。今回は見た目は何も変わらないので前回以上に地味なリニューアルをしたということで、このタイトルと書き出しで、そのことについて書いてみようと思います。前述のように、今回は前回よりも地味で、見た目の変更点は全くありません。
CentOS 8の終了
前回移行先に選んだCentOS 8ですが、残念ながらThe CentOS Projectの方針転換により2021年12月31日(金)をもってメンテナンスが終了してしまいました。元々は2029年5月までサポートされる予定となっていました。これまでの実績からそれがきっと守られるのだろうという想定で、CentOS 7からCentOS 8へ切り替えた私にとっては驚くべき出来事となりました。
この結果、CentOS 7のメンテナンス期間終了日については変更なしで2024年6月30日となり、CentOS 8よりも長くなるという逆転現象が生じています。前回CentOS 8への切り替えたことにより、より短い期間で次の選択肢を検討する必要が生じました。
CentOSシリーズはライセンスあるいはメンテナンスが販売されているものでもなく、自由にダウンロードして使用することができるディストリビューションでした。つまり関係者の善意によって運営されていたもので、私も特段寄付をすることもなく無料で使用させていただいていた一利用者でしかありません。方針転換については「運営サイドがそういう決定をしたのであれば仕方がない」という受け止めでした。
少なくとも突然の終了ではなく、2020年12月に1年後に対する事前告知があったわけですから、それはそれでありがたいことであったかとも思っています。
次のLinuxディストリビューションを検討
前回のサイト・リニューアルの中でも、CentOS 7からCentOS 8への切り替えにおいて、いくつか従来とは使い勝手が変わっていて、中でもApache Tomcatが標準でサポートされなくなることについて不便さがあることについて言及をしていました。今回の切り替えではこういった点についてもなるべく妥協をすることなく、次のLinuxディストリビューションを選定することにしたいと考えました。
前回検討した中には、その時点で使用しているさくらのVPSをやめて、Amazon Web Services(以下、AWS)へと移行してAmazon EC2とAmazon Linux 2などの組み合わせに切り替えることも含めていました。当然今回もそれを含めて検討をしました。
そういった前提で検討した対象はこんな感じでした:
- Amazon Linuxシリーズ
- Ubuntu Linux 20.04 LTS
- Ubuntu Linux 22.04 LTS
- CentOS 8代替ディストリビューション各種
最初は仕事でもよく使用しているAWSへの切り替えの検討をしました。いくつかのパターンで費用を計算してみた結果、現状の費用と比較するとやはり出費が増える点がネックでした。これは同じさくらインターネットのサービスの中でさくらのVPSからさくらのクラウドに切り替えたとしても同様で、ましてやマネージド・サービスを選べばなおさらです。今後もしもアクセスが増えて、各種サービスを使用するメリットが費用を上回るような状況になったとすれば別ではありますが、現状ではなかなか選びにくい選択肢であると感じました。
続いてUbuntu Linux 20.04 LTSと同22.04 LTSを導入したさくらのVPS環境です。前者の方がノウハウも多いのですが、今後も使い続けるのであれば同じLTSでも新しいほうがよいと考えられます。これからの予定メンテナンス期間や使用可能なパッケージのバージョンが新しいなどのメリットがあるからです。今回はWordPressをメインとして動かすWebサーバーですので、22.04 LTSで特に困ることはなさそうに思えます。そういった理由で選択肢に入れてもいいのではないかと思えました。また、最近は仕事でDockerやKubernetesを扱う際に、RHEL系よりもUbuntu/Debian系のLinuxディストリビューションを扱うことが多くなってきていて、抵抗感や新たな学習の必要性などの要素が低く感じられるのもメリットの一つであるといえます。
そして最後に考えたのは、本来最初に考えるであろう「CentOS 8」の後継を自認する、RHEL系互換の新しいディストリビューション各種を用いた環境です。今回の選定を行う前にいくつかのディストリビューションを調べてはいたのですが、どれもこの先が長いことが予想できるディストリビューションとして、私がCentOSによりも信頼することができなかったこと、またCentOS 7からCentOS 8にしたときに発生した“難しさ”をそのまま継承する環境であることなどを考慮し、今回は様子眺めをしておこうと思うに至りました。もしも、今後のバージョンで取り扱いがしやすくなるようになり、継続性に信頼を置けるようになるのであればRHEL系互換に戻ることもあるかもしれません。
この結果、最終的にUbuntu Linux 22.04 LTSを使用した環境を用意することとしました。
パッケージの選択
Ubuntu Linux 22.04 LTSはCentOS 7/8と比較して、いくつかある選択肢を切り替えて使用できるという特徴があります(この特徴はAmazon Linuxにも方法は違いますが存在します)。例えば、CentOS 8ではApacheとPHPを組み合わせる場合、通常の方法ではmod_phpとphp-fpmの選択はできず、後者の一択となります。一方でUbuntu Linuxであれば、柔軟にいずれの選択もすることができます。また同時に動かすことはできませんが、同時にインストールすることは可能です。
今回は前回説明したようにHTTP/2を使いたいという事情があるため、php-fpmを使用した構成とすることにしました。
WordPress以外では、私が書いたコードがJava Servlet用ということで、TomcatをPHPとは別に導入する必要があります。CentOS 8では標準パッケージにTomcatが存在しない状態となってしまっていますが、Ubuntu Linux 22.04 LTSではTomcat 9が標準パッケージで導入可能です。最新のTomcat 10ではAPIの互換性が失われていることもあり、Tomcat 9のパッケージを導入して使用することとしました。
パッケージの選択は以上としても、各種設定の方法やディレクトリーがCentOSとは異なります。Apache HTTP Serverに関してはUbuntu Linuxに設定の切り替えの仕組みがある関係で、CentOSとは異なる部分についての理解が必要となります。この理解をしておくことで便利な切り替えの手段が使用できるようになるので、大いにこのフレームワークを活用したいところです。
全ての設定を新しい環境に合わせて変更して有効化することで、問題なく動作することを事前に確認したうえで、サイトの切り替え作業を行いました。
新環境への切り替え
まずは移行前環境および移行後環境の両方をメンテナンス表示に切り替えます。今回はmod_rewriteを使用して、どのURIにアクセスしてきてもHTTP 503 Service Unavailableを返却するとともに、メンテナンス中であることを示すシンプルなHTMLを返すようにしました。これにより、移行前環境および移行後環境の両方を現状維持とし、移行作業で不整合が生じないようにします。
続いて、改めて移行前環境から移行後環境へデータの移行をします。これにより、移行後の環境の整備とテストを行っている期間中に移行前環境で生じた変化をすべて移行後環境へ移行することを技術的に保証します。
移行後環境へのデータ移行が完了したら、移行後環境へアクセスして正しくデータの移行ができていることを確認します。これには事前に特定のIPアドレス、例えば自分自身が使用しているIPアドレスだけはメンテナンス表示を行わずにアクセスできるようにするなどの工夫をしておくことが一般的ではないかと思います。
最終的な移行後環境の動作確認が取れたら、移行後環境のメンテナンス設定を解除してアクセス可能にし、DNSの該当レコードを移行前環境から移行後環境に切り替えます。これによって、順次移行前環境から移行後環境へのアクセスに切り替わっていき、移行後環境へ切り替わったユーザーは順次移行後の環境へアクセスができるようになります。移行前の環境へのアクセスについては、切り替わるまでメンテナンス表示のままとなります。
このようにして今回の本サイトの移行作業を行いました。
まとめ
今回は前向きな環境の切り替えができたものと思っています。これによってサイトに自分でいろいろなコードを書き加えたり、機能を追加するようなことは現状では考えていませんが、気持ちを新たにメモをいろいろと書いていければとは考えています。
今後ともよろしくお願いいたします。