같은 도메인에서 Discourse의 여러 서브도메인 인스턴스 사용 가능?

안녕하세요,

저는 두 개의 별도 Discourse 포럼(사용자, 주제, 카테고리 등 포함)을 구축하려고 시도하고 있습니다. 하지만 새로운 인스턴스를 가져와서 동일한 도메인이나 다른 서브도메인으로 호스팅하려고 하면, 현재 사용 중인 Discourse 인스턴스가 접근 불가능해집니다.

예를 들어, 현재 Discourse가 discourse.example.com에서 실행되고 있다고 가정해 봅시다. 두 번째 Discourse를 discourse2.example.com에서 시작하려고 하면 기존 인스턴스가 작동이 중단되고 두 번째 URL에는 아무것도 표시되지 않습니다. 그러나 discourse.example.com에서 첫 번째 Discourse를 다시 빌드하면 첫 번째 인스턴스가 복구됩니다.

설치 과정에서 첫 번째 인스턴스와 Discourse 호스트명 설정을 제외하고 모든 설정이 동일했습니다. 이 현상이 발생하는 이유와 discourse2.example.com을 위한 새로운 인스턴스를 만드는 방법에 대해 설명해 주실 수 있는 분이 있을까요?

다음 링크를 확인해 보셨나요?

Setup Multisite Configuration with Let's Encrypt and no Reverse Proxy

또는 다음으로

이 특정 경우의 다른 웹사이트는 discourse입니다

모두의 제안에 감사드립니다. 다음 두 웹사이트를 조합하여 두 번째 Discourse를 성공적으로 설정할 수 있었습니다:

  1. Run other websites on the same machine as Discourse (@angus 님의 답변이 특히 도움이 되었습니다)
  2. https://chowdri.medium.com/how-to-install-multiple-discourse-on-one-server-150db95602bb

이 두 웹사이트는 매우 유사한 과정을 제안하지만, 두 번째 웹사이트는 첫 번째 링크를 보완하는 초보자 친화적인 자료 역할을 합니다. 같은 작업을 시도하려는 분들에게는 시스템 설정 시 두 자료 모두를 읽는 것을 강력히 권장합니다.

현재 제 두 번째 Discourse는 “insecure”(보안 안 됨)로 표시되어 있습니다. 이는 이전 인스턴스에서 /var/discourse/shared/standalone/ssl 경로에 있는 인증서를 복사하여 sudo nginx -t 명령을 실행할 때 발생하는 “file not found”(파일을 찾을 수 없음) 오류를 피하기 위해서입니다. 두 번째 Discourse 사이트를 https로 안전하게 설정하는 방법을 알려주실 수 있나요? (첫 번째 사이트는 문제가 없습니다.) 미리 감사드립니다.

@pfaffman의 튜토리얼(위에서 @itsbhanusharma가 공유한 것)로 한번 시도해 보시는 건 어떨까요? 인증서 처리만 자동으로 해 줍니다. 실제로 몇 번 따라 해 봤는데, 이 문제를 얼마나 간단하게 해결해 주는지 아직도 감탄합니다.

솔직히 단점이 하나 있는데, 작은 작업 하나에도 게을러져서 추가 인스턴스를 띄우게 된다는 점입니다… 지금은 7개까지 늘었고, 더 필요할 것 같습니다 :grinning_face_with_smiling_eyes:

제안해 주셔서 감사합니다. 시도해 보고 있지만, 가이드에서 몇 가지 문제를 겪고 있습니다:

  1. 데이터베이스 비밀번호를 찾을 수 없거나, 해당 파일에서 비밀번호가 어떤 용도로 사용되는지 알 수 없습니다.

  2. 제 app.yml 파일에는 원래 after_postgres 섹션이 없었습니다. 그래서 다른 섹션들(after_ssl, after_db_migrate 등)과 일치하도록 hooks 아래에 추가했습니다. 만약 이 섹션이 잘못된 위치에 있다면 알려 주세요. 저는 이 유형의 작업을 처음 해 보는 터라 잘 모르겠습니다.

  3. http://www.yamllint.com/에서 YAML 파일의 구문을 검사하면, hooks 섹션 아래에 after_postgres 섹션을 넣은 줄에서 (<unknown>): did not find expected key while parsing a block mapping 오류가 발생합니다.

@manuel 님, aforementioned 가이드를 따르면서 수행하신 단계를 설명해 주시면 정말 감사하겠습니다.

사실 저는 항상 2컨테이너 설정으로 이렇게 해왔고, 그렇게 하면 잘 작동합니다. ./discourse-setup --two-container로 Discourse를 설치한 다음, web_only.yml과 data.yml을 모두 조정하면 쉽게 이 설정을 얻을 수 있습니다.

컨테이너를 하나만 사용하여 다시 시도해보고 싶지만, 해당 단계가 명확하지 않다면, 해당 주제에 게시하여 문제를 지적하는 것이 가장 좋습니다. 사실 이 파일들이 어떻게 작동하는지 저도 잘 모르기 때문에, 단순한 접근법이 있다는 점이 정말 기뻤고, 마침내 개발용 여러 인스턴스를 구동할 수 있게 되었습니다. 개발에 정말 유용한 또 다른 점은 추가 인스턴스에 플러그인이 이미 설치되어 있다는 것입니다.

구문 오류에 대해: 들여쓰기에 탭을 사용했나요? 포맷팅에 대해 매우 까다롭습니다.

아니요, 탭을 사용하지 않았고 가이드에서 복사한 코드에도 탭이 포함되지 않았을 것이라고 꽤 확신합니다(단순히 간단히만 확인은 해봤습니다). 가능하면 컨테이너 두 개를 사용하는 설정을 피하고 싶으니, 가이드에 게시글을 올려 도움을 요청하겠습니다. 도움을 주셔서 정말 감사합니다!