설정 파일 containers/app.yml이 이미 존재합니다! 5초 후 기존 컨테이너를 중지하거나 Control-C를 눌러 취소하세요

VM에 SSH로 접속하자마자 다음과 같은 메시지가 나타났습니다:

The configuration file containers/app.yml already exists!
Saving old file as app.yml.2024-12-25-193919.bak
Stopping existing container in 5 seconds or Control-C to cancel.

이것이 무엇을 하려는 건지 잘 모르겠습니다.

Right Sidebar Blocks 플러그인을 설치하지 않았으면 좋았을 텐데, 이 문제가 해당 플러그인과 관련이 있는지는 확신할 수 없습니다. https://meta.discourse.org/t/issues-when-i-enable-component-maybe-right-sidebar-blocks/343964/13

이 문제를 해결할 것 같아 앱을 재빌드(rebuild)했지만, 이제 VM에 로그인할 때마다 다음과 같은 메시지가 나옵니다:

The configuration file containers/app.yml already exists!
Saving old file as app.yml.2024-12-25-xxxxxx.bak
Stopping existing container in 5 seconds or Control-C to cancel.

프로세스를 종료하지 않으면, 완전한 초기 설정을 수행하려는 것처럼 보입니다. 최근 스냅샷을 가지고 있어 이를 복원했습니다.

./launcher rebuild app 명령어를 실행했고, 성공적으로 완료되었습니다.
외부 네트워크로 ping이 가능하고, 웹사이트도 정상적으로 작동하고 있습니다…

하지만 VM에 로그인하면 즉시 이 문제가 발생합니다.

5초 이내에 프로세스를 종료하면 모든 것이 정상으로 보이며 웹사이트도 잘 작동하므로, 이 문제를 일으키는 원인이 무엇이며 VM 로그인 시 이 문제를 어떻게 막을 수 있을까요?

VM을 재부팅해도 같은 문제가 발생했습니다. 재부팅 후 VM에 SSH로 접속하면 여전히 이 메시지가 나오지만, 웹사이트는 정상적으로 작동하고 있습니다.

정말 이상하네요!

어떤 종류의 커스텀 로그인 bash 스크립트가 실행되고 있는 것 같습니다.

Discourse를 어떻게 설치하셨나요? 표준 설치 방법을 그대로 사용하셨나요?

아니요, 테마 컴포넌트 때문이 아닙니다.

처음 실행한 후 discourse-setup를 다시 실행하면 해당 메시지가 표시됩니다. 설정을 변경하려면 다시 실행할 수 있습니다. 일반적으로는 다음 명령만 실행하면 됩니다.

./launcher rebuild app

로그인 시 즉시 자동으로 실행되나요?

그러면 아마도 디지털 오션의 원클릭 디스코스 설치 기능이 바로 그런 역할을 하는 것일 수 있습니다.

표준 설치가 권장되는 이유는 바로 이 작업을 수행하지 않기 때문입니다. 그들의 문서에는 .bashrc 또는 유사한 파일을 삭제하거나 편집할 수 있다는 내용이 나와 있을 수 있습니다.

로그인 시 컨트롤+C를 입력하면 됩니다. 다만, 실제로는 해를 끼치지는 않지만 꽤 번거로울 수 있는 여러 파일이 남게 됩니다.

네, 그쪽이 더 그럴듯하네요.

몇 달 전에 표준 설치를 사용했습니다. nginx 리버스 프록시를 사용 중이며, 8월부터 문제없이 작동해 왔습니다.

discourse-setup을 실행하지 않았습니다. (한 번은 5초 정도 방치해 두고 실행이 시작되었지만, 즉시 종료하고 스냅샷에서 복원했습니다.) ./launcher rebuild app은 실행했습니다.

네: “로그인 시 즉시 자동으로 실행됩니까?” 로그인 후 sudo su로 루트 권한을 얻으면 자동으로 실행됩니다.

Digital Ocean을 사용하지 않습니다.

방금 루트의 .bashrc 파일을 확인해 보니, 마지막 줄이 다음과 같습니다:

/opt/hostinger/scripts/discourse_conf.sh

이것이 무엇을 하는지 확인해 보겠습니다. 처음부터 있었던 것이 아니라면, 제가 직접 추가한 것이 아님을 알아주시기 바랍니다.

#!/bin/bash
clear
cd /var/discourse

if ./discourse-setup; then
  clear
  echo "Discourse is now installed. Log into your admin account in a browser to continue"
  echo "configuring Discourse."

  cp -f /etc/skel/.bashrc /root/.bashrc
else
  echo ""
  echo "-----------------------------------------------------------------------------"
  echo "The setup script failed with the provided Discourse details."
  echo "It will rerun. Please address the above issues."
  echo "-----------------------------------------------------------------------------"
  echo "When you are ready, press Enter"
  echo "To cancel setup, press Ctrl+C and this script will be rerun on your next login"
  read wait
fi

Hostinger가 VM을 호스팅하고 있습니다. 해당 줄을 제거하고 다시 로그인 및 su를 시도해 보겠습니다. .bashrc 파일에 어떻게 들어갔는지 전혀 모르겠으며, 분명히 제가 수동으로 추가한 것이 아닙니다.

네, 그로 인해 문제가 해결되었습니다. rc 파일이 그렇게 수정될 수 있다는 생각조차 하지 못했기 때문에 확인해 보라는 생각도 하지 못했습니다. 도움을 주셔서 감사합니다, 정말 고맙습니다!

bashrc에서 해당 줄을 주석 처리한 후:

cd /var/discourse
if ./discourse-setup; then  echo 'found it'; else  echo 'not found'; fi

다음과 같이 반환됩니다: not found

제 입장에선, 왜 처음부터 발견된 적이 있는지도 이상합니다.

그러나 지금(약 15분 후) ls -al ./discourse-setup을 실행하면 -rwxr-xr-x 1 root root 28715 Dec 23 23:24 ./discourse-setup이 반환됩니다.

지금 if ./discourse-setup; then echo 'found it'; else echo 'not found'; fi를 실행하면 이전에 겪었던 문제가 발생합니다: ...Stopping existing container in 5 seconds or Control-C to cancel

주석을 제거하고 다시 로그인한 후 sudo su를 실행하니 설치 프로세스를 시작하려 했지만, discourse-setup 스크립트가 생성되지 않았습니다. 그러면 discourse-setup은 어떻게 생성되는 것일까요?

discourse-setup 스크립트는 어떻게 생성되며, 수동으로 삭제할 수 있습니까? 이름을 변경하면, 루트 .bashrc에 /opt/hostinger/scripts/discourse_conf.sh 줄이 있든 없든 로그인 시 재생성되는 것을 볼 수 없습니다.

참고로, 저는 다음을 본 적이 없습니다:

  echo "The setup script failed with the provided Discourse details."
  echo "It will rerun. Please address the above issues."

화면이 클리어되고, 제가 본 유일한 코멘트는 다음과 같았습니다:

The configuration file containers/app.yml already exists!
Saving old file as app.yml.2024-12-25-193919.bak
Stopping existing container in 5 seconds or Control-C to cancel.
 diff ./.bashrc /etc/skel/.bashrc
118d117
< # /opt/hostinger/scripts/discourse_conf.sh

해당 줄이 .bashrc 파일에 어떻게 들어갔는지 모르겠고, 문제가 발생했을 때 본 텍스트는 /opt/hostinger/scripts/discourse_conf.sh 파일에 설명된 내용과 다르지만, 문제는 사라진 것 같습니다.

또한, 이제 ./launcher rebuild app을 실행하거나 VM을 재부팅하면, 웹사이트에 너무 빨리 액세스하려고 하면 502 오류가 발생한다는 점도 주목했습니다. 웹사이트가 사용 가능해지려면 약 1분이 걸립니다. 과거에는 그렇지 않았던 것으로 기억하지만, 웹사이트에 즉시 액세스해 본 적이 없을 수도 있습니다. 이에 대해 어떤 생각이 있으신가요?

로그인 시 실행되는 스크립트를 조사하고, setup 실행과 관련된 줄을 제거해야 합니다.

Afaia의 경우, 표준 설치 과정에서는 해당 파일이 수정되지 않지만, 여기서는 상황이 다릅니다.

설치 과정에서 무언가를 실행했기 때문입니다.

아, 시간 순서를 무시하고 게시물을 확장했군요.

좋네요!

죄송합니다. 새벽 2시쯤이었거든요.

도와주셔서 모두 감사합니다. 위에서 언급한 문제 중 일부는 여전히 제게 명확하지 않지만, .bashrc 파일의 마지막 줄을 제거한 후 문제가 사라진 것으로 보입니다.

제 질문에 스스로 답을 드리자면: discourse-setup 스크립트는 어떻게 생성되는 것이며, 수동으로 삭제할 수 있나요?

discourse-setup 스크립트는 /var/discourse 디렉터리에 존재해야 합니다. 이는 기본 코드的一部分으로 함께 제공됩니다.

1분간 502 오류가 발생하더라도, 다른 지시를 받지 않는 한 그 상태로 두겠습니다.

하지만 실제로는 그렇지 않습니다. 로그인할 때 discourse 설정이 자동으로 실행되는 hostinger 이미지를 사용했죠.

.bashrc에서 hostinger 스크립트를 실행하는 줄을 삭제해야 합니다.

discourse-setup을 삭제하라는 것이 아니라, 실행하지도 않는다는 뜻입니다.

네, .bashrc와 discourse-setup 관련해서는 그렇게 했습니다. 하지만 설치를 자동으로 실행한 기억은 없고, 몇 달이 지난 후 갑자기 다시 실행이 시작된 이유도 이해가 되지 않습니다.

GitHub의 지침을 따랐던 것 같은데, 제 기억이 틀렸을 수도 있습니다.

어쨌든 해당 줄을 .bashrc 파일에서 제거했습니다.

감사합니다.