Digital Ocean Droplet에서 Discourse를 재구성한 후 발생하는 문제

Digital Ocean Droplet에 Discourse를 성공적으로 배포했지만, 리빌드를 시작한 후 문제가 발생했습니다.

비슷한 문제를 겪어 보신 분이 계신가요? 조언이나 해결책이 있다면 감사하겠습니다.

99~101행은 들여쓰기 수준이 잘못되었습니다. 한 단계 더 들여쓰기해야 합니다. 적절한 예시는 다음을 참고하세요:

완료했습니다! 그런데도 같은 문제가 계속 발생하고 있어요.

더 많은 문제를 확인하려면 전체 YAML 파일을 린터에 통과시켜 볼 수 있습니다.

Discourse 설정에서 몇 가지 문제를 겪고 있습니다:

  1. YAML 파일 및 구문:

    • YamlLint를 사용하여 YAML 구성을 확인했는데, 문제가 발견되지 않았습니다.
    • 그러나 Ruby 디렉터리에서 구문 오류가 발생했습니다:
      /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/config.rb:148:in `block (2 levels) in run_commands': Invalid run command cd (SyntaxError)
      ...
      from /usr/local/bin/pups:25:in `<main>'
      
  2. 재빌드 및 접근:

    • 기본 app.yml 파일로 되돌리고 일부 수정을 가했습니다. 재빌드는 성공적으로 완료되었습니다.
    • 그러나 사이트에 접속을 시도하면 다음과 같은 오류가 발생합니다:

  3. W3M 브라우저 테스트:

    • 추가 진단을 위해 드롭렛에 터미널 브라우저인 w3m을 설치했습니다.
    • 로컬호스트에 접속하면 ‘502 bad gateway’ 오류가 발생합니다:
  4. SSL 문제

    • 이것이 SSL 문제일 것 같아 현재 SSL 인증서를 갱신하고 있습니다.

어떤 조언이나 도움이든 감사히 받겠습니다!

제 포럼이 2일째 다운되어 있습니다.

요청 한도에 도달했다면 그럴 수도 있습니다. 리뷰는 어떻게 끝났나요?

포럼의 백업을 가지고 계신가요, 그리고 다른 서버에서 복원을 시도해 보셨나요? 제 포럼이 2일간 다운되어 있다면 30분 정도를 들여서라도 그걸 시도해 보았을 겁니다.

포럼 백업이 없고, 디스코스를 설정하는 데는 아직 초보입니다.

처음부터 시작하는 경우라면, 새로운 서브도메인을 사용해 새 인스턴스를 설치해 보세요. letsencrypt의 레이트 리밋에 도달했다면 이를 우회하는 데 도움이 될 것입니다. :+1:

사이트 앞에 Cloudflare를 사용하는 것이 Let’s Encrypt가 실패하는 것을 확인할 수 있는 방법 중 하나입니다. Let’s Encrypt가 올바르게 작동하는지 확신이 들 때까지 DNS-only 모드를 사용하는 것을 권장합니다.

이미 사용자와 데이터가 있는데, 모든 것을 잃고 처음부터 다시 시작하고 싶지 않아요.

팁 감사합니다! 이제 DNS만 사용 중입니다! :slightly_smiling_face:

수정: 이제 image 오류도 발생하고 있습니다.

가장 쉬운 해결책은 다른 서브도메인으로 이동하거나, Let’s Encrypt가 인증서를 발급해 줄 때까지 일주일 정도 기다리는 것 같습니다. 좀 더 어려운 방법은 서버를 가리키는 두 번째 서브도메인을 추가하고, app.yml을 수정하여 두 서브도메인 모두에 대해 인증서를 요청하는 것입니다. 여러 도메인으로 Let’s Encrypt 설정하기. YML 형식 문제로 인해 문제가 발생하기 시작한 것으로 보이므로, 이 다소 복잡한 해결책이 여러분에게는 적합하지 않을 수 있습니다.

그렇다면 백업이 있는지, 그리고 안전한 곳에 보관하고 있는지 반드시 확인해야 합니다.

아이디어 감사합니다. 다른 서브도메인을 사용했는데도 동일한 문제가 발생하고 있습니다.

‘502’ 오류와 'Connection Refused’가 뜨네요.

서브도메인의 DNS가 해당 서버 IP 주소를 가리키고 있나요? 그리고 서브도메인에 다른 A 레코드나 AAAA 레코드가 없나요?

./discourse-setup을 실행하는 것을 권장합니다. 이 명령은 도메인에 대한 수신 연결이 서버에 도달하는지 확인해 줍니다.

ssh user@subdomain.yoursite.com (또는 서브도메인이 다른 경우 해당 주소)을 사용하여 호스트네임으로 서버에 SSH로 접속할 수 있나요?

네, 서브도메인의 DNS가 서버 IP 주소를 가리키도록 설정했으며, 충돌하는 다른 A 레코드나 AAAA 레코드는 없습니다.

명령어를 실행했고, 여기 출력 결과가 있습니다.

최신 업데이트: discourse-setup 실행 후 home.techwithanirudh.com으로 이동하면 “502 Bad Gateway” 오류가 발생합니다. 오류에 대한 스냅샷을 첨부했습니다(첨부된 이미지 참조).

네, 호스트명을 사용하여 서버에 SSH로 접속하는 것은 완벽하게 작동합니다.

저는 @techwithanirudh와 오프라인으로 이 문제를 해결하기 위해 협력했습니다 … @techwithanirudh는 채팅봇 삭제 지침에 대해 알지 못했습니다.

여기서 (현재로서는) 결정적인 단서는 컨테이너가 제대로 시작되지 않아 502 오류가 발생했다는 점입니다. 그 이유는 PostgreSQL 라이브러리에 해당 인덱스를 지원하는 코드가 없는데도 데이터베이스에 인덱스가 남아 있었기 때문입니다. 삭제 지침은 데이터베이스에서 인덱스를 제거하므로, 인덱스 라이브러리를 빌드하지 않고도 안전하게 빌드할 수 있습니다.

@techwithanirudh의 사이트는 이제 정상적으로 작동하고 있습니다.