제 설치 버전이 16,359개 커밋 뒤에 있습니다! 조언을 구합니다.

그리고 Upgrade 버튼이 회색으로 비활성화되어 있습니다:

어떻게 "Upgrade"를 진행할 수 있는지 조언을 구합니다.

명령줄 업그레이드를 수행하세요.

하지만 현재 상태가 매우 오래되었으므로, 먼저 백업을 확보하는 것이 좋습니다. 새로운 서버에 완전히 배포하고 백업 중 하나를 사용하여 복원하는 것도 고려해 볼 수 있습니다.

백업이 완료되면 다음을 시도해 볼 수 있습니다:

./launcher cleanup app을 실행한 다음
./launcher rebuild app을 실행하세요.

하지만 운영체제가 너무 오래되었거나 Docker 버전이 너무 오래되어 실행할 수 없을 수 있습니다. 그래도 한번 시도해 보세요.

마지막 업데이트가 1시간 전과 1주 전이라고 하면, 오래된 것인가요?

수정: 참고로 제 생각은 다릅니다. 하지만 그 업데이트 시간은 포럼에 있는 모든 항목이 마지막으로 업데이트된 시각이 아니라, 해당 목록이 마지막으로 갱신된 시각을 나타내는 것 아닌가요? 그렇다면 OP는 콘솔을 통해 가능한 한 빨리 업그레이드해야 할 것입니다.

고마워요. 나중에 다시 확인해 볼게요.

음, "1시간 전"이라는 표현이 무슨 뜻인지 모르겠네요. 이미 꽤 오래됐는데 말이죠!

그것은 저장소가 마지막으로 업데이트된 시점입니다. 사이트가 아닙니다.

맞아요, 제 것을 확인했을 때 그걸 깨달았어요. 매일 새로운 것들이 있죠 (다만, 저는 UI 업데이트를 거의 사용하지는 않지만요).

또한 PostgreSQL 15 업데이트도 참고하세요.

마지막 업그레이드를 4년 전에 하셨나요?

운영체제도 오래되었을 가능성이 높으므로, 새 VM을 마련하고 rsync를 사용하여 Discourse 사이트를 다른 VPS로 이전하기를 권장합니다. 이때 postgres_*는 제외하고, 백업을 복원하는 방식을 쓰면 데이터베이스 업그레이드를 피할 수 있으며, 복원 시 데이터가 자동으로 마이그레이션됩니다.

이 방식이 더 간단하고, 만약 문제가 발생하더라도 기존 사이트는 계속 유지될 수 있습니다.

자, 시작합니다. 백업을 만들었는데 UI를 통해 다운로드할 수 없습니다. 이메일이 전송되었다고 표시되지만, 현재 서버는 이메일을 보내지 못하고 있습니다.

SSH로 접속해보니 Ubuntu 14인 것을 확인했습니다.

가장 좋은 방법은 최신 OS에 최신 Discourse를 새로 배포한 뒤, 먼저 SSH로 백업을 받은 다음 업로드하는 것 같습니다.

이렇게 하면 백업을 가져오는 순간 DB가 자동으로 마이그레이션되나요?

현재 제가 있는 커밋은 46d899f9c10ebc0d44ced97d6f724dff295e7741입니다.

예를 들어, 다음과 같은 내용이 포함된 containers/app.yml 파일(왜 추가했는지 기억나지 않습니다)을 추가했습니다.

env:
  DISCOURSE_HOSTNAME: 'lume.community'
  LETSENCRYPT_ACCOUNT_EMAIL: 'joe@trusktr.io'

이 설정들이 필수였는지는 기억나지 않습니다. 필수인가요? 이상적으로는 단순히 새로운 Discourse 인스턴스를 시작하고, DB를 업로드한 후 바로 진행할 수 있으면 좋겠습니다.

이제 새로운 인스턴스를 만들어 보겠습니다…

호스트네임은 필수입니다. Let’s Encrypt는 곧 중요하지 않게 될 것입니다.

기존 데이터베이스를 새 사이트로 복원하면 자동으로 정상 작동할 것입니다. 저라면 이렇게 하겠습니다.

현재 app.yml 파일에 몇 년 전에 추가한 아래 내용이 있습니다:

  # TODO (joe) Discourse에서 관련 문제를 수정하면 이 줄을 제거하세요
  # https://meta.discourse.org/t/upgrade-rebuilds-fail-due-to-maxmind-db-eol/137387/2 참고
  DISCOURSE_REFRESH_MAXMIND_DB_DURING_PRECOMPILE_DAYS: 30

다음 링크와 관련이 있습니다:

새 인스턴스에서 이 설정을 삭제해도 될까요? 아니면 다른 조치를 취해야 하나요? 이미 오래전에 해결된 문제라고 생각하며, app.yml에 이 설정을 포함하지 않아도 될 것 같습니다.

작년 MaxMind와 관련된 여러 수정 사항이 적용되었으며, 이제는 안전할 것이라고 생각합니다. 몇 달째 이 문제에 대해 언급하는 주제를 본 적이 없습니다.

다음 rake 명령어로 수동 다운로드를 테스트할 수 있습니다:

./launcher enter app
rake maxminddb:get
exit

(게시글이 작성자에 의해 삭제됨)

삭제할 필요는 없었습니다. 문제와 관련된 해결책을 다른 사람들이 볼 수 있는 것은 항상 유용하다고 생각합니다.


새로 설치한 환경에서 지금 이 화면에 와 있습니다. 다른 작업을 하기 전에 기존 인스턴스에서 DB를 가져오는 방법이 무엇인지 궁금합니다:

아마도 먼저 등록(Register)을 하고, UI에서 가져오기(import)를 해야 할 것 같습니다. 그리고 가져올 DB에 있는 관리자 계정 이메일 주소로 등록하면 충돌이 생길 수 있으니 피해야 할 것 같기도 하네요.

한 번 시도해 보겠습니다. 항상 처음부터 다시 시작할 수 있으니까요.

수정: 아, 그렇지, 설정 과정에서 지정한 관리자 이메일 주소로만 등록할 수 있네요. 어떻게 될지 지켜보겠습니다.

수정: 이메일이 전송되지 않아서 다시 돌아와야 할 것 같습니다. Mailgun이 "잠재적인 침해 가능성"을 이유로 제 계정을 차단했는데, 이 문제를 해결해야 합니다.

수정: 깨진 이메일 문제를 우회하기 위해 명령줄을 통해 백업을 가져왔습니다.

잘 된 것 같습니다!! :partying_face:

성공했습니다!

언젠가 다시 이 작업을 수행해야 한다면 명령줄에서 백업 복원을 참고해 보세요.

백업을 S3에 저장하고 해당 설정을 yml 파일에 넣었다면, 백업 파일을 직접 이동할 필요조차 없습니다.