AlmaLinux 提供のスクリプトで CentOS Stream 8 ベースの KUSANAGI 9 を AlmaLinux OS 8 にマイグレーションする

片倉洋一

今回は AlmaLinux で提供されている CentOS Stream 8 を AlmaLinux OS 8 にマイグレーションするスクリプトを使って、 CentOS Stream 8 ベースの KUSANAGI 9 の環境を AlmaLinux OS 8 にマイグレーションする手順を紹介します。

なぜマイグレーションが必要か

CentOS Stream 8 が2024年5月31日で EOL を迎えます。

CentOS Stream | endoflife.date

まず、前段階としてRHEL(Red Hat Enterprise Linux) のディストリビューションには、アップストリームとダウンストリームという考え方があります。
アップストリームとは先行開発的な意味合いで、メインである RHEL よりも先んじて新しいモジュールやパッチを取り込んでいくディストリビューションで、開発速度が速い実験的な環境です。
ダウンストリームとは、アップストリームの結果を受けてその内容を反映するディストリビューションですので、アップストリームより緩やかな開発速度ですが安定的な環境です。
CentOS Stream 系のディストリビューションは RHEL のアップストリームにあたり、RHEL 8 のフルサポートが 2024年5月31日 で終了するため、そのアップストリームである CentOS Stream 8 は役目を終え EOL を迎えることとなりました。

CentOS Stream 8 が EOL を迎える以上何らかの対応は必要です。
考えられる対応の1つに、別の OS への乗り換えがあります。

引き続き CentOS Stream 系を使用したいので CentOS Stream 9 へ乗り換えるということも可能です。
そのために、 KUSANAGI 9 には kusanagi migrate コマンドもありますし、AlmaLinux でもそのためのスクリプトを提供する予定がありますので続報をお待ちください。

migrate – 超高速CMS実行環境 KUSANAGI

ELevate Quickstart Guide | AlmaLinux Wiki

実は KUSANAGI 9 が対応している OS は1つだけではありません。
CentOS Stream 系以外に、もう1つ AlmaLinux OS 系にも対応しています。

AlmaLinux OS とは RHEL 系のディストリビューションの1つです。
RHEL 本体とは別のオープンソースコミュニティで作られた OS で、 RHEL とバイナリ互換性を保持するディストリビューションです。
AlmaLinux OS 8 は CentOS Stream 8 と同じ RHEL 8 系ディストリビューションで、日本国内では高い人気を誇るディストリビューションです。

この辺りは、弊社渡部のコラムも参照いただけますと幸いです。

プライム・ストラテジー渡部の「推しは富士通」第4回 AlmaLinux VS Rocky Linux 最適な選択はどっち?【不定期連載】 – 富士通クラウドダイレクトブログ

AlmaLinux OS 8 の EOL は 2029年3月1日 とまだ余裕がありますので、こちらに乗り換えるという手段もあります。

AlmaLinux OS | endoflife.date

最初に書きましたように、 CentOS Stream 8 から AlmaLinux OS 8 に乗り換える場合には、AlmaLinux の公式サイトでマイグレーションするスクリプトが提供されています。
今回は実際に、 CentOS Stream 8 ベースの KUSANAGI 9 の環境でそのマイグレーションスクリプトを実行して、 AlmaLinux OS 8 にマイグレーションされるか、問題なく KUSANAGI 9 が動くかを確認してみようと思います。

マイグレーション前の環境の確認

今回マイグレーションを実行する環境は、 KUSANAGI 9 for Microsoft Azure on CentOS Stream 8 の環境で行っています。

CentOS Stream 8 の環境を立ち上げ、 OS を確認します。

$ sudo su -
# cat /etc/redhat-release
CentOS Stream release 8
# grubby --info DEFAULT | grep 'CentOS Stream'
title="CentOS Stream (4.18.0-448.el8.x86_64) 8"
#

Azure の画面でも確認します。

オペレーティングシステムが Linux(centos 8) と表示されています。
このように、 OS が CentOS Stream 8 であることが確認できました。

それでは、以下の手順に従って KUSANAGI 9 をセットアップします。

# dnf upgrade -y
# kusanagi init --tz Asia/Tokyo --lang ja --keyboard ja --passwd (パスワード) --nophrase --dbrootpass (DB root パスワード)
# kusanagi provision --wp --fqdn (FQDN) --noemail --dbname migrate_test --dbuser migrate_user --dbpass (DB パスワード) migrate_test

セットアップしたところで、 KUSANAGI の状態を kusanagi status で確認します。

# cd /home/kusanagi/migrate_test/
# kusanagi status
Profile: migrate_test
FQDN: (FQDN)
Type: wp
KUSANAGI Version 9.4.12-1.el8
azure

*** (active) nginx : nginx125 ***
* nginx.service - The NGINX HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-04-01 17:38:12 JST; 7min ago

*** (inactive) httpd : httpd24 ***
* httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

*** (active) php : php81 ***
* php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-04-01 17:39:01 JST; 7min ago

*** (active) mariadb : mariadb10.5 ***
* mariadb.service - MariaDB 10.5.24 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-04-01 17:40:33 JST; 5min ago

*** (inactive) psql :  ***


*** (inactive) pgpool-II :  ***


*** python ***
Python 3.9.19

*** ruby ***
ruby is not installed.

*** Cache status ***
bcache off
fcache off

*** WAF ***
off

*** SELinux ***
off

status completed.
# 

各種サービスが起動していることが確認できます。
ブラウザでもサイトが動いていることを確認します。

マイグレーションの実行

それでは、以下の公式サイトの手順に従ってマイグレーションを実行します。

Migration Guide | AlmaLinux Wiki

最初に管理者権限で dnf update -y を実行して OS を最新化します。

$ sudo dnf update -y
メタデータの期限切れの最終確認: 19:43:30 前の 2024年04月01日 17時49分01秒 に実施しました。
依存関係が解決しました。
行うべきことはありません。
完了しました!
$

今回は KUSANAGI 9 をセットアップする際に dnf upgrade -y (同じ処理)を直前で実行していたため、すぐに実行が終わりました。
続いてシェルスクリプトをダウンロードします。

$ curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 39876  100 39876    0     0   170k      0 --:--:-- --:--:-- --:--:--  170k
$

ダウンロードが完了しましたら、ダウンロードしたシェルスクリプトを管理者権限で実行します。

$ sudo bash almalinux-deploy.sh
Check root privileges                                                 OK
Use '-d or --downgrade' option to allow downgrade from CentOS Stream  ERROR
$

おっと、エラーが発生しました。
ヘルプを確認しますと、 CentOS Stream からのマイグレーションでは -d オプションを指定する必要があるようです。

$ sudo bash almalinux-deploy.sh --help
Migrates an EL system to AlmaLinux

Usage: almalinux-deploy.sh [OPTION]...

  -h, --help           show this message and exit
  -f, --full           perform yum upgrade to 8.5 if necessary
  -d, --downgrade      option to allow downgrade from CentOS Stream
  -v, --version        print version information and exit
$

それでは、 -d オプションをつけて再度実行します。

$ sudo bash almalinux-deploy.sh -d
Check root privileges                                                 OK
Check centos-8.x86_64 is supported                                    OK
Download RPM-GPG-KEY-AlmaLinux                                        OK
Import RPM-GPG-KEY-AlmaLinux to RPM DB                                OK
Download almalinux-release package                                    OK
Verify almalinux-release package                                      OK
Your OS is supported                                                  OK
警告: /etc/yum.repos.d/CentOS-Stream-PowerTools.repo saved as /etc/yum.repos.d/CentOS-Stream-PowerTools.repo.rpmsave
警告: /etc/yum.repos.d/CentOS-Stream-BaseOS.repo saved as /etc/yum.repos.d/CentOS-Stream-BaseOS.repo.rpmsave
警告: /etc/dnf/vars/infra saved as /etc/dnf/vars/infra.rpmsave
Remove OS specific rpm packages                                       OK
Verifying...                          ########################################
準備しています...              ########################################
更新中 / インストール中...
almalinux-release-8.9-1.el8           ########################################
Install almalinux-release package                                     OK
Remove centos-logos packages                                          OK
Install almalinux-logos packages                                      OK
Backup of alternatives is done                                        OK
:
:
(省略)

正しく実行され始めました。
実行の完了まではある程度時間がかかりますので、その間に環境がシャットダウンなどしないように注意しましょう。

(省略)
:
:
Run dnf distro-sync -y                                                OK
Restoring of alternatives is done                                     OK
Generating grub configuration file ...
done
All Secure Boot related packages which were not released by AlmaLinux are reinstalledOK

Migration to AlmaLinux is completed
$

Migration to AlmaLinux is completed と表示されれば正常終了です。
環境を再起動します。

$ sudo reboot

再起動が完了したら、マイグレーションは完了です。

マイグレーション後の環境の確認

再度環境にログインして、 OS が切り替わったか確認しましょう。

$ cat /etc/redhat-release
AlmaLinux release 8.9 (Midnight Oncilla)
$ sudo grubby --info DEFAULT | grep AlmaLinux
title="AlmaLinux (4.18.0-513.18.1.el8_9.x86_64) 8.9 (Midnight Oncilla)"
$

Azure の画面でも確認します。

オペレーティングシステムが Linux (almalinux 8.9) と表示されています。
このように、 OS が AlmaLinux OS 8 に切り替わったことが確認できました。

それでは先ほどセットアップした KUSANAGI 9 が正しく動いているか kusanagi status 確認してみましょう。

$ sudo su -
# cd /home/kusanagi/migrate_test/
# kusanagi status
Profile: migrate_test
FQDN: (FQDN)
Type: wp
KUSANAGI Version 9.4.12-1.el8
azure

*** (active) nginx : nginx125 ***
* nginx.service - The NGINX HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-04-01 18:01:08 JST; 1min 27s ago

*** (inactive) httpd : httpd24 ***
* httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

*** (active) php : php81 ***
* php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-04-01 18:01:06 JST; 1min 29s ago

*** (active) mariadb : mariadb10.5 ***
* mariadb.service - MariaDB 10.5.24 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2024-04-01 18:01:08 JST; 1min 27s ago

*** (inactive) psql :  ***


*** (inactive) pgpool-II :  ***


*** python ***
Python 3.9.19

*** ruby ***
ruby is not installed.

*** Cache status ***
bcache off
fcache off

*** WAF ***
off

*** SELinux ***
off

status completed.
#

各種サービスが以前と同じように起動していることが確認できます。
ブラウザでもサイトが動いていることを確認します。

問題なく表示されました。

以上、 CentOS Stream 8 から AlmaLinux OS 8 へのマイグレーションの紹介となります。

このように非常に簡単な手順で CentOS Stream 8 から AlmaLinux OS 8 へのマイグレーションが行えました。
CentOS Stream 8 が EOL を迎える中、どう対応すべきか迷っている方はぜひ AlmaLinux OS への乗り換えを考えてみてはいかがでしょうか。

マイグレーションを行う際の注意点

  • 実行前にはバックアップを取る
    マイグレーションを行う際の注意点としまして、マイグレーションを実行する際には必ずスナップショットなどのバックアップを取ってから実行してください。
    万が一、マイグレーションに失敗しますと復旧が非常に難しい場合がありますので、実行前には必ずバックアップを取ってください。
  • CMS のマイグレーションまではスクリプトは保証していない
    今回は単純な KUSANAGI 9 の構成でしたので問題なくマイグレーションが行えましたが、場合によっては OS のマイグレーションが成功しても CMS が正しく動かないケースもあります。
    もしそういったことが起きましたら、以下の KUSANAGI ユーザーグループから確認してみてください。

    KUSANAGIユーザーグループ | 超高速WordPress仮想マシン「KUSANAGI」ユーザーグループ公式サイト
<< Amazon API GatewayとAWS Lambdaを使用して、WEB APIを作ってみます103 Early HintsをKUSANAGI+CloudFlareで利用してみる >>

関連記事

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

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

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

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

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