ずいぶん前にCentOS7を入れてサーバーを運用していたので、そろそろサポート期限終了(~2024年6月30日)も来る頃だし、CentOS8か、もっと新しいバージョンのOSにアップグレードしようかな?なんて思って調べてみたら、CentOSプロジェクトは新しいバージョンは作らず、CentOS Streamという開発主体のディストリビューションだけが残ることを今頃になって知って、慌てているお気楽おっさんのブログです。
CentOS Streamは、Red Hat Enterprise Linuxのための開発用ディストリビューションです。言いかえると『開発に協力する有識者たちが不具合を出すために、とりあえず使ってみるOS』です。突然立ち上がらなくなる、ウェブサーバーやデータベースサーバーが落ちる、ある日を境にアプリが使えなくなる等、おっさんからすると泣きたくなるような問題が起きたとしても、『バグを除去できるきっかけが発見できた。やったー!』と前向きに捉えられる、Linuxを知り尽くしたすごい人たちだけが使える限定OSです。素人のお気楽なおっさんが関わっていいOSではありません。(参考:CentOS とは)
『それは困るなぁ。どうしようかなぁ』と思って、夜な夜な、ごちょごちょ、パソコンで調べてみると、これまたすごい人たちによって、代わりになるディストリビューションがいくつか作成されている、とのことでした。中でもたくさん検索にヒットした無料のディストリビューションは、商用Linux開発会社CloudLinux社の『AlmaLinux8』と、CentOSの初代創設者(Gregory Kurtzer氏)が映画『ロッキー』のように復活して開発した『Rocky Linux8』です。(名前の由来は、映画『ロッキー』からではなく、残念ながら共同創設者のRocky McGaugh氏へのオマージュだそうです。。)(参考:【比較】AlmaLinuxとRockyLinuxの違い)
で結局、どっちにするか悩まされましたが、『どちらにしたとしても、問題があったときはすごい人たちがなんとかしてくれるよ』という、私好みのお気楽な意見が多かったので、調べたとき(2023/10)に移行情報が多かった『AlmaLinux8』を入れることにしました。『AlmaLinux8』のサポートは少なくとも2029年まで行うと宣言されています。
アップグレードは思ったよりスムーズに行きました。自分で振り返るための記録ですが、同じように悩んでいる方の参考になればと思い、ブログとして記事にしました。
アップグレードの前準備(OSの最新と移行パッケージのインストール)
まずは、スーパーユーザー(root)でログインします
[user@centos7PC ~]$ su -
パスワード:
最終ログイン: 2023/10/26 (木) 14:28:05 JST日時 pts/0
[root@centos7PC ~]#
CentOS7を最新にしてから移行をしないとうまく行かない可能性がありますので、updateを行います。”No packages marked for update”は、アップデートするものが無くなったという意味ですので、そこまでアップデートして再起動します。
[root@centos7PC ~]# yum update -y
・
・
・
* base: ftp-srv2.kddilabs.jp
* extras: ftp-srv2.kddilabs.jp
* updates: ftp-srv2.kddilabs.jp
No packages marked for update
[root@centos7PC ~]# reboot
『AlmaLinux8』への移行をサポートするパッケージを『elevate-release』リポジトリからyumコマンドを使ってインストールします。elevate-releaseのelevateは、CentOS7から『AlmaLinux8』や『RockyLinux8』等、移行用のツールを作っているプロジェクト、elevateプロジェクトです。
[root@centos7PC ~]# yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm
読み込んだプラグイン:fastestmirror, langpacks
elevate-release-latest-el7.noarch.rpm | 6.6 kB 00:00
・
・
・
インストール:
elevate-release.noarch 0:1.0-2.el7
完了しました!
[root@centos7PC ~]#
移行データ用のフレームワーク、leappパッケージと移行データをインストールします。
[root@centos7PC ~]# yum install -y leapp-upgrade leapp-data-almalinux
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
・
・
・
python2-libcomps.x86_64 0:0.1.8-14.el7
python2-libdnf.x86_64 0:0.22.5-2.el7_9
完了しました!
[root@centos7PC ~]#
アップグレードの前準備(アップグレード可能かのチェック)
アップグレードする前に、アップグレードできるかどうかをチェックします。”leapp preupgrade”を実行します。結果はログファイルに出力されます。この作業は、少なくとも数十分くらいかかります。
[root@centos7PC ~]# leapp preupgrade
==> Processing phase `configuration_phase`
====> * ipu_workflow_config
・
・
・
============================================================
UPGRADE INHIBITED
============================================================
Upgrade has been inhibited due to the following problems:
1. Inhibitor: Missing required answers in the answer file
Consult the pre-upgrade report for details and possible remediation.
============================================================
UPGRADE INHIBITED
============================================================
Debug output written to /var/log/leapp/leapp-preupgrade.log
============================================================
REPORT
============================================================
A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt
============================================================
END OF REPORT
============================================================
Answerfile has been generated at /var/log/leapp/answerfile
[root@centos7PC ~]#
エラーが出ました。やっぱりスムーズには行かないようです。チェックで良かったです。『UPGRADE INHIBITED』が赤色で表示され、『REPORT』『END OF REPORT』は黄色で表示されました。いかにも危険な感じがする色なので、海でカツオノエボシに刺された時を思い出しました。(くらげの1万倍くらい痛かったです。)
アップグレードの前準備(チェック後のエラーの対応)
エラーレポートを翻訳すると以下のようになります。
===========================================================
アップグレードは禁止されています
===========================================================
次の問題のため、アップグレードは禁止されています:
1. 阻害剤: 応答ファイルに必要な回答がありません
詳細と可能な修復については、アップグレード前レポートを参照してください。
・
・
・
===========================================================
レポートの終わり
===========================================================
応答ファイルは /var/log/leapp/answerfile に生成されました
『次の問題のため、アップグレードは禁止されています:』の後に表示される番号の数だけ問題があるようです。私の場合は『応答ファイル /var/log/leapp/answerfile に必要な回答が無いため、アップグレードは禁止されてますよ』というエラーだけのようです。
とりあえず『レポートの終わり』に書かれている、応答ファイル(/var/log/leapp/answerfile)を見てみます。
[root@centos7PC ~]# vi /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
# Title: None
# Reason: Confirmation
# =================== remove_pam_pkcs11_module_check.confirm ==================
# Label: Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted.
# Description: PAM module pam_pkcs11 is no longer available in RHEL-8 since it was replaced by SSSD.
# Reason: Leaving this module in PAM configuration may lock out the system.
# Type: bool
# Default: None
# Available choices: True/False
# Unanswered question. Uncomment the following line with your answer
# confirm =
最後の行『# confirm=』のところがコメントになっています。
エディタで直接confirm=trueに修正してもうまく行くという情報もありましたが、コマンドラインに引数を渡して修正する方法もあるようですので、今回はその方法で修正することにします。(移行ツールですので、バグが出た時にいつまでアップデートするのか疑問ですが。。)
[root@centos7PC ~]# leapp answer --section remove_pam_pkcs11_module_check.confirm=True
answerfileファイルを確認します。
[root@centos7PC ~]# vi /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
confirm = True
すべてのコメントが除去され、confirm = Trueだけが残りました。エディタで修正した方が良かったのかなと思いつつ、このファイルがアップグレード以外に使うことは無いはずなので、気にしないことにします。
再度アップグレードのチェックコマンド”leapp preupgrade”を実行します。
[root@centos7PC ~]# leapp preupgrade
==> Processing phase `configuration_phase`
====> * ipu_workflow_config
・
・
・
============================================================
REPORT
============================================================
A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt
============================================================
END OF REPORT
============================================================
Answerfile has been generated at /var/log/leapp/answerfile
『UPGRADE INHIBITED』は表示されず、『REPORT』『END OF REPORT』も安全そうな緑色で表示されました。アップグレードに問題は無いようです。これでやっとアップグレードが実行できそうです。
アップグレード実行
再度、アップグレードのコマンド”leapp upgrade”を実行します。
[root@centos7PC ~]# leapp upgrade
・
・
・
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Complete!
====> * add_upgrade_boot_entry
Add new boot entry for Leapp provided initramfs.
A reboot is required to continue. Please reboot your system.
Debug output written to /var/log/leapp/leapp-upgrade.log
============================================================
REPORT
============================================================
A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt
============================================================
END OF REPORT
============================================================
Answerfile has been generated at /var/log/leapp/answerfile
今度は問題も起きず、無事アップグレードが完了しました。
AlmaLinux8の起動と動作確認
再起動します。アップグレードしながら起動するので結構時間がかかります。(うちの古いパソコンだと1時間以上かかりました)
[root@centos7PC ~]# reboot
立ち上がったらアップグレードされていることを確認します。
[root@centos7PC ~]# cat /etc/redhat-release
AlmaLinux release 8.8 (Sapphire Caracal)
問題無くAlmaLinux8.8にアップグレードされています。(参考:サポート終了迫る!CentOS7 を AlmaLinux8 へ移行してみた)
おまけ(えっ?!postgresql10が起動してないぞ~)
AlmaLinuxにアップグレードされた後、apacheやtomcat等は問題無く動作していることが確認できましたが、Webアプリサイトが見れませんでした。エラーのスタックトレースによって原因はすぐわかりました。データベースのpostgresql10が起動していないとのことです。(私は、javaでWebサイトをpostgresql10をアクセスするWebサイトを作成しています)
postgresql.serviceをrestartしてエラーを確認します。
[root@centos7PC data]# systemctl restart postgresql.service
Job for postgresql.service failed because the control process exited with error code.
See "systemctl status postgresql.service" and "journalctl -xe" for details.
確かに起動しません。”systemctl status postgresql.service”、及び、”journalctl -xe”を見て確認しないさいと出力されましたので、指示通り確認してみます。
[root@centos7PC data]# systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2023-10-30 14:19:43 JST; 28min ago
Process: 2920 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=1/FAILURE)
10月 31 12:19:50 centos7PC.virnetcom.myftp.biz systemd[1]: Starting PostgreSQL database server...
10月 31 12:19:50 centos7PC.virnetcom.myftp.biz postgresql-check-db-dir[14990]: An old version of the database format was found.
10月 31 12:19:50 centos7PC.virnetcom.myftp.biz postgresql-check-db-dir[14990]: Use 'postgresql-setup --upgrade' to upgrade to version '10'
10月 31 12:19:50 centos7PC.virnetcom.myftp.biz postgresql-check-db-dir[14990]: See /usr/share/doc/postgresql/README.rpm-dist for more information.
10月 31 12:19:50 centos7PC.virnetcom.myftp.biz systemd[1]: postgresql.service: Control process exited, code=exited status=1
10月 31 12:19:50 centos7PC.virnetcom.myftp.biz systemd[1]: postgresql.service: Failed with result 'exit-code'.
10月 31 12:19:50 centos7PC.virnetcom.myftp.biz systemd[1]: Failed to start PostgreSQL database server.
『An old version of the database format was found.』古いバージョンが見つかったと言いうメッセージが出ています。確かにpostgresql10のサポートは切れているので古いというのは正解ですが、『AlmaLinux8』はpostgresql10は対応のはずです。。このタイミングでpostgresqlのバージョンアップをと考えましたが、とりあえず”postgresql-setup –upgrade”を実行しろと書かれていますので、それをやってみます。
[root@centos7PC ~]# postgresql-setup --upgrade
ERROR: Please install the postgresql-upgrade package.
今度は、postgresql-upgradeがインストールされていないというエラーメッセージが出力されました。
ならばpostgresql-upgradeをインストールします。。
[root@centos7PC ~]# yum install postgresql-upgrade
・
これでよろしいですか? [y/N]: y
・
これでよろしいですか? [y/N]: y
・
これでよろしいですか? [y/N]: y
・
完了しました!
[root@centos7PC ~]#
途中何度か確認を求められますので、yを入力して先に進めると、インストールが完了します。
再びアップグレードしてみます。
[root@centos7PC ~]# postgresql-setup --upgrade
* Upgrading database.
* Upgraded OK.
WARNING: The configuration files were replaced by default configuration.
WARNING: The previous configuration and data are stored in folder
WARNING: /var/lib/pgsql/data-old.
WARNING: If you've just upgraded your database from a previous major version of
Fedora or RHEL, please run reindexdb against your databases. Core library
collation data may have changed and this will invalidate database indexes. For
example, in Fedora 28 and RHEL 8 there have been extensive changes in glibc
collations to support ISO 14651:2016 (Unicode 9.0.0 data) and your indexes may
be affected: https://sourceware.org/ml/libc-announce/2018/msg00002.html
* See /var/lib/pgsql/upgrade_postgresql.log for details.
[root@centos7PC ~]#
ワーニングはいくつか出ましたが、最終的に”* Upgraded OK.”と出力されました。(Ver.10からVer.10へ??のアップグレードは)うまくいったようです。ただし、『WARNING: The configuration files were replaced by default configuration:設定ファイルをデフォルトに置き換えた』という悪意のあるメッセージがさらっと出ています。設定ファイルとはconfファイルのことです。confファイルはpostgresqlのとても大切なファイルですが、これらのファイルを、デフォルトに、しかも勝手に変えていただいたようです。危機感を持って対応しなければなりません。また、『メジャーアップデートの場合は”REINDEX DATABASE”を実行してください』というメッセージも出ています。10から10なのでメジャーアップデートではありませんが、データベースの検索時間が遅い等、問題が起きた場合は試してみる価値がありそうです。
まずは、アップグレードされた設定ファイル(confファイル)を元に戻します。
[root@centos7PC data]# ll /var/lib/pgsql/data/*.conf
-rw-------. 1 postgres postgres 4.9K 2023-10-31 12:59 /var/lib/pgsql/data/pg_hba.conf
-rw-------. 1 postgres postgres 1.6K 2023-10-31 12:28 /var/lib/pgsql/data/pg_ident.conf
-rw-------. 1 postgres postgres 88 2023-10-31 12:28 /var/lib/pgsql/data/postgresql.auto.conf
-rw-------. 1 postgres postgres 23K 2023-10-31 13:03 /var/lib/pgsql/data/postgresql.conf
[root@centos7PC data]#
設定ファイルは4つありますが、私の場合もそうですが一般的には、pg_hba.confとpostgresql.confを変えているはずです。どちらもtcp/ipでアクセスするipアドレスの設定をしているはずですので、あまりデフォルトのままで使われている方はいないと思います。
さすがにアップグレード前の設定ファイルは、/var/lib/pgsql/data-oldにバックアップしてくれていました。同じファイルの内容を参照しながら元の設定に戻します。
[root@centos7PC data]# ll /var/lib/pgsql/data-old/*.conf
-rw-------. 1 postgres postgres 4.2K 2017-09-15 11:41 /var/lib/pgsql/data-old/pg_hba.conf
-rw-------. 1 postgres postgres 1.6K 2017-09-12 15:55 /var/lib/pgsql/data-old/pg_ident.conf
-rw-------. 1 postgres postgres 20K 2022-07-07 14:28 /var/lib/pgsql/data-old/postgresql.conf
[root@centos7PC data]#
pg_hba.confにtcp/ipの参照元ipアドレスとその認証方式の設定がありますが、デフォルトに置き換わっています。/var/lib/pgsql/data-old/pg_hba.confの内容を反映させます。
[root@centos7PC data]# vi pg_hba.conf
・
・
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all ???.???.???.???/??? ???
# IPv6 local connections:
host all all ???:???:????/??? ???
postgresql.confのlisten_addressesもデフォルトに置き換わっていますので、そちらも/var/lib/pgsql/data-old/postgresql.confを参照して反映させます。私の場合は、外部からのアクセスを可にしていますので、以下のような設定に戻します。
[root@centos7PC data]# vi postgresql.conf
・
listen_addresses = '*' # what IP address(es) to listen on;
・
この2つの設定を戻すことで無事、内部/外部からアクセスすることができるようになりました。
補足
ここまでお読みいただき、ありがとうございます。これからは私の趣味についてお話します。もしよろしければ、もうしばらくお付き合いください。
この道具は、使い古された緑茶や前茶を煎って、手で振りながら強火で1分ほどでほうじ茶にするための道具です。
通常の使い方ではなく、コーヒー生豆の焙煎に使います。妻と週末に飲むために、毎週月曜日に10分だけ費やしています。
不器用な男性は、労力を通じて感謝や愛情を表現します
コーヒー豆を焙煎すると、そのおいしさがピークに達するのは焙煎後約5日目くらいだと言われています。一般的には、焙煎後3日から14日の間が最も美味しい期間とされています。週末に消費する分としては、約60g(約6杯分)が適量です。
私は以前はブルーマウンテンやエメラルドマウンテンのような酸味のある豆が好みでしたが、最近は高価で手が届かなくなりました。酸味のある豆の中で、手ごろな価格で手に入る代表がモカです。モカは広く知られているため、価格が比較的安定しているでしょう。私の好みの豆には及びませんが、モカも非常においしい豆の一つです。
たまには贅沢に、最高級グレードのG1を試してみませんか?少量でも手ごろな価格で入手できると思います。
1杯あたりの価格は約10gで50~60円ほどです。G1のモカをこの価格で味わえるのは本当にお得です。財布に厳しい妻も大満足です。
なんだか、コーヒーが飲みたくなってきたわ。
最後まで読んでいただき、ありがとうございました。
コメント