Discourse のアップデート失敗

本日、Discourseを最新バージョンにアップデートしようとしましたが、失敗しました。ログは以下の通りです。

********************************************************
*** 少々お待ちください、次のステップには時間がかかる場合があります ***
********************************************************
メモリを解放するため、Unicornを再起動します
Unicornを再起動します pid: 548
Unicornの再読み込みを待っています。
Unicornの再読み込みを待っています..
Unicornの再読み込みを待っています...
Unicornの再読み込みを待っています....
Unicornの再読み込みを待っています.....
Unicornの再読み込みを待っています......
Unicornの再読み込みを待っています.......
Unicornの再読み込みを待っています........
Unicornの再読み込みを待っています.........
メモリを解放するため、3つのUnicornワーカーを停止します
メモリを解放するため、ジョブキューを停止します、マスターpidは 2943724 です
$ cd /var/www/discourse & git fetch --tags --prune-tags --prune --force
$ cd /var/www/discourse & git reset --hard HEAD@{upstream}
HEAD は be4f1e335 PERF: Cache `hostname` in `DiscourseLogstashLogger` (#27442) に設定されました
$ bundle install --retry 3 --jobs 4
Bundleが完了しました! 141 Gemfileの依存関係、174個のgemがインストールされました。
'development' および 'test' グループのgemはインストールされませんでした。
バンドルされたgemは `./vendor/bundle` にインストールされます
直接依存しているgemのうち1つが資金調達を求めています。
  詳細については `bundle fund` を実行してください
$ yarn install
yarn install v1.22.19
[1/5] package.json を検証中...
[2/5] パッケージを解決中...
warning Resolution field "unset-value@2.0.1" is incompatible with requested version "unset-value@^1.0.0"
[3/5] パッケージを取得中...
error ember-template-lint@6.0.0: The engine "node" is incompatible with this module. Expected version "^18.18.0 || ^20.9.0 || >=21.1.0". Got "18.16.0"
error 非互換モジュールが見つかりました。
info このコマンドに関するドキュメントについては https://yarnpkg.com/en/docs/cli/install を参照してください。
Docker Manager: アップグレードに失敗しました
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:210:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:101:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/commands.rb:18:in `<main>'
/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
最初に停止された3つのUnicornワーカーを起動します

何か考えはありますか?

コマンドラインでのアップグレードを実行してください。

./launcher rebuild app

「いいね!」 2

ジェイ様

対応しました。./launcher start app も試しました。

しかし、今度はNginxからのBad Gatewayエラーという、別のエラーが発生しました。Discourseがストレージ不足を訴えていたことに気づきましたが、スペースを整理しました。

情報を添付します。

スペースを解放した後、スタートまたは再構築を行いましたか?

コンテナを開始した後、1分か数分間、Bad Gatewayは予期されるものです。しかし、データベースを移行し、古いコンテナが機能しなくなった可能性があります。

「いいね!」 1

毎回 ./launcher rebuild app./launcher start app./launcher restart app を実行するたびに、スペースのクリーンアップに関する面倒な質問が表示されます。毎回 Y を押しています。

手動でスペースを整理しました。どうやら snap ディレクトリに不要なファイルがあったようです。

その後、./launcher restart app を再度試しました。今回はエラーが消えました。

しかし、依然として 502 Bad Gateway エラーが発生しています。

「いいね!」 1

If you’re still getting that after the site’ been up for a few minutes then look at /var/discourse/shared/standalone/logs/rails/production.log and also .../logs/var-log/nginx/*

PostgreSQLの問題ですね。どうすれば修正できますか? 通常、PostgreSQLサーバーを手動で起動することはありませんよね。

postgres_data内のファイルは、サーバー上の私のユーザー名が所有しており、グループはcrontabです。

なぜですか?

これは標準的なインストールではありませんか?

標準のインストールを使用しました。

その後、更新プロセス(管理ダッシュボード経由)が失敗しました。そのため、サーバーにSSHで接続し、いくつかのスペースをクリーンアップする必要がありました。./launcher rebuild (または restart) app を実行したとき、プロセスはエラーを発生しませんでしたが、502 Bad Gatewayエラーが発生しました。

したがって、postgres_data は誰が所有すべきですか? root?

これはすべてrootとしてインストールする必要があります。

ルート権限で ./launcher rebuild (or restart) app を実行しました。最初に sudo su を実行しました。いずれにせよ、通常のユーザーで launcher を実行すると(Docker がエラーを出すはず)、実行できないと思います。

これで問題が解決しました。

  1. Discord 用にストレージを拡張しました。GCP の Discord VM のスナップショットを作成し、より大きなストレージで復元しました。
  2. containers/app.yml ファイルの内容を変更しました。

変更前

templates:
  - "templates/postgres.template.yml"

変更後

templates:
  - "templates/postgres.13.template.yml"

その後、./launcher rebuild app を実行したところ、問題は発生しませんでした。

ありがとうございました!

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.