3.0.0.beta16から3.1.0.beta2へのアップデート

バックアップを試みましたが、失敗しました。

アップグレードを試みました。

最初は、アップグレード画面のすべてが無効になっていました。再起動したところ、docker_manager のアップグレードを選択できるようになりました。しかし、以下のエラーで失敗しました。

rake aborted!
NoMethodError: undefined method `path' for nil:NilClass

そこで、サーバーに SSH で接続し、再構築を試みました。以下はその結果です。

root@Discourse-1:/var/discourse# ./launcher rebuild app
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
............
Downloading MaxMindDB...
Compressing Javascript and Generating Source Maps

I, [2023-03-10T03:08:58.958320 #1]  INFO -- : Terminating async processes
I, [2023-03-10T03:08:58.958649 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 42
I, [2023-03-10T03:08:58.958745 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 103
103:signal-handler (1678417738) Received SIGTERM scheduling shutdown...
2023-03-10 03:08:58.959 UTC [42] LOG:  received fast shutdown request
2023-03-10 03:08:58.966 UTC [42] LOG:  aborting any active transactions
2023-03-10 03:08:58.969 UTC [42] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
2023-03-10 03:08:58.971 UTC [46] LOG:  shutting down
103:M 10 Mar 2023 03:08:59.047 # User requested shutdown...
103:M 10 Mar 2023 03:08:59.047 * Saving the final RDB snapshot before exiting.
2023-03-10 03:08:59.060 UTC [42] LOG:  database system is shut down
103:M 10 Mar 2023 03:08:59.073 * DB saved on disk
103:M 10 Mar 2023 03:08:59.073 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1004 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
e956a73644feb880e4b524bcbd4fa3c626fcfcc4edb3752f72e523194f663b4e
root@Discourse-1:/var/discourse# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
root@Discourse-1:/var/discourse# 

app.yml にプラグインはありますか?
このようなことが起こる場合、通常はプラグインが破損しているため、再構築が機能する前にコメントアウトする必要があります。

「いいね!」 1

どのくらいのメモリがありますか? マシンを再起動して、再度ビルドしてみてください。

「いいね!」 1

free は何を示していますか?

個人的には、バックアップが失敗した場合、アップデートを試みることはありません。バックアップ(コピーをダウンロードしておくことも含めて)は私にとって前提条件です。現時点では役に立たないコメントかもしれませんが、言っておく必要があると思います。

「いいね!」 3

他の投稿では、中断されたrakeについてもう少し詳しく説明されています。

「いいね!」 2

それが問題ではありません。MaxMind DB をダウンロードするためのキーがないように見えます。問題は上記にあります。

「いいね!」 1

問題がスポーンの失敗である場合、RAMとスワップの使用量だけでなく、カーネルの設定も重要になります。ログに次のように表示される場合:

# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

その場合は、アドバイスに従う価値があります。以下も参照してください。

Discourse のインストールは非常に一般的です。再起動後にクリーンなバックアップを取得しました。そのため、最終的にはゼロからインストールすることにしました。インストールは、上記で投稿したのと同じエラーで失敗しました。過去 4 年間、LXD コンテナで 6GB のメモリで Discourse を問題なく実行してきました。メモリ使用率は 1.9GB で安定しています。アップグレード中、メモリは 5.1GB にピークに達します。データベースのバックアップは 30GB のデータのみなので、私のインストールは他のものと比較して小さいです。私の構成は Ubuntu 22.04 で実行されています。別のディストリビューションを使用すべきでしょうか?

「いいね!」 1

ユーザーが約40人、投稿が150件あります。システムは1.8GBのメモリを使用しており、6GBのメモリを割り当てました。再構築を機能させるには、どのくらいのメモリが必要ですか?過去には常に十分でした。

プラグインは一切使用していません。

app.yml ファイルを共有していただけますか?MaxMind の API キーが無効になっているようです。

「いいね!」 1
## これは、オールインワンのスタンドアロン Discourse Docker コンテナテンプレートです
##
## このファイルを変更した後は、必ず再構築してください
## /var/discourse/launcher rebuild app
##
## 編集は*非常に注意深く*行ってください!
## YAML ファイルは、空白またはインデントの間違いに非常に敏感です!
## 必要に応じて、http://www.yamllint.com/ でこのファイルを検証してください

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## HTTPS の Let's Encrypt を追加したい場合は、これらの 2 行のコメントを解除してください
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## このコンテナはどの TCP/IP ポートを公開しますか?
## Discourse が Apache や nginx のような他の Web サーバーとポートを共有したい場合は、
## https://meta.discourse.org/t/17247 を参照してください
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## db_shared_buffers を総メモリの最大 25% に設定します。
  ## ブートストラップによって検出された RAM に基づいて自動的に設定されますが、オーバーライドすることもできます
  db_shared_buffers: "4096MB"

  ## ソートパフォーマンスを向上させる可能性がありますが、接続ごとのメモリ使用量が増加します
  #db_work_mem: "40MB"

  ## このコンテナはどの Git リビジョンを使用しますか? (デフォルト: tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## 同時に処理できる Web リクエスト数は? メモリと CPU コアに依存します。
  ## ブートストラップによって検出された CPU に基づいて自動的に設定されますが、オーバーライドすることもできます
  UNICORN_WORKERS: 8

  ## TODO: この Discourse インスタンスが応答するドメイン名
  ## 必須。Discourse は単なる IP アドレスでは機能しません。
  DISCOURSE_HOSTNAME: discussion.scottibyte.com

  ## 上記で指定されたホスト名 (-h オプション) と同じホスト名でコンテナを起動したい場合は、コメントを解除してください (デフォルトは "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: 初期サインアップ時に管理者および開発者として登録されるメールアドレスのカンマ区切りリスト
  ## 例: 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'aaaaaa@gmail.com'

  ## TODO: 新規アカウントの検証および通知の送信に使用される SMTP メールサーバー
  # SMTP アドレス、ユーザー名、およびパスワードが必要です
  # 注意: SMTP パスワードの '#' 文字は問題を引き起こす可能性があります!
  DISCOURSE_SMTP_ADDRESS: smtp.gmail.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: redacted
  DISCOURSE_SMTP_PASSWORD: redacted
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (オプション、デフォルトは true)
  DISCOURSE_SMTP_DOMAIN: discussion.scottibyte.com
  DISCOURSE_NOTIFICATION_EMAIL: noreply@scottibyte.com

  ## Let's Encrypt テンプレートを追加した場合、無料 SSL 証明書を取得するには以下をコメント解除してください
  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## この Discourse インスタンスの HTTP または HTTPS CDN アドレス (プル用に設定)
  ## https://meta.discourse.org/t/14857 を参照してください
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  
  ## IP アドレスルックアップ用の MaxMind ジオロケーション IP アドレスキー
  ## https://meta.discourse.org/t/-/137387/23 を参照してください
  DISCOURSE_MAXMIND_LICENSE_KEY: aaaaaaaa

## Docker コンテナはステートレスです。すべてのデータは /shared に保存されます
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## プラグインはここに配置します
## https://meta.discourse.org/t/19157 を参照してください
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## ビルド後に実行するカスタムコマンド
run:
  - exec: echo "カスタムコマンドの開始"
  ## 最初の登録の 'From' メールアドレスを設定したい場合は、コメントを解除して変更してください:
  ## 最初のサインアップメールを受け取ったら、行を再度コメントアウトしてください。一度だけ実行する必要があります。
  # - exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "カスタムコマンドの終了"

新しいビルドを行った際、新しいMaxmindキーを試しましたが、同じエラーが発生しました。

DISCOURSE_MAXMIND_LICENSE_KEY が含まれる行を削除またはコメントアウトし、再構築してください。

「いいね!」 1

あと、参考までに。現在はすべて正常に動作しています。アップデートが問題を引き起こしています。

YAML の Maxmind キーをコメントアウトしました。再構築中です。ちなみに、メール通知は常に正常に機能していました。最近、バックアップダウンロードリンクのメールが機能しなくなりました。フォルダに移動して sftp でバックアップをダウンロードするだけで、それは機能し、バックアップログは正常に完了します。それで、Maxmind キーの問題は何だと思いますか?

@Falco Maxmindキーが原因だったようです。


ご覧の通り、再構築は成功し、フォーラムは最新のビルドになりました。GUIからの新しいバックアップ、バックアップ通知、バックアップダウンロードリンクもすべて正常に機能しました。すべて問題なく動作しています。
ありがとうございます、あなたはマスターです!素晴らしいコメントと素晴らしい助けをありがとうございます。

新しいMaxmindキーを使っても、うまくいきませんでした。それについて何かアドバイスはありますか?

「いいね!」 3

無効なキーはビルドを壊しますが、null キーは壊さないということですか?

「いいね!」 2

理想的にはどちらもそうならないでしょう。バグを報告してエンジニアに修正を依頼できるように、何が壊れているのかを正確な再現手順とともに確認する必要があります。

「いいね!」 2

キーをコメントアウトしただけで、リビルドは完璧に機能しました。有効な(新しいキーでも)キーを使用すると、提供したログでビルドが失敗します。

「いいね!」 1