안녕하세요,
최근 install-cloud 가이드를 따라 AWS Lightsail 인스턴스에 Discourse를 설치했습니다. 설명서를 꼼꼼히 따랐고 처음부터 여러 번 다시 시도했지만, 포럼에 접근하려고 할 때 “connection refused”(연결 거부) 오류가 발생합니다.
따른 단계는 다음과 같습니다:
새로운 Lightsail 인스턴스 생성
정적 IP 주소 할당
포트 443 열기
서브도메인(forum.procedural.audio)을 해당 IP 주소로 지정
가이드의 Discourse 설치 명령어 수행 (LETS_ENCRYPT용 이메일 주소 제공 포함)
포럼으로 브라우저 접속… 연결 거부
./discourse-doctor를 실행하면 forum.procedural.audio의 Discourse 버전이 NOT FOUND(찾을 수 없음)라고 출력됩니다. Discourse에서 테스트 이메일은 정상적으로 수신할 수 있습니다.
ping forum.procedural.audio를 실행하면 데이터를 수신하지는 못하지만, 올바른 정적 IP는 찾습니다.
로그에서 다음 오류들을 확인했습니다.
$ ./launcher logs app
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
(수차례 반복)
따라서 문제는 SSL과 관련된 것으로 보이지만, 어떻게 수정해야 하는지 확실하지 않습니다. shared/standalone/ssl/ 디렉터리에는 네 개의 파일이 있습니다.
forum.procedural.audio.cer (파일이 비어 있음)
forum.procedural.audio.key (파일에 키가 포함되어 있음)
forum.procedural.audio_ecc.cer (파일이 비어 있음)
forum.procedural.audio_ecc.key (파일에 키가 포함되어 있음)
따라서 .cer 파일이 비어 있는 것이 문제의 일부인지 모르겠습니다. 또한 로그에서는 /shared/standalone/ssl/* 대신 /shared/ssl/* 위치의 파일을 찾고 있는 것으로 나타나는데, 이것도 관련이 있어 보입니다.
도움 주셔서 감사합니다.
Stephen
(Stephen)
8월 15, 2022, 3:50오후
2
문제는 Lightsail 인스턴스가 외부에서 접근할 수 없다는 것입니다. discourse-doctor가 알려준 내용과 일치합니다. 443 포트만 열었다면 이것이 원인이었을 가능성이 높습니다.
인증서가 없으면 443 포트의 HTTPS는 작동하지 않습니다 . 인증서가 없기 때문에(그리고 해당 인증서 파일은 비어 있음) let’s encrypt가 통신 문제로 인해 등록을 실패 한 것입니다.
정적 외부 주소를 할당했다면 80 포트도 열고 다시 시도해 보세요. HTTP로 연결하는 클라이언트를 리디렉션할 수 있도록 80 포트는 어쨌든 열려 있어야 합니다.
Stephen
(Stephen)
8월 15, 2022, 3:54오후
4
Chase Kanipe:
forum.procedural.audio
방금 확인해 보니 이 호스트명이 유효하지 않습니다. 먼저 이를 수정해야 합니다.
cannot resolve forum.procedural.audio: Unknown host
Lightsail 인스턴스의 경우 포트 22와 80이 기본적으로 열려 있습니다. 따라서 포트 80을 여는 것이 해결책이 될 것이라고 생각하지 않습니다.
죄송하지만 좀 더 자세히 설명해 주시겠어요? 호스트명이 어떤 의미에서 잘못된 건가요?
Stephen
(Stephen)
8월 15, 2022, 3:57오후
7
forum.procedural.audio가 DNS에 표시되지 않거나, 다른 표현으로 하면 해당 호스트명이 IP 주소로 해석되지 않습니다. 방금 CloudFlare와 Google DNS를 통해 확인해 보았는데, 둘 다 해당 호스트명을 찾을 수 없습니다. 제가 해석할 수 없다면 discourse-doctor도 해석할 수 없습니다.
서버의 ‘a’ 레코드를 언제 생성했나요? 복제 시간을 확인해 보셨나요?
서버를 다시 빌드하기 전에 이 문제를 반드시 해결해 주세요. Let’s Encrypt는 등록/갱신을 위한 시도 횟수에 한도가 있으며, 그 한도에 도달하면 7일 동안 인증서를 발급받을 수 없습니다.
2일 동안 Namecheap에서 도메인을 보유하고 있으며, 이는 Route 53을 가리키고 있습니다(추가 간접 레이어가 있는 이유는 Route 53이 .audio 도메인을 지원하지 않기 때문입니다). 주요 도메인 항목은 그 2일 중 대부분 동안 존재해 왔습니다. 해당 서브도메인 레코드는 약 1시간 동안 존재해 왔습니다.
만약 이것이 문제였다면, 제 인스턴스에서 ping forum.procedural.audio를 실행했을 때 IP 주소가 해석되지 못했을 것입니다. 하지만 IP 주소는 정상적으로 해석됩니다.
Stephen
(Stephen)
8월 15, 2022, 4:10오후
9
외부적으로 해결되지 않습니다. Let’s Encrypt는 DNS를 사용하여 서버가 주장하는 대로 해당 서버임을 확인합니다.
ping forum.procedural.audio ✔ ✔ 1909 ✔ 10:59:47
ping: cannot resolve forum.procedural.audio: Unknown host
pfaffman
(Jay Pfaffman)
8월 15, 2022, 4:13오후
10
음. https://dnschecker.org/#A/forum.procedural.audio 를 확인해 보면 여러 지역에서 이름이 해석되는 것으로 보이므로, 아마도 DNS 전파(propagation) 문제일 수 있습니다. 1.1.1.1이나 8.8.8.8로 조회를 하면 응답이 없지만, NS-337.AWSDNS-42.COM으로 조회하면 응답이 돌아오므로, 잠시 기다려 보시는 것이 좋을 것 같습니다.
하지만 discourse-setup은 주소를 조회하고 스스로에게 연결할 수 있는지 확인하려고 합니다. 이 작업이 실패하는 경우는 일반적으로 DNS 문제이거나 포트가 열려 있지 않은 경우입니다.
안녕하세요,
거의 일주일 가까이 지났지만 여전히 포럼을 배포하지 못하고 있습니다. 혹시 추가적인 아이디어가 있으신 분 계신가요? 포트 80과 443은 열려 있습니다. DNS 문제라고 생각하지는 않습니다. discourse-doctor가 localhost(그리고 forum.procedural.audio)에서 discourse 버전을 찾지 못하기 때문입니다. 도움이 되시면 감사하겠습니다.
Falco
(Falco)
8월 21, 2022, 10:34오후
12
Chase Kanipe:
이것은 DNS 문제가 아니라고 생각합니다.
nslookup.exe forum.procedural.audio
Server: dns.google
Address: 8.8.8.8
*** dns.google can't find forum.procedural.audio: Server failed
DNS 문제입니다.
음, https://dnschecker.org/#A/forum.procedural.audio 에 따르면 32개 위치 중 31곳에 전파된 것으로 보입니다. DNS 레코드 전파에 144시간 이상 걸린다는 말은 처음 들어봅니다. 하지만 이제 Nslookup.io 를 확인해 보니 Cloudflare와 Google에서는 이를 해석할 수 없지만, 권한 있는 서버(authoritative server)에서는 해석할 수 있습니다.
그러니 제 추측이 틀렸던 것 같지만, 이 문제를 어떻게 해결해야 할지 모르겠습니다. discourse-doctor가 localhost에서 discourse 버전을 찾을 수 없는 이유도 모르겠습니다.
pfaffman
(Jay Pfaffman)
8월 22, 2022, 1:28오전
14
즉, DNS 문제가 있는 것입니다.
그리고 여러 번 재구축을 했다면 Let’s Encrypt 속도 제한 문제가 있는 것입니다.