アップグレードに失敗しました

Docker を使用して単一コンテナで Debian 11 上の Discourse を実行しています。

./launcher rebuild app を使用して更新を試みました。

次のようなメッセージが表示されて失敗します。

I, [2023-01-04T20:53:09.920876 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!

再び起動する方法が見つかりません。

何かアイデアはありますか?

所有者が間違っているようです

drwxr-xr-x 15 sshd             netdev          4096 Jan  4 21:43 .
drwxr-xr-x  3 root             root            4096 Jan  3  2018 ..
drwxr-xr-x  3             1000 www-data        4096 Jan  3  2018 backups
drwxr-xr-x  8 sshd             netdev          4096 Feb  2  2021 letsencrypt
drwxr-xr-x  4 sshd             netdev          4096 Jan  3  2018 log
drwxr-xr-x  2 systemd-timesync systemd-resolve 4096 Jan  3  2018 postgres_backup
drwx------ 19 systemd-timesync systemd-resolve 4096 Jan  4 21:53 postgres_data
drwx------ 19 sshd             netdev          4096 Jan  4 20:49 postgres_data_new
drwxrwsr-x  6 systemd-timesync systemd-resolve 4096 Jan  4 21:53 postgres_run
drwxr-xr-x  2 systemd-resolve  kvm             4096 Jan  4 21:53 redis_data
drwxr-xr-x  2 sshd             netdev          4096 Jan 22  2021 ssl
drwxr-xr-x  2 sshd             netdev          4096 Jan 21  2021 ssl_old
drwxr-xr-x  4 sshd             netdev          4096 Jan  3  2018 state
drwxr-xr-x  4             1000 www-data        4096 Jan  4 21:28 tmp
drwxr-xr-x  4             1000 www-data        4096 Jan  5  2018 uploads

./launcher start app でコンテナを開始します。次にコンテナに入ります: ./launcher enter app

所有権をリセットします chown -R postgres:postgres /shared/

その後、修正されます。しかし、アプリを再度ビルドすると、所有者が再び間違ったものになります…

これはエラーではありません。もっと上のほうにあるはずです。ログをさらに確認する必要があります。

2023-01-04 20:48:05.355 UTC [41] LOG:  PostgreSQL 13.9 (Debian 13.9-1.pgdg110+1) を x86_64-pc-linux-gnu 上で起動しています。gcc (Debian 10.2.1-6) 10.2.1 20210110 でコンパイル済み、64-bit です。
2023-01-04 20:48:05.377 UTC [41] LOG:  IPv4 アドレス "0.0.0.0"、ポート 5432 でリッスンしています。
2023-01-04 20:48:05.377 UTC [41] LOG:  IPv6 アドレス "::"、ポート 5432 でリッスンしています。
2023-01-04 20:48:05.566 UTC [41] LOG:  Unix ソケット "/var/run/postgresql/.s.PGSQL.5432" でリッスンしています。
2023-01-04 20:48:05.734 UTC [44] LOG:  データベースシステムは 2023-01-04 20:46:17 UTC にシャットダウンされました。
2023-01-04 20:48:05.878 UTC [41] LOG:  データベースシステムは接続を受け入れられる状態になりました。
I, [2023-01-04T20:48:09.779985 #1]  INFO -- :
I, [2023-01-04T20:48:09.780390 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2023-01-04 20:48:10.014 UTC [54] postgres@postgres ERROR:  データベース "discourse" は既に存在します。
2023-01-04 20:48:10.014 UTC [54] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR:  database "discourse" already exists
I, [2023-01-04T20:48:10.017003 #1]  INFO -- :
I, [2023-01-04T20:48:10.017425 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2023-01-04 20:48:10.188 UTC [58] postgres@discourse ERROR:  ロール "discourse" は既に存在します。
2023-01-04 20:48:10.188 UTC [58] postgres@discourse STATEMENT:  create user discourse;
ERROR:  role "discourse" already exists
129:M 04 Jan 2023 20:48:21.224 # ポート 6379 (TCP) でのリッスンに失敗しました。中止します。

他にエラーは見当たりません。

:man_shrugging:

コンテナ内で postgresql サービスを開始しようとするとエラーが発生します。

root@server /var/discourse # ./launcher enter app
x86_64 arch detected.
root@discourse:/var/www/discourse# service postgresql start
[FAIL] Starting PostgreSQL 13 database server: main[....] Error: Config owner (postgres:105) and data owner (systemd-timesync:101) do not match, and config owner is not root ... failed!
 failed!
root@discourse:/var/www/discourse#

共有フォルダ内のファイルの所有者を変更すると、インストールが壊れます。1つのオプションは、バックアップを再インストールして復元することです。もう1つのオプションは、それらの所有者を手動で修正することです。

「いいね!」 1

@Falco: ありがとうございます!

アップグレードが失敗した後、オーナーを変更しました。chown のヒントはどこかの投稿で見つけました。

現在の状態でバックアップを作成するにはどうすればよいですか?

オーナーを手動で修正するにはどうすればよいですか?

重ねてお礼申し上げます!

コンテナ内で discourse backup を試したところ、Redis が実行されていないという報告がありました。「現在」の Redis ログの末尾に以下の行が見つかりました…

10316:M 05 Jan 2023 08:05:27.314 # Server initialized
10316:M 05 Jan 2023 08:05:27.314 # 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.
10316:M 05 Jan 2023 08:05:27.314 # Can't handle RDB format version 10
10316:M 05 Jan 2023 08:05:27.314 # Fatal error loading the DB: Invalid argument. Exiting.
10321:C 05 Jan 2023 08:05:28.345 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
10321:C 05 Jan 2023 08:05:28.345 # Redis version=6.2.3, bits=64, commit=00000000, modified=0, pid=10321, just started
10321:C 05 Jan 2023 08:05:28.345 # Configuration loaded
10321:M 05 Jan 2023 08:05:28.346 * monotonic clock: POSIX clock_gettime
10321:M 05 Jan 2023 08:05:28.347 * Running mode=standalone, port=6379.
10321:M 05 Jan 2023 08:05:28.347 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
10321:M 05 Jan 2023 08:05:28.347 # Server initialized
10321:M 05 Jan 2023 08:05:28.347 # 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.
10321:M 05 Jan 2023 08:05:28.348 # Can't handle RDB format version 10
10321:M 05 Jan 2023 08:05:28.348 # Fatal error loading the DB: Invalid argument. Exiting.

コンテナ内で次のようにパーミッションを修正しました。

その後、./launcher restart app でコンテナを再起動しました。これで Discourse にアクセスできるようになりました。しかし、昨日 3.0.0.beta16 へのアップグレードを試みた古いバージョン 2.8.3 です。

Discourse をアップグレードするには、どうすればよいかわかりません。

このスレッドが私の問題に関連していると思います: Problem upgrading multi-site/multi-containers Discourse instance - #5 by jtraulle

以前にもアップグレードの問題があったことを思い出しますが、調査したことはありませんでした。

./launcher rebuild app

バージョンを2.9.0.beta2(コミットID:88a8584348ed93a28286839bfc1c32b06bd50b3f)に設定でき、コミットIDをapp.ymlの「version」として設定しました。今回はアップグレードがうまくいきました。その後、3.0.0.beta16にアップグレードできました。
皆さん、ありがとうございました。

「いいね!」 5

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