업데이트 "3.4.0.beta4" 실패

로그인하여 GUI 업데이트 버튼을 클릭하라는 통상적인 이메일을 받았습니다. 보통은 잘 작동하지만, 이번에는 아무 설명 없이 사이트 전체가 충돌했습니다.

웹사이트 GUI를 사용할 수 없었기 때문에 droplet에 SSH로 접속하여 /var/discourse 디렉터리로 이동한 후 재시작을 시도했지만, 시스템이 멈춥니다.

연결을 닫고 다시 SSH로 접속하여 director 디렉터리로 이동한 후 rebuild를 시도했지만, 이것도 멈춥니다.

비슷한 불만을 제기하는 다른 게시물들을 몇 개 보았지만, 해결책은 없습니다. 어떻게 해야 할까요?

멈출 때의 출력 결과는 다음과 같습니다:

# ./launcher rebuild app
WARNING: Docker version 20.10.5 deprecated, recommend upgrade to 24.0.7 or newer.
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
2.0.20250129-0720: Pulling from discourse/base
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Image is up to date for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-06T23:22:07.378632 #1]  INFO -- : Reading from stdin
I, [2025-02-06T23:22:07.397972 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown: 
I, [2025-02-06T23:22:07.403501 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2025-02-06T23:22:07.409307 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2025-02-06T23:22:07.415306 #1]  INFO -- : File > /root/install_postgres  chmod: +x  chown: 
I, [2025-02-06T23:22:07.420321 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown: 
I, [2025-02-06T23:22:07.421155 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/15/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T23:22:07.423599 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T23:22:07.428964 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T23:22:07.434970 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T23:22:07.435971 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T23:22:07.437209 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T23:22:07.438032 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T23:22:07.438766 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T23:22:07.439506 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-06T23:22:07.440192 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T23:22:07.440757 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T23:22:07.441342 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-06T23:22:07.442038 #1]  INFO -- : > if [ -f /root/install_postgres ]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi

failed to set locale!
[error] character map file `UTF-8' not found: No such file or directory
failed to set locale!
[error] default character map file `ANSI_X3.4-1968' not found: No such file or directory
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = "en_US.UTF-8",
	LC_ALL = "en_US.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
cat: /shared/postgres_data/PG_VERSION: No such file or directory
popen failure: Cannot allocate memory
initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
I, [2025-02-06T23:22:09.511169 #1]  INFO -- : Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
Upgrading PostgreSQL from version to 15

I, [2025-02-06T23:22:09.511908 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
I, [2025-02-06T23:22:09.514561 #1]  INFO -- : Terminating async processes
2025-02-06 23:22:09.541 GMT [51] LOG:  skipping missing configuration file "/shared/postgres_data/postgresql.auto.conf"
2025-02-06 23:22:09.542 UTC [51] FATAL:  data directory "/shared/postgres_data" has invalid permissions
2025-02-06 23:22:09.542 UTC [51] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).



PostgreSQL 15 업데이트를 참조하세요.

아래 명령어를 실행해야 할 것 같습니다.

권한을 변경해야 합니다 (소유자에 대해서는 제가 잘못 말씀드렸습니다)

저도 같은 문제를 겪고 있습니다

이 문제들을 해결해야 합니다. 서버 사양은 어떻게 되나요?

아! Docker 버전 문제를 놓치고 있었네요.

@anon55243134, 가능하면 백업(백업)을 만들고 새 VM으로 이전하는 것이 좋습니다(최근 백업이 없다면 rsync를 사용하여 Discourse 사이트를 다른 VPS로 이전하기를 참고하세요).

관련:

제 추측으로는 수명(End of Life)이 끝났을 가능성이 큽니다.

새 VM을 생성하고 전환하는 과정은 다운타임이 전혀 없으며, 문제가 발생하면 기존 서버를 그대로 유지하면 됩니다. 다만 과정이 다소 복잡합니다.

구식 백업으로 전환할 수밖에 없었던 점에 대해 죄송합니다. 데이터 손실을 방지하기 위해 일일 백업으로 전환하고, 업데이트 전에 백업을 수행하는 것을 권장합니다.

업그레이드 전에 베타 또는 안정판 브랜치로 전환할 수 있습니다. 지원되는 추적 브랜치를 구성하여 Discourse 소프트웨어 업데이트를 받는 방법에 대해 읽어보실 수 있습니다.

저는 data.yml을 사용하고 있습니다. app.yml을 사용하고 계신 경우, app.yml 내에서 postgres.template.yml에 대한 참조된 설정에 유의해 주세요. 데이터베이스 업그레이드 과정에서는 13에서 15 버전으로의 업그레이드를 수행하기 위해 계층적 참조를 사용해야 합니다.