こんにちは。大野です。Drupal 9 のリリースがあと2週間に迫ってきましたね!今回はその Drupal 9 を動かすのに必要なミドルウェアのバージョンやLinux のディストリビューション(以下、便宜上OSと呼びます)についてまとめてみました。
結論から言うと次の通りです。
- Drupal 9 を動かすには2020年以降にリリースされたOSが必要
- Drupal 8 から Drupal 9 へのアップグレードは簡単だけど、インフラのアップグレード対応が必要になる
さて、このブログを書く動機から説明します。勉強会のネタを探すため Drupal 9 のβ版を試そうと思い、いつも使っているUbuntu 18.04(2年前にリリースされたOS)の開発環境で動かそうとしたところ、ミドルウェアのバージョンが低くて動かすことができず、このくらいの時期のOSなら当然動くと勝手に思っていたので大変衝撃的でした。そこで「一体どのOSなら動くんだ」と言う疑念が生まれ、一般的にサーバーとしてよく利用されるOSにイントールされるミドルウェアのバージョンを調べることにしました。せっかくなのでブログを通じて皆さんに共有することにしました。
※ミドルウェアとはあるアプリケーションを動かすために必要なソフトウェアのことを指します。Drupalで言えば Apache などのウェブサーバー、PHP、MySQLなどのデータベースサーバーがそれにあたります。
Drupal 9 の環境要件
Drupal 9 の環境要件が書かれているページに動作するミドルウェアのバージョンが書かれています。ソフトウェア名とバージョンだけ抜粋したものが次の表です。(2020年5月20日現在)
Drupal 9 に必要なミドルウェア
ミドルウェア | バージョン |
---|---|
Apache | 2.4.7以上 |
PHP | 7.3 or 7.4 |
MySQL / Percona | 5.7.8以上 |
MariaDB | 10.3.7以上 |
PostgreSQL | 10以上 |
SQLite | 3.26以上 |
ミドルウェアのバージョンだけで、どのOSで動くか分かる方はかなりのインフラオタクかその筋の方だと思いますが、普通はこれだけ見ても分からないので、現在もサポートが続いているメジャーなサーバー用の Linux ディストリビューションに搭載されるミドルウェアのバージョンとサポート期限をまとめてみました。
メジャーな Linux ディストリビューションのミドルウェアバージョン
OS | Apache | PHP | MySQL | MariaDB | PostgreSQL | SQLite | リリース日 | 更新期限 |
---|---|---|---|---|---|---|---|---|
CentOS 6 | 2.2.15 | 5.3.3 | 5.5.62 | - | 8.4.20 | 3.6.20 | 2011年7月9日 | 2020年11月30日 |
CentOS 7 | 2.4.6 | 5.4.16 | 5.5.62 | 5.5.65 | 9.2.24 | 3.7.17 | 2014年7月7日 | 2024年6月30日 |
CentOS 8.1 | 2.4.37 | 7.3, 7.2 | 8.0.20 | 10.3.17 | 12.1, 10.6, 9.6 | 3.26.0 | 2020年1月15日 | 2029年5月 |
Ubuntu 18.04 LTS | 2.4.29 | 7.2 | 5.7.30 | 10.1.44 | 10 | 3.22.0 | 2018年4月26日 | 2023年4月 |
Ubuntu 20.04 LTS | 2.4.41 | 7.4 | 8.0.20 | 10.3.22 | 3.31.1 | 2020年4月23日 | 2025年4月 |
- Ubuntu の有償の延長保証 ESM(Extended Security Maintenance) は対象外としました。
- RHEL は使う機会があまりないので調べていませんが、おそらく CentOS と同じです。
- CentOS の Software Collections リポジトリはサポート期間が短いため考慮していません。
- CentOS 8 以降はマイナーバージョンが上がると、モジュールシステムによりインストールできるアプリケーションのバージョンが選べるようになったそうです。
ここに記載されたバージョンはOS標準のパッケージ管理システムのリポジトリを利用してインストールできるものです。非公式のリポジトリを使ったインストールはサポート期限がOSと異なるためここでは考慮しませんでした。
各Linuxディストリビューションの Drupal 動作可否
Drupal が動くかどうかだけでまとめたものが次の表です。ついでに Drupal 7/8 も含めました。
OS | Drupal 7 | Drupal 8 | Drupal 9 |
---|---|---|---|
CentOS 6 | ✓ | ||
CentOS 7 | ✓ | ||
CentOS 8.0 | ✓ 1 | ✓ | |
CentOS 8.1 | ✓ 1 | ✓ | ✓ 2 |
Ubuntu 18.04 LTS | ✓ 1 | ✓ | |
Ubuntu 20.04 LTS | ✓ 1 | ✓ | ✓ |
- PHP 7.x がインストールされます。Drupal 7 のコアは正式に PHP 7.x をサポートしていますが、拡張モジュールが PHP 7 に対応していないことが多く、動作しない可能性があります。
- 標準の状態では PHP 7.2 が入るため Drupal 9 は動作しません。CentOS のモジュールシステムで PHP 7.3 を使う設定をする必要があります。
OSが正式にサポートする環境で Drupal 9 を動かせるのは CerntOS 8.1 と Ubuntu 20.04 だけと言うことがわかりました。つまり2020年以降にリリースされたOSでしか動かないようです。Drupal 9 の正式版は2020年にリリースされるので、当たり前と言えば当たり前ですね。。
なお上記の表で Drupal 9 が動作しないOSでも、非公式リポジトリ使ったり各ミドルウェアの公式リポジトリを登録、自前でコンパイルしたりすれば動作させることは可能です。サポート期限がOSと異なるため保守を続けていく上では注意が必要です。
セキュリティやPHP8に関する余談
公式のサポート期限が切れたミドルウェアのセキュリティ
ミドルウェアの公式のサポート期限は切れてるけど、OSはサポート期限内にあってセキュリティの脆弱性が見つかった時にがどうなるかご存知でしょうか? OSがサポート期間内かつ公式のリポジトリで管理されているものであれば、脆弱性の問題のみバックポート(関連する部分だけ上位バージョンから取り込む)されてセキュリティが担保されるそうです。
ただし公式のリポジトリだからと言って手放しで安心できるわけではない様です。CentOS の PHP は本当に安全かによると脆弱性の対応版のリリースまでに時間が掛かるケースが多く、長いと2ヶ月掛かるそうです。緊急性の高いセキュリティリリースがあった場合は注意が必要ですね。
PHP 8 への対応
2020年の年末に PHP 8 のリリースが予定されています。今回の目玉はJIT (Just In Time) と言うコンパイル機能で、これまでの中間コード生成方式よりもより一層動作が早くなるらしいです。一説によると C++ でコンパイルしたコードより早くなるとか。サーバースピードが気になる私にとってはとても楽しみなバージョンです。Drupal 9 はまだ PHP 8 に未対応とのことですが、対応作業中と公式サイトに書かれていたので、おそらく Drupal 9.1 か 9.2 で正式対応するのではないでしょうか。
まとめ
Drupal 8 から Drupal 9 へのアップグレードは「過去10年の中で1番簡単」と謳われていますが、それは Drupal 単体の話であって、実際にはインフラ環境を含めたアップグレードが必要になり、それなりに移行が大変になるのではないかと思いました。お客さんに Drupal のアップグレードを提案する際は、インフラのアップグレードも外せないことをお伝えしておいた方が無難ですね。
募集しています
スタジオ・ウミは「Drupal」に特化したサービスを提供する Drupal のエキスパートチーム。
フルリモート&フレックス制だから、働く場所を選ばず時間の使い方も自由です。
そんなワークライフバランスの整った環境で、当ブログに書かれているような
様々な技術を共に学びながら、Drupalサイト開発に携わってみたい方を募集しています。
まずはお話だけでも大歓迎!ぜひお気軽にご連絡ください。