プライム・ストラテジー「KUSANAGI」開発チームの石川です。
KUSANAGI 8 は CentOS 7 をベースにしていますが、CentOS 7 のEOLが来年に迫っていることをご存知でしょうか?
KUSANAGI 8 を始め、 CentOS Stream 8 をベースにしているKUSANAGI 9 もEOLが来年となっています。KUSANAGI 8 および CentOS Stream 8 ベースの KUSANAGI 9 を利用している方はそろそろ新しい KUSANAGI に移行する時期が来ていると思います。各OSのEOLを以下に表にまとめました。
OS | EOL |
---|---|
CentOS 7 (KUSANAGI 8) | 2024/6/30 |
CentOS Stream 8 (KUSANAGI 9) | 2024/5/31 |
CentOS Stream 9 (KUSANAGI 9) | 2027/5/31 |
AlmaLinux OS 8 (KUSANAGI 9 BE/PE) | 2029/5/1 |
AlmaLinux OS 9 (KUSANAGI 9 BE/PE) | 2032/5/31 |
移行を簡単にするmigrateコマンド
これまで KUSANAGI 8 (あるいは KUSANAGI 9) を長い間愛用していただいた利用者のみなさまに、どのように安心して新しい KUSANAGI 9 へ移行していただくかは、「KUSANAGI」開発チームでも課題としているものの一つになります。
そこでご紹介したいのは KUSANAGI に追加された migrate コマンドになります。kusanagi migtate コマンドは KUSANAGI 8 では 8.6.6 から、KUSANAGI 9 では 9.1.9 で追加されました。
kusanagi migrate コマンドは文字通り、KUSANAGIのプロファイルを古い移行元の環境からエクスポート (export) して、新しい移行先の環境でインポート (import) するコマンドになります。気を付けていただきたいのは、 KUSANAGI 8 はエクスポートのみの対応という点です。KUSANAGI 9 はエクスポートとインポートの両方に対応しています。
kusanagi migrate コマンドが移行するのは以下の内容になります。
- プロファイル (/home/kusanagi/プロファイル) 配下のディレクトリとファイル
- プロファイルのデータベース (MariaDBのみ)
- プロファイルの設定 (FQDN、DB名、DBユーザ、DBパスワードなど)
- SSL証明書 (※KUSANAGI 8 は 8.7.9 以降、 KUSANAGI 9 は 9.2.16 以降)
また、確実に移行を進めるために注意していただきたい点があります。
- 移行元と移行先の PHP/MariaDB のバージョンを合わせる
- 移行元の PHP/MariaDB が古い場合は、移行元において事前に更新して動作確認をする
- Let’s Encrypt SSL証明書を利用している場合は、移行元の自動更新を止めて、移行先で自動更新を有効にする
それでは KUSANAGI 8 または KUSANAGI 9 (CentOS Stream 8) から KUSANAGI 9 (CentOS Stream 9) へ移行する、というシナリオで実際に使い方を紹介します。
移行元を最新化して動作検証する
まず、移行元の環境を最新化します。
yum update --enablerepo=remi,remi-php56
kusanagi restart
dnf update
kusanagi restart
アップデートでエラーが出なければ、移行元の環境は最新化されます。
次に、KUSANAGI 9 で利用するミドルウェアとバージョンを合わせます。 以下が KUSANAGI 8 と KUSANAGI 9 で使えるミドルウェアの対応表になります。
ミドルウェア | 移行元 | 移行先 | 備考 | |
---|---|---|---|---|
KUSANAGI 8 | KUSANAGI 9 (CentOS Stream 8) | KUSANAGI 9 (CentOS Stream 9) | ||
PHP | PHP 7.4 | PHP 7.4 | PHP 7.4 | 2022/11/28 EOL |
PHP 8.0 | PHP 8.0 | PHP 8.0 | 執筆時点 | |
MariaDB | MariaDB 10.5 | MariaDB 10.5 | MariaDB 10.5 |
PHP 7.4 は 2022/11/28 でEOLとなってしまっていますが、PHP 8系への アップデートができなかったり、検証ができなかったりする場合には、 一応まだ KUSANAGI 9 でも使用することができます。 しかし既にEOLとなっていることから、いずれ使用できなくなる予定です。
kusanagi php7
kusanagi php --use php74
また PHP 8.0 も 2023/11/26 でEOLとなる予定です。 そのため、今年中には KUSANAGI 8 においても PHP 8.0 から PHP 8.1 に更新する予定でいます。その場合は、PHP 8.1 で対応することになります。
kusanagi php8
kusanagi php --use php80
MariaDB は 10.5 が共通で使えるバージョンになります。 KUSANAGI 8 および KUSANAGI 9 で 10.5 より前のバージョンを使用している場合には kusanagi upgrade mariadb コマンドでデータベースの アップグレードを実施してください。
kusanagi upgrade mariadb 10.5
kusanagi upgrade mariadb --use mariadb10.5
この状態で、移行元環境が正常に動作するかまず確認してください。
移行元からエクスポートする
kusanagi migrate コマンドはプロファイル (/home/kusanagi/プロファイル) 配下の全てのディレクトリとファイルをエクスポートします。 作業用のディレクトリや過去のバックアップなど、移行が不要なディレクトリや ファイルが存在する場合は、プロファイルとは別のディレクトリに移動しておくと、 エクスポートするファイルのサイズを小さくできます。 同様に過去のログファイルも移行が不要であれば、移動しておくとよいです。
全ての準備が整ったら、移行元のサイトはメンテナンス中などに 切り替えておくのがよいでしょう。 エクスポートした後に変更や更新されたデータは、再度エクスポートしない限り反映することができません。
kusanagi migrate --export プロファイル
kusanagi migrate --export プロファイル
コマンドが正常に終了すれば、/home/kusanagi配下に プロファイル-日付.tar.gz という ファイルが作成されています。 このファイルをFTPなどを利用して、移行先の環境へ持っていってください。
移行先にインポートする
移行先の環境では kusanagi init コマンドまで済ませておきましょう。
dnf update
kusanagi init --passwd kusanagiユーザのパスワード --nophrase --dbrootpass DBのrootパスワード --php80 --mariadb10.5
なお、PHP 7.4 を利用する場合は --php74
を指定してください。 Nginxに替えてApache HTTPDを利用する場合は --httpd24
を指定してください。 それぞれ init した後から kusanagi コマンドで変更することもできます。
kusanagi php --use php74
kusanagi httpd
KUSANAGIの初期設定が完了したら、kusanagi migrate コマンドでインポートします。
kusanagi migrate --import プロファイル-日付.tar.gz
コマンドが正常に終了すれば、 /home/kusanagi/プロファイル 配下に移行が完了します。
なお、いくつか手動で対応する必要があるものがあるので、注意してください。
- Nginx/Apache HTTPDの設定ファイルを手で変更している場合は反映されません
- /home/kusanagi/プロファイル/conf に移行元のファイルがあるので確認してください
- CRONなどOSに行っていた設定は反映されません
- Let’s Encrypt SSL証明書を利用している場合は、移行元の自動更新を停止して、移行先で kusanagi ssl –email コマンドを実行して自動更新を有効にします。ただし、後述のサーバのIPアドレスを変更するまではコマンドを実行できないので注意してください。
DNSのFQDNのレコードを移行先のサーバのIPアドレスに書き換えてしまう前に、hostsファイルの書き換えやブラウザの機能を使って、新しい環境でも問題なく表示できるか確認しましょう。
移行を完了する
最後にDNSのFQDNのレコードを移行元のサーバのIPアドレスから、移行先のサーバのIPアドレスに変更して作業は完了となります。Let’s Encrypt SSL証明書を利用している場合は、IPアドレス変更後に kusanagi ssl –email コマンドでLet’s Encrypt SSL証明書を再設定することを忘れないでください。
今後も安心して簡単に KUSANAGI の運用ができるように開発チーム一同、KUSANAGIの開発と機能強化を進めていきます。
PST (WEXAL) 環境の場合(2024/05/14追記)
PST (WEXAL) を利用している場合ですが、 kusanagi migrate コマンドは PST 環境のマイグレーションには対応しておりません。
そのため、まず移行元からエクスポートする前に PST 環境を削除し、その後エクスポートする必要があります。
pst remove プロファイル
kusanagi migrate --export プロファイル
pst remove プロファイル
kusanagi migrate --export プロファイル
その後、移行先環境の初期設定を済ませ、移行先にエクスポートしたファイルをインポートしてから、対象のプロファイルに対して PST 環境を初期化します。
kusanagi migrate --import プロファイル-日付.tar.gz
pst init インポートしたプロファイル
PST の設定は初期化されますので、再度設定をお願いいたします。