軽い気持ちでMastodon自鯖更新のためにUbuntuアップデートしたら痛い目にあった
めずらしく連日の投稿。
先日サイトのPHP8に更新するついでに「自鯖もアプデ来てたし対応するか~」と思い、リリースノートなどなどを確認。
私はkmyblueフォークを使用しているんだけど、どうやらmastodon公式がUbuntu22から24にしてくれってなっている?ぽくて、「ほ~ん、んじゃもうここまできたら頑張ってみるか!」と軽い気持ちで行動開始。
結果、自分のアホアホな行動で痛い目に遭いまくったので備忘録……。
Ubuntuのアップグレードができない
アップグレードができなかったんだよ……。
まず、DBやら設定ファイルやらのバックアップを取り、XServer VPSを使用しているのでイメージ保存もし、万全の状態で挑んだ。
しかし、無限に以下のメッセージが出てアップグレードができない。
Please install all available updates for your release before upgrading.
もちろんapt updateもapt upgradeもapt autoremoveも試している。
まあでもアイツのせいかなって心当たりはあった。
自鯖構築のときにやったあいつ。
apt-mark hold elasticsearch
こいつ。
調べるのめんどくさかったのでChatGPTに聞いたら「手動でバージョン指定ダウンロードして新しくしたらいいと思うよ!」みたいなこと言われたので、「ほ~ん、ほならアップデートしますか……まあSudachiとバージョンあってないってなりそうだけど、後からどうとでもなるでしょ」と言われるがままにアップデートする。
そうすると、無事(?)にUbuntuのアップグレードを終えることができた。
これが後に痛い目に遭うきっかけの一つになるのだが、この時点でSudachiに対応したバージョンを確認して更新していたとして上手くアップグレードはできたかわからない……。
kmyblueフォークの更新でなんか色々出る
なんか色々出た。
手順は極力書いてある通りにしているつもりだが、細かい部分(ElasticSearchのインデックス作成タイミングとかDBマイグレートのタイミングとかそのへん)はノリでやってたので、そういうのでも色々なんか出ている可能性はある。
動きゃええねん精神で生きている。良くない。
DBマイグレート
yarnのインストールを終えた後、ElasticSearchのインデックス作成コマンドを叩く。
そしたらなんか以下みたいなのが出た。(一部抜粋。関係ないとこ抜粋してたらごめんなさい。)
'FFI::DynamicLibrary.load_library': Could not open library 'vips.so.42
': vips.so.42: cannot open shared object file: No such file or directory. (LoadError)
Could not open library 'libvips.so.42': libvips.so.42: cannot open shared object file: No such file or directory.
特に調べず、コマンドの順序が悪かったんかな~とDBマイグレートコマンドを叩く。
bin/rails aborted!
LoadError: Could not open library 'vips.so.42': vips.so.42: cannot open shared object file: No such file or directory. (LoadError)
Could not open library 'libvips.so.42': libvips.so.42: cannot open shared object file: No such file or directory.
なんか似たようなエラー出たのでUbuntuのアップグレードあたりが影響してんのかなってようやくググる。
とりあえず書いてある通りlibvips42てのをインストールしてDBマイグレートした。
WARNING: データベース"mastodon_production"で照合順序バージョンの不一致が起きています
DETAIL: データベースは照合順序バージョン2.35で作成されていますが、オペレーティングシステムはバージョン2.39を提供しています。
HINT: このデータベース内でデフォルトの照合順序を使用している全てのオブジェクトを再構築して、ALTER DATABASE mastodon_production REFRESH COLLATION VERSIONを実行するか、正しいバージョ
ンのライブラリを用いてPostgreSQLをビルドしてください。
上のメッセージは出たが処理は進んだので、どうやらlibvips42てのをインストールしたのは良かったらしい。
DBのWARNING
WARNING出るの気になるので対応。
こちらを参考に、ALTER DATABASE…やる前にREINDEX DATABASE…やったほうがいいらしいので以下叩く。
$ psql mastodon_production -c "REINDEX DATABASE mastodon_production"
なんか多分インデックス分めっちゃWARNINGでるけど気にしなくていいのかな……?
一応このあとALTER DATABASE…やった後にもう一回REINDEX DATABASE…やった感じは大丈夫そうだった。
$ psql mastodon_production -c "ALTER DATABASE mastodon_production REFRESH COLLATION VERSION"
WARNING: データベース"mastodon_production"で照合順序バージョンの不一致が起きています
DETAIL: データベースは照合順序バージョン2.35で作成されていますが、オペレーティングシステムはバージョン2.39を提供しています。
HINT: このデータベース内でデフォルトの照合順序を使用している全てのオブジェクトを再構築して、ALTER DATABASE mastodon_production REFRESH COLLATION VERSIONを実行するか、正しいバージョ
ンのライブラリを用いてPostgreSQLをビルドしてください。
NOTICE: バージョン2.35から2.39への変更
ALTER DATABASE
$ psql mastodon_production -c "REINDEX DATABASE mastodon_production"
REINDEX
このあと念の為にまたDBマイグレートコマンド叩いてみたけど何も出なかったのでやっぱDBマイグレートはできてそう。
ElasticSearchのインデックス
インデックスを作ろうとするとまた違うエラーメッセージみたいなのが出る。
'HTTPClient::Session#create_socket': Connection refused - Connection refused - co
nnect(2) for "localhost" port 9200 (localhost:9200) (Faraday::ConnectionFailed)
ここから迷宮入りしはじめ、最終的にUbuntuのアップグレードでバージョンあげちゃったElasticSearchを、Sudachiに対応したバージョン(今回は7.17.24にしました)に戻し、一から構成し直しました……。
上記の記事にとても助けられました……。
ElasticSearchのバージョン下げた後は自分の鯖構築時の記事見ながら進めた、書いててよかったあ!!?!?
もういっそElasticSearchをやめようとかSudachiなしにしようとか色々やってたけど、酒を呑んでたのもあり完全に行き詰まってた……。
構築時の手順見返せばいいのに一部だけ見返して逆に一生答えにたどり着けない人になってましたとさ……。
サーバーが522エラー吐いてて見れない
ElasticSearchのインデックスも(7時間くらい……)で作成でき、やっと迷宮を抜け出せると思ったら今度は522エラー。
サービスはいずれも問題なく動いてそうで、まじで何????て感じでまたもちょっと迷宮入り。
でもやることは簡単でした………………Xserver VPSのパケットフィルター設定…………。
元々画像の通りにオフにして多分サーバーで何かしら設定していたんだろうけど、バックアップデータを自分のPCに持っていく時に謎にオンにしちゃったようで……。
ポートが塞がって接続できなくなっていただけだったとさ……トホホ……。
同じ過ちをまた繰り返さないとも言えないから、恥を忍んで残しておく……まあ既に全部恥かもしれんが……。
おしまい
そんなこんなでなんとか鯖のアプデを終えました。
約半日鯖と向き合うことになるとは思わなかった。
先人の備忘録とAIのおかげで生きている……。
最近は自鯖ほぼ覗いてなくて、もはや運動しましたbotになっているだけなんだけどさ……。
かわいい我が子(という名の自鯖)とそこで繋がったフレンズのみんなが恋しくて、レンタルサーバー代かかっているのに手放せない……。