あいかわらずひっそりとおひとりさまMastodonインスタンスを運営しているのですが、今回のアップデートはやることがいろいろあったので、備忘録としてメモ。
以下のサイトを参考にさせていただきました。ありがとうございました。
素人がMastodonインスタンス運用でハマったトラブルシューティング10選+α v1.2.2→v1.3.2→v1.4.0.2(v1.4rc2)→v1.4.7→v1.5.0rc1→v1.5.1→v1.6|西村 治久《ソーシャルな隠居》|note
「さくらのクラウド」スタートアップスクリプトによるMastodonを、v2.3.3からv2.4.0rc3にバージョンアップした時につまずいた話。|西村 治久《ソーシャルな隠居》|note
CentOS 7.3にインストールしたPostgreSQL 9.4から9.6へアップデートする - ビー鉄ブログ
Mastodon地域インスタンス「箕面どん」をv.2.4.0にアップデートしました – tonetalk
ゼロからはじめるMastodon インスタンス運用編 | さくらのナレッジ
なお、私のインスタンスは、さくらのクラウドさんのスタートアップスクリプトにお世話になって立ち上げたもの(CentOS7)です。
エディタ(vim)、ダウンローダ(wget)等は適宜、別にインストールしました。
(1)PostgreSQLのアップデート
(1-1)リポジトリをインストールして、データベースを設定・初期化する。
yum install https://download.postgresql.org/pub/repos/yum/9.6/ redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm yum list | grep postgresql96 yum install postgresql96-server alternatives --display pgsql-psql alternatives --display pgsql-pg_dump PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --no-locale" /usr/pgsql-9.6/bin/postgresql96-setup initdb
各ステップでエラーがないことをちゃんと確認しながら進める。
*最後のデータベースの初期化(普通の人は失敗しない……)でうっかりタイプミスして失敗したのを見逃していて、データベース(/var/lib/pgsql/9.6/data/base)ができていなかった→あとでpg_upgradeを利用して、旧バージョンのデータを新バージョンに移行するときに、移行先のデータベースがないよと怒られた→/var/lib/pgsql/9.6/data/をまるっと削除して、もっかいinitdbすれば大丈夫。
(1-2)pg_upgradeでデータを移行する
(1-2-1)稼働中のPostgreSQLサーバーを停止する
systemctl stop postgresql systemctl status postgresql
まずとにもかくにも稼働中のPostgreSQLサーバーを停止する。しないと最後に「There seems to be a postmaster servicing the old cluster. Please shutdown that postmaster and try again.」と言って怒られる。怒られた後に旧PostgreSQLサーバーを停止してもまあ大丈夫。
(1-2-2)ソースをダウンロード・展開して、src/bin/pg_upgrade/server.cを修正する
これを修正しないとpg_upgradeがうまくいかないんですって。
cd /usr/local/src wget https://ftp.postgresql.org/pub/source/v9.6.9/postgresql-9.6.9.tar.gz tar zxf postgresql-9.6.9.tar.gz cd postgresql-9.6.9 vim src/bin/pg_upgrade/server.c
(GET_MAJOR_VERSION(cluster->major_version) < 903) ?
となっているところを
(GET_MAJOR_VERSION(cluster->major_version) < 900) ?
と変更する。
(1-2-3)ビルドして、修正後のバージョンと置き換える
./configure && make cd /usr/pgsql-9.6/bin/ mv pg_upgrade pg_upgrade.rpm cp /usr/local/src/postgresql-9.6.9/src/bin/pg_upgrade/pg_upgrade .
(1-2-3)pg_upgradeを実行する
postgresユーザに切り替えるのを忘れないこと。
su - postgres -bash-4.2$ /usr/pgsql-9.6/bin/pg_upgrade -d /var/lib/pgsql/data -D /var/lib/pgsql/9.6/data -b /usr/bin/ -B /usr/pgsql-9.6/bin/
(1-3)設定ファイルを書き換える
vim /var/lib/pgsql/9.6/data/pg_hba.conf
METHOD欄を全部「trust」にする。
vim /var/lib/pgsql/9.6/data/postgresql.conf
127行目の
dynamic_shared_memory_type = posix
という行の先頭に#を付けてコメントアウトする。
(1-4)PostgreSQL 9.6に切り替える。
systemctl disable postgresql systemctl start postgresql-9.6 systemctl enable postgresql-9.6 reboot
自分のインスタンスを見に行って、ちゃんとデータベース移行できて動いていることを確認する。
(確認できるととても嬉しくて安心する)
(2)rubyのアップデート
mastodonユーザに切り替えるのを忘れないこと。
ruby 2.5.1にするにあたって、インストール可能なrubyのバージョンのリストを更新する。
su - mastodon cd ~/.rbenv/plugins/ruby-build git pull origin master
v.2.5.1がリストに出てくるので、それをインストールする。
rbenv install 2.5.1 rbenv rehash rbenv global 2.5.1
できました。
(3)mastodonのアップデート
いつもの感じで、mastodonの最新バージョンを確認していく。
su - mastodon cd /home/mastodon/live git fetch git stash git tag
今回はv2.4.0にするので、v2.4.0のブランチに移動して作業していく。
git checkout v2.4.0 git stash pop git branch
おけおけ。
gem install bundler bundle install --deployment --without development test yarn install RAILS_ENV=production bundle exec rails db:migrate RAILS_ENV=production bundle exec rake mastodon:maintenance:add_static_avatars RAILS_ENV=production bundle exec rails assets:precompile exit systemctl restart mastodon*
やったね!