Mastodonを動かしているサーバーのOSをCentOS Stream 8からCentOS Stream 9に更新した

作成日:2024/05/05 更新日:2024/05/06

BMW and more(デジタル)のインデックスページ
Mastodon(お一人様インスタンス)

人気ブログランキング

ブログランキング・にほんブログ村へにほんブログ村

PVアクセスランキング にほんブログ村

これは私のサーバーを更新した際のメモでありこの通りに行えば成功することを保証するものではない。更新は自己責任!

やること

ざっと書き出すと以下の作業になる。

postgresqlのバックアップを取得する

失敗してサーバーがぶっ壊れましたというときのためにpostgresqlのバックアップを取得する。mastodon関連のプロセスを停止してバックアップを取得。


# systemctl stop mastodon-*
# su - postgresql
$ pg_dumpall -c > backups/20240504.dump

リポジトリをCentOS Stream 9のものにする

リポジトリをCentOS Stream 9のものに変更する。標準のリポジトリはCentOS Stream 9のものをインストールするだけ。他はCentOS Stream 8用を削除してCentOS Stream 9用をインストールする。うちの環境だとRemiリポジトリが競合を起こした。特に使用していないのでRemiリポジトリは削除した。epel-nextはepelで入るしrpmfusionはepelの削除で消えるのでやらなくてもいいけど一応書いておく。なおリポジトリの更新に関しては
CentOS Stream 8をStream 9にアップグレードしてみた | ツインターボのブログ
CentOS 8、CentOS Stream 8 を CentOS Stream 9にアップグレードする - 技術的な何か。
を参考にした。


dnf remove remi-release.noarch
dnf install http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-stream-repos-9.0-24.el9.noarch.rpm http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-stream-release-9.0-24.el9.noarch.rpm http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-gpg-keys-9.0-24.el9.noarch.rpm
dnf remove epel-release
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm	
dnf remove rpmfusion-free-release
dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-9.noarch.rpm

更新処理

上のサイト及び
CentOS Streamを8から9にアップグレードする | Nemutai
を参考に更新処理を行う。なおCentOS Stream 9ではpowertoolsリポジトリはなくなり代わりにcrbというリポジトリになっている。それから--enablerepo=crbを追加している。これをしないとpowertoolsリポジトリから入れたものが移行されない。crbに同一パッケージの新バージョンがあったら標準リポジトリではなくそちらが使われる?まあ、その時はその時で。動かないわけではないだろう。


# dnf --releasever=9 --enablerepo=crb --allowerasing --setopt=deltarpm=false distro-sync
# rpmdb --rebuilddb
# dnf remove subscription-manager
# dnf clean all
# dnf upgrade
# dnf groupupdate "Core" "Minimal Install"
# reboot

nginxライブラリのオーナー変更

CentOS(というかREHL系)でMastodonを動かす場合、nginxのuserをmastodonにする必要がある。結果、nginxのライブラリーのオーナーもmastodonに変更する必要がある。OSの更新でここのオーナーが元に戻ってしまうので再度変更をしておく。


# chown -R mastodon:root /var/lib/nginx

アセットの再作成

OpenSSLのバージョンがCentOS Stream 8は1系だがCentOS Stream 9は3系となる。このためアセットの再作成を行わないとmastodon-webとmastodon-sidekiqがエラーとなる。基本はrubyをアンインストールして再インストールなのだが使用中でアンインストールできないというエラーが。これはアンインストール(bundle exec gem uninstall -aIx)ではなくバージョン戻し(bundle pristine)で対応できた。またprecompileでエラーとなるがこれはnodejsのバージョンが古いことが原因だった。CentOS Stream 9に更新後に入っていたnodejsのバージョンは18。安定版の最新は20。20にすることでエラーは消えた。またヒープサイズを従来より拡大しないとエラーになる。アセットの再作成に関してはいつもお世話になっている
Mastodon メンテナンスメモ(移植版)
を参考にした。またRubyが使用しているOpenSSLのバージョンを確認するのに
Ruby で使われる OpenSSL のバージョンを更新する - どいブログ
が参考になった。


[mastodon]$ export NODE_OPTIONS="--max-old-space-size=8192"
[mastodon]$ rbenv uninstall 3.2.3
[mastodon]$ RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.2.3
[mastodon]rbenv global 3.2.3
[mastodon]gem install bundler --no-document
[live]bundle pristine
[live]RAILS_ENV=production bundle exec rails assets:clobber
[live]RAILS_ENV=production bundle exec rails assets:precompile

dnf moduleのリセット

あとdnfのmoduleがCentOS Stream 8とCentOS Stream 9では使えるものが異なるようでdnfコマンドを実行する度にエラーが表示されるのでリセットしておく。インストールしていないものもエラーが出るので面倒である。エラーが表示されても実害はないのだが。

logrotateが止まっているので動かす

参考にしたサイトにいろいろと目を通して気がついた。こういうのは数日回してみないとわからないな。


# systemctl status logrotate