컨테이너 내에서 Discourse 업스트림 실패로 502 Bad Gateway가 발생하는 원인을 추적하는 방법

(네, 먼저 검색을 해 보았습니다)

최근 관리자 업그레이드 인터페이스를 사용한 후, 내 Discourse 인스턴스가 작동하지 않게 되었고 502 Bad Gateway 응답을 반환하고 있습니다.

컨테이너에 진입해 보니, nginx가 localhost:3000에 있는 서버를 기대하고 있지만 해당 서버는 실행되지 않고 있습니다.

(54) Waiting for new unicorn workers under 3802725 to start up...
(54) Waiting for new unicorn workers under 3802725 to start up...
(54) Old pid is: 3800363 New pid is: 3802725
config/unicorn_launcher: line 71: kill: (3802725) - No such process
config/unicorn_launcher: line 15: kill: (3802725) - No such process
(54) exiting
ok: run: redis: (pid 62) 3418739s
ok: run: postgres: (pid 53) 3418739s
supervisor pid: 3803896 unicorn pid: 3803900
config/unicorn_launcher: line 71: kill: (3803900) - No such process
config/unicorn_launcher: line 15: kill: (3803900) - No such process
(3803896) exiting

이후 다음과 같은 메시지가 반복적으로 출력됩니다:

ok: run: redis: (pid 64) 4905s
ok: run: postgres: (pid 65) 4905s
supervisor pid: 18571 unicorn pid: 18575
config/unicorn_launcher: line 71: kill: (18575) - No such process
config/unicorn_launcher: line 15: kill: (18575) - No such process
(18571) exiting

이 문제를 디버깅하는 데 도움을 받기 위해 이 스레드를 만들었습니다. 다음 단계는 무엇이며, Discourse가 실행하려는 명령어는 무엇인가요? (코드를 읽거나 역공학하여 찾아낼 수는 있지만, 포럼에 이 문제에 대한 스레드가 있는 것이 유용할 수 있을 것 같습니다.)

어떤 조언이나 힌트가든 감사하겠습니다.

검색부터 시작해보세요 :wink:

이런 것들이 비슷한가요?

완전히 기본 설정 그대로 설치한 것을 사용하고 계신가요?

시점을 고려할 때, 이는 일부 문제를 일으킨 데이터 탐색기(Data Explorer) 변경 사항과 관련이 있을 가능성이 가장 높습니다. 이제 해당 변경 사항을 되돌렸으므로, 다시 재구축을 시도하면 더 잘 작동할 것입니다.

네, data explorer를 사용하고 있습니다. 재시작하기 전에 git pull을 실행하지 않았습니다.
git pull을 실행한 뒤 ./launcher restart app을 실행해도 문제가 해결되지 않습니다.

호스트에서 nginx 뒤에 실행하고 있다는 점을 제외하면 그렇습니다.
(또한 data explorer와 같은 몇 가지 플러그인을 설치해 두었습니다.)

지금 ./launcher rebuild app을 시도하고 있습니다 - 앱을 다시 빌드해도 포럼의 데이터베이스는 유지되길 바라고 있습니다 … 포럼이 초기화되는 일은 없기를 바랍니다.
launcher rebuild app을 실행해도 문제가 해결되지 않습니다.

이 게시글은 권한이 있는 컨테이너와 권한이 없는 컨테이너 간의 문제를 설명하고 있지만, 더 많은 정보를 제공하지는 않습니다. 또한 2년 전 글이므로 최근 업데이트와 관련이 없을 수도 있습니다.

네, 데이터베이스는 마운트된 공유 폴더에 있으므로 유지됩니다.

git pull 후 컨테이너를 재시작하는 것만으로는 충분하지 않을 가능성이 높습니다.

알겠습니다. ./launcher rebuild app도 실행했는데, 이 명령어로 플러그인 업데이트가 가져오지지 않나요?

네, 플러그인도 함께 업데이트됩니다. (app.yml 안에 클론된 경우)

이 문제가 아직 조사 중인 경우를 대비해 공유합니다. 502 게이트웨이 오류가 발생했는데, 중간에 Ruby 버전 오류로 실패한 업데이트 루틴 바로 직후에는 아니었습니다. 약 6주 동안 서버를 업데이트하지 않아서 apt update/upgrade를 실행하고 재부팅했습니다. 바로 그때 502 오류가 발생했으며 포럼 웹사이트를 띄울 수 없었습니다. 앱을 다시 빌드하자 문제가 해결되었고 Discourse도 완전히 업데이트되었습니다.

기록을 위해 현재 설치 및 활성화된 플러그인은 다음과 같습니다:

discourse-bbcode
discourse-data-explorer
discourse-docs
docker_manager
styleguide

그리고 설치되어 있지만 비활성화된 플러그인은 다음과 같습니다:

discourse-topic-list-previews
discpage