kusanagi migrateコマンドで移行する

石川英典

CentOS 7ベースのKUSANAGI 8とCentOS Stream 8ベースのKUSANAGI 9のEOL(サポート終了)が来年に迫っています。これを受け、新しいKUSANAGIに移行する時期が来ていると考えられます。それを簡単にするためのmigrateコマンドがKUSANAGIに追加されました。移行はプロファイルのディレクトリ、ファイル、データベース、設定、SSL証明書が対象です。ただし、PHP/MariaDBのバージョンは移行元と先で合わせる必要がありますので注意が必要です。また、移行後の設定変更も一部手動で行う必要があります。

プライム・ストラテジー「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を以下に表にまとめました。

OSEOL
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
OS別のEOL

移行を簡単にする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 8KUSANAGI 9
(CentOS Stream 8)
KUSANAGI 9
(CentOS Stream 9)
PHPPHP 7.4PHP 7.4PHP 7.42022/11/28 EOL
PHP 8.0PHP 8.0PHP 8.0執筆時点
MariaDBMariaDB 10.5MariaDB 10.5MariaDB 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 の設定は初期化されますので、再度設定をお願いいたします。

kusanagi status で KUSANAGI の実行環境の状態を確認する >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解