연결되지 않음 - DO에서 신규 설치

Digital Ocean에 Discourse를 설치하려고 두 번 시도해 보았습니다.

시도 1:

첫 번째 시도에서는 공식 GitHub 지침을 따라 DO Ubuntu 22.04 LTS 이미지, 1GB 드롭렛을 사용했습니다.

기존 도메인의 서브도메인과 수년간 잘 작동해 온 기존 Mailjet 계정 자격 증명을 사용했습니다.

Docker를 설치해야 한다는 사실을 몰랐기 때문에 discourse-setup을 입력했을 때

설치 프로그램이 다음과 같이 표시했습니다.

Failed to find docker or docker.io on your PATH.

그리고 Docker를 설치하도록 Enter 키를 눌렀습니다.

그 후 설치 과정은 정상적으로 실행되는 것처럼 보였습니다.

마지막으로 다음과 같은 메시지와 몇 줄의 추가 로그가 출력되었습니다.

117:M 25 May 2023 01:14:46.500 * DB saved on disk
117:M 25 May 2023 01:14:46.501 # Redis is now ready to exit, bye bye...

DNS가 얼마나 빨리 전파될지 확신이 서지 않아서 DO IP 주소를 /etc/hosts 파일에 입력했습니다.

브라우저로 서브도메인 URL을 가리켜 보았더니 "서버에 연결할 수 없음"이라는 메시지가 떴습니다.

IP 주소로 가리켜 보아도 "서버에 연결할 수 없음"이라는 메시지가 떴습니다.

그래서 다시 한 번 시도해 보았습니다.

시도 2:
linuxhandbook의 지침을 따라 마켓플레이스 탭의 DO 원클릭 설치 기능을 사용했는데, 이 기능은 2GB 드롭렛을 제공했습니다.

SSH로 로그인한 후 설치 프로그램이 자동으로 실행되었고, 문제 없이 실행되는 것처럼 보였습니다. 마지막에 다음과 같은 메시지가 표시되었습니다.

Discourse is now installed. Log into your admin account in a browser to continue configuring Discourse.

하지만 다시 한 번, 브라우저로 서브도메인 URL이나 (두 번째 드롭렛에 대한) 새로운 DO IP 주소로 가리켜도 브라우저가 연결할 수 없었습니다 (Firefox와 Safari를 모두 시도해 보았습니다).

./launcher start app을 실행하면

다음과 같이 표시됩니다.

x86_64 arch detected.
cadd91ccd0cd
Nothing to do, your container has already started!

discourse-doctor를 실행하면 (다른 항목들과 함께)

Discourse container app is running

이라고 표시하고

올바른

DISCOURSE_HOSTNAME

을 제공합니다.

브라우저가 이 설치(둘 중 하나 또는 둘 다)에 응답하도록 하려면 무엇을 시도해 볼 수 있을까요?

(두 번째 IP 주소는 여전히 hosts 파일에 남아 있지만, DNS 확인 도구로도 전파가 완료된 것으로 나타나므로 서브도메인 URL이든 IP 주소든 작동해야 할 것 같습니다.)

도움 주시면 감사하겠습니다.

몇 가지 더 자세한 내용입니다:

제가 아는 한, 두 드롭릿 모두에 대한 어떤 종류의 컨트롤 패널도 가지고 있지 않습니다 (Plesk도, cPanel도 없습니다).

일반적인 공유 호스팅 환경에서는 public_html 디렉토리로 들어가서 testfile.html과 같은 간단한 테스트 파일을 만들어 최소한 플랫 HTML 파일이 로드되는지 확인해 보았을 것입니다. 하지만 DO 드롭릿에서는 어디서 어떻게 해야 하는지 (또는 그렇게 할 수 있는지조차) 모르겠습니다.

./discourse-setup이 성공적으로 실행되었다면 도메인을 해석할 수 있었다는 뜻이므로, 그 부분은 조치할 필요가 없습니다. 이 시점에서는 서버에 대한 전파가 이미 완료된 상태입니다.

참고로 1클릭 Digital Ocean Discourse 설치는 unsupported-install(비공식 설치)에 해당하므로, 여기서 도움을 받기 어려울 수 있습니다. :slight_smile:

처음부터 시작하여 표준 설치 방법을 사용하는 것을 권장합니다.

  1. 드롭렛(Droplet) 생성

  2. SSH로 로그인

  3. ping yourdomain.com을 실행하여 서버의 IP로 해석되는지 확인합니다. (해석되지 않더라도 ./discourse-setup이 경고 메시지를 표시합니다.)

    • 해석되지 않는 경우, 해석될 때까지 기다립니다.
  4. 해석이 완료되면 공식 가이드(discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub)를 사용하여 Discourse를 설치합니다.

결과를 알려주세요. :slight_smile:

물론 저는 전문가가 아니므로, 다른 누군가가 현재 문제를 정확히 파악해 줄 수도 있습니다.

그렇게 할 필요도 없고 도움이 되지 않습니다. 위에서 언급했듯이 discourse-setup은 호스트명을 사용하여 자신과 통신할 수 있는지 테스트를 수행합니다. discourse-setup을 실행하기 전에 /etc/hosts를 편집했다면 DNS가 작동하지 않았고, let’s encrypt에서 인증서를 받지 못했기 때문에 웹 서버가 시작되지 않는 것입니다. 여러 번 시도하면 레이트 리미팅(rate limiting)이 적용되어 일주일간 기다리거나 다른 서브도메인을 사용해야 합니다.

문제를 확인하려면 /var/discourse/shared/logs/var-log/nginx/access.log(또는 이와 매우 유사한 경로)를 살펴볼 수 있습니다.

현재 가장 쉬운 방법은 새로운 서브도메인을 사용하고, DNS를 설정한 후 전파될 때까지 기다리는 것입니다(전파 상태를 확인할 수 있는 도구가 있습니다). 그런 다음 discourse-setup을 실행하면 됩니다.

두 분 모두 답변해 주셔서 감사합니다.

새로운 서브도메인과 드롭렛을 생성하여 세 번째 시도를 했고, 이제 모든 것이 정상적으로 작동하고 있습니다.

첫 번째 시도에서 ./discourse-setup를 실행했을 때, 도메인이나 SSL에 문제가 있다는 표시가 출력에 나타나지 않았습니다. 오류가 보고되었는데 제가 놓쳤을 수도 있지만, 만약 그렇다면 그런 종류의 오류 알림을 더 눈에 띄게 만드는 것이 좋겠습니다.

새로운 Discourse를 설정하고 실행하게 되어 기쁩니다. 초보자를 도와주셔서 다시 한번 감사합니다.

discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 문서에 ‘문제 해결 팁’ 섹션을 추가하는 것이 가능할까요? 가능하다면, 제가 기여를 도와드릴 수 있을까요?

프로그램이 완전히 멈춥니다. 그 정도는 놓치지 않았을 겁니다. 제 추측으로는 /etc/hosts 파일을 사용하여 문제를 기발하게 해결하여 스크립트 자체는 만족시켰지만, Let’s Encrypt가 인증서를 발급받으러 갈 때 이를 충족시키지 못한 것 같습니다. discourse-setup는 셸 스크립트이며 가장 초보적인 사용자를 위해 설계되었기 때문에 그 테스트 로직은 상당히 단순합니다.

표준 설치 관련 토픽을 참고해 보시는 건 어떨까요?

수정: 글쎄요, 거기에는 내용이 많지 않습니다.

어떤 문제 해결 조언을 추가하고 싶으신가요? 거기에 몇 가지 단서가 있을 것 같습니다. 누군가가 /etc/hosts 항목을 생성하여 DNS 확인을 우회한다는 것은 제가 들어본 적이 없는 일입니다. :slight_smile: