Discourse가 무작위로 실행되지 않거나 다시 빌드되지 않음

갑자기 Discourse가 실행되지 않고, ./launcher rebuild app을 사용해도 재구성이되지 않습니다. 모든 플러그인도 주석 처리했습니다.

시작하려고 할 때의 로그입니다: https://codefile.io/f/8XUuOqyEDd

./launcher rebuild app을 사용할 때의 로그입니다. "failed listening on port 6379 (TCP) aborting"이라는 메시지가 보이는데, 해당 포트에서 실행 중인 것이 아무것도 없습니다!

https://codefile.io/f/zxCBRzEOA9

이 문제는 해당 사항이 아닌 것 같습니다. 이 경고는 재빌드(rebuild) 중에 자주(항상?) 나타납니다.

error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: Connection refused

사용자분의 문제는 이 쪽에서 비롯된 것으로 보입니다.

이 정보가 단서를 줄 수 있습니다:

제가 ./launcher rebuild app을 실행하지 않고 실행했을 때 작동하지 않는 원인이 이것일까요?

서버의 다른 모든 서비스를 중지하고 최신 Ubuntu LTS로 업데이트했지만, 여전히 다음과 같은 오류가 표시됩니다:

PG::ConnectionBad: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: Connection refused (PG::ConnectionBad)
        Is the server running locally and accepting connections on that socket?

이것이 오류의 원인이라고 생각됩니다.

참조된 게시물에 나와 있듯이, 템플릿을 13번이나 심지어 15번으로 교체해도 문제가 해결되지 않았습니다.

원인:
PG::ConnectionBad: 소켓 "/var/run/postgresql/.s.PGSQL.5432"에 대한 서버 연결 실패: 파일 또는 디렉터리가 없습니다 (PG::ConnectionBad)
서버가 로컬에서 실행 중이며 해당 소켓으로 연결을 수락하고 있습니까?

timeout: down: postgres: 1s, normally up, want up

데이터베이스가 제대로 시작되지 않는 것 같습니다. 로그를 보면 간헐적으로 정상적으로 시작되긴 하지만, 그 시간이 매우 짧으므로 이는 오해의 소지가 있을 수 있습니다.

ok: run: postgres: (pid 315501) 0s

특히 앱 컨테이너를 시작할 때, postgres 로그에 문제의 단서가 있을 수 있습니다.

tail -f shared/standalone/log/var-log/postgres/current

PostgreSQL 15 업데이트를 수행하셨나요?

저 역시 비정상 종료(unclean shutdown) 때문이라고 생각합니다. 백업이 있다면, 새로운 VM을 생성하고 백업을 복원하는 것이 좋습니다. rsync를 사용하여 Discourse 사이트를 다른 VPS로 이동하기 가이드를 따르되, postgres_* 항목은 제외하면 됩니다.

백업이 없는 경우의 대안은, 배우고 싶지 않은 postgres 관련 복잡한 문제들을 직접 해결해야 하는 것입니다.

포럼이 다운된 상태(관리자 설정에 접근하거나 백업을 다운로드할 수 없는 경우)에서 내 백업 파일에 어떻게 접근할 수 있나요?

또한, 저는 이사를 시도한 적이 없고, 평소처럼 사용하면서 웹 UI를 통해 업데이트만 해왔습니다. 왜 데이터베이스가 비정상적으로 종료되었나요?

Postgres 로그를 제공하겠습니다. 잠시만요

2025-03-22 00:30:44.110 UTC [4922] FATAL: lock file “postmaster.pid” is empty
2025-03-22 00:30:44.110 UTC [4922] HINT: Either another server is starting, or the lock file is the remnant of a previous server startup crash.
2025-03-22 00:30:45.127 UTC [4964] FATAL: lock file “postmaster.pid” is empty
2025-03-22 00:30:45.127 UTC [4964] HINT: Either another server is starting, or the lock file is the remnant of a previous server startup crash.
2025-03-22 00:30:46.151 UTC [4966] FATAL: lock file “postmaster.pid” is empty
2025-03-22 00:30:46.151 UTC [4966] HINT: Either another server is starting, or the lock file is the remnant of a previous server startup crash.
2025-03-22 00:30:47.168 UTC [4970] FATAL: lock file “postmaster.pid” is empty
2025-03-22 00:30:47.168 UTC [4970] HINT: Either another server is starting, or the lock file is the remnant of a previous server startup crash.
2025-03-22 00:30:48.192 UTC [4977] FATAL: lock file “postmaster.pid” is empty
2025-03-22 00:30:48.192 UTC [4977] HINT: Either another server is starting, or the lock file is the remnant of a previous server startup crash.

-rw------- 1 syslog kvm 0 Mar 18 19:48 /var/discourse/shared/standalone/postgres_data/postmaster.pid

여기가 제 잠금 파일(lockfile) 위치입니다

백업은 /var/discourse/shared/standalone/backups/default 에 있습니다.

이전에 링크해 드린 rsync 설명을 따라 하시면 가져올 수 있습니다.

크래시가 발생했거나 서버가 재부팅되었거나, 그런 일들이 생길 수 있습니다.

대부분의 업그레이드에서는 데이터베이스가 한 테이블 집합(테이블이 추가되고 변경됨)에서 다른 테이블 집합으로 "이전(migrate)"됩니다.

컨테이너를 중지하고 해당 잠금 파일을 삭제해 볼 수 있습니다.

템플릿을 변경해 보셨을 것 같으니, PG_VERSION 파일을 확인하여 현재 어떤 버전을 사용 중인지 확인해 보세요.

네, 에러를 확인한 후 변경을 시도해 보았습니다.

그렇다면 잠금 파일을 삭제하기 위해 rm /var/discourse/shared/standalone/postgres_data/postmaster.pid를 실행한 뒤 다시 빌드를 시도해야 하나요?

이 문제로 도움을 주셔서 감사합니다.

이 명령어로 잠금 파일을 삭제하나요?

rm /var/discourse/shared/standalone/postgres_data/postmaster.pid 명령을 실행하는 것이 해결책이었습니다. 감사합니다!