CentOS7からRocky Linux8/9へ移行する [マイグレーション]
今回はCentOS7系からRocky Linux8/9へOSを移行(マイグレーション)する方法をご紹介します。
Red Hat系のCentOS7のサポート期限は2024/6/30です。移行先には同じ系列のRocky Linux、AlmaLinux、Oracle Linux、MIRACLE Linuxの4つに絞り込めると思いますが、Rocky LinuxはCentOSの初代創設者であるGregory Kurtzer氏が携わっているので個人的にも推奨となります。
※既存システムが小規模ならばUbuntu(Debian系)も候補になります。
CentOS7系からRocky Linux8へマイグレーションする
Rocky Linuxの公式から移行ツールが準備されています。
https://docs.rockylinux.org/ja/guides/migrate2rocky/
問題点として2023年1月時点ではCentOS8.5 or CentOS8系でないと移行ツールが正常に動作しません。実行してもエラーが表示されて処理を進めることは出来ません。
次の章へ進みます。
CentOS7系からCentOS8系へアップグレードする
CentOS7からCentOS8へのアップグレードはCentOSの公式では用意されていません。非公式のユーザーによるアップグレード手法はネット上に存在しますが、そのほとんどは正常にアップグレードできません。
言い換えると過去には動作していたが2023年1月現在では動作しません。
2-3時間かけて調査したのですが epel-release-8-7.el8.noarch このファイルが存在すればCentOS7からCentOS8へアップグレードできると思われます。ただし、Fedora Projectにあるファイル倉庫にはありません。
https://dl.fedoraproject.org/pub/epel/
https://archives.fedoraproject.org/pub/archive/epel/
アップグレード用のコマンドで言うとこの部分です。
sudo dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
epel-release-latest-8.noarch.rpmのlatestは最終版なので最新版をひっぱてきます。そこで、Fedora Projectにある古いファイルを探しても見つかりませんでした。意図的に残してない可能性は否定できません。
この時点で私は次の手段に移ります。
新規にRocky Linuxをインストールする
最終的にこの手法が安全・安心・安定で良いと思われます。
私のケースだとCentOSでRuby on Rails、Django、Laravel、CakePHPのWebフレームワークを稼働させていますが、これらの開発環境はUbuntu(Debian系)を使用しています。基本はどのOSに移行しても動作します。
この他に重要なことが私の環境にはあります。
Webサーバー上で、改良した「TensorFlow Lite」を用いて学習済みモデルで推論しています。そうなんです。AI(人工知能)を動作させているんです。
https://www.petitmonte.com/ai/
これにはlibtensorflow_framework.soなどの「.so」(共有ライブラリ)が30個ぐらいあるのでこれを動作させるにはRedHat系(CentOS/Rocky Linux/AlmaLinux/MIRACLE LINUXなど)じゃないと厳しいかも知れません。
Debian系で.soファイルが動作するのかテストしていませんが、Linuxはlinux_aarch64.whl 、linux_armv7l.whl、linux_x86_64.whlの3種類ありますので同じlinux_x86_64系ならば動作する可能性はあります。
※最終的にはCentOSからRocky Linuxへの移行は全て動作確認済み。
最後に
クラウド(AWSなど)やVPS(ConoHaなど)で新規にRocky Linuxをインストールする場合は既存サーバー(OS)を丸ごとイメージ保存して、新たに新規サーバーを作成してRocky Linuxをインストールして環境を構築します。
環境が整ったら、それもイメージ保存して、既存サーバーにそのイメージを割り当てればマイグレーションの完了となります。
私のケースだとストレージ使用容量が36GB->16.65GBになりました。
注意事項
Webフレームワークの環境テストでは、ドメインやSSLは付与せずに
http://IPアドレス/
でテストすると思われます。Chromeだと自動的にhttpsになる場合が多いのでIE11でやると良いです。
その他にRuby on Railsではapplication.rbのconfig.hostsを削除。 production.rbのconfig.force_sslをfalseにする必要があります。Djangoではsettings.pyのALLOWED_HOSTSを削除しましょう。
あと、Let's Encrypt(Certbot)でSSLの証明書を再発行する場合は、新規同様の操作で再取得すればOK。新規と再取得のコマンドは同じです。