요약: Discourse 관리자 패널에서 업데이트 버튼을 클릭했는데 업데이트가 실패했습니다. 그래서 전체 시스템을 재부팅하고 업데이트 과정을 다시 시도하기로 했습니다. 불행히도 Discourse 관리자 패널이 뜨지 않습니다. 다시 정상적으로 작동하게 만들고 싶습니다.
보조 정보: 이 시스템은 DigitalOcean VM에 설치되어 있으며 WordPress 사이트를 제공합니다. 몇 년 전에 설정했는데 많은 세부 사항을 잊어버렸습니다. 하지만 어떤 마법 같은 방식으로 Nginx가 요청된 URL을 보고 메인 콘텐츠에는 WordPress를, 대화에는 Discourse를 활성화할지 판단합니다. WordPress 쪽은 여전히 정상적으로 작동합니다.
서두에서 언급했듯이 다소 무모하고 대충 접근한 탓에, 이런 엉망진창 상태에 빠진 정확한 설치 오류의 본질을 파악하지 못했습니다. 업그레이드 과정을 다시正轨로 올릴 단서가 될 수 있는 로그 파일이 어디에 있는지조차 알지 못합니다.
어떤 힌트든 환영합니다. 웹 관리 지식은 많지 않지만, Debian 기반 시스템에서 커맨드 라인 사용에는 익숙합니다. 앞서 언급한 모든 소프트웨어는 Ubuntu 20.04.6 LTS에서 실행 중이며, 해당 플랫폼에 SSH 접근 권한이 있습니다. 감사합니다!
불행히도 제 DigitalOcean VM이 너무 작은 것 같습니다. 새로 로그인한 후 du -sh 명령을 실행하면 할당된 디스크 /dev/vda1에 약 7GiB의 여유 공간이 있다고 표시됩니다. launcher rebuild app 명령을 입력하면 다운로드와 압축 풀기가 한동안 진행되다가, 스크립트가 사용 가능한 공간이 3.3G밖에 없다고 판단하고 5G 이상 없으면 진행을 거부한다는 메시지를 남기며 중단됩니다.
물론 제가 할 수 있는 한 불필요한 파일을 찾아 삭제하는 작업을 해 보았지만, 추가로 1.7G를 더 확보하는 것은 쉽지 않아 보입니다. 이 상황에서 전문가 팁이 있을까요? (삭제하기에 적합한 큰 용량의 파일이 있거나, 런처의 요구 사항을 낮추는 방법 등)
P.S. 대안으로, 더 사양이 좋은 다른 머신에서 앱을 다시 빌드한 후 해당 파일을 이 사양이 낮은 작은 VM에 업로드하는 방식은 가능할까요? 아니면 이 방법은 지나치게 복잡한 마법 같은 것일까요?
./launcher cleanup 명령을 실행해 보세요. 이 작업은 Docker가 사용하는 저장 공간을 정리하는 데 도움이 됩니다.
또한, 이전에 공식 설치 가이드를 따랐다는 것을 확신할 수 있다면, ./launcher destroy app을 실행하여 이전에 손상된 컨테이너를 제거할 수 있습니다. 다만, 데이터베이스와 업로드 파일이 컨테이너 내부가 아닌 호스트 파일 시스템에 저장되어 있는지 반드시 확인해야 합니다.
네, 다른 머신에서 다시 빌드한 후 Docker 이미지를 VM으로 이전하는 방식은 가능합니다. 다만, VM에서 rake db:migrate 명령을 수동으로 실행해야 합니다. 이 방식이 다른 문제를 일으킬 수 있는지는 정확히 확신하지 못하겠습니다.
100% 확신은 없지만, 이 방법을 시도해 보고 싶습니다. 데이터베이스와 업로드 파일을 보존해야 하는 필수적인 단계를 어떻게 수행해야 하나요? 무언가 중대한 작업을 하기 전에 /var/discourse/shared/standalone 디렉토리에 있는 파일을 안전한 위치에 복사하는 것으로 충분할까요? (이러한 종류의 직접적인 복구 프로젝트를 시작할 때 따르는 표준 프로세스에 대한 안내가 있을까요?)
비슷한 상황에 처한 대부분의 사람들에게는 @Robert의 실용적인 답변이 최선의 선택이 될 것 같습니다. 저는 여러 가지 면에서 맥락이 독특하기 때문에 다른 방향으로 나아가고 있습니다. 그중에서도 가장 큰 차이는 다음과 같습니다: 제 설치는 소규모 취미 프로젝트로, 모든 것을 잃는다면 실망스럽겠지만 파멸적이지는 않을 것입니다.
WordPress와 Discourse를 함께 사용하고 있다면 2GB/50GB VM으로 업그레이드하는 것이 좋습니다. 모든 백업을 삭제하고 launcher cleanup을 수행했다면, 대용량의 캐시 파일이 남아 있을 가능성이 높습니다(아, Google에서 apt 캐시 삭제 방법을 검색하면 그도 정리할 수 있습니다).
방금 겪었던 문제와 같을 수도 있고, 아닐 수도 있습니다: 우리는 IP를 지리정보로 변환하기 위해 MaxMind API를 사용하고 있었습니다. 이전 버전에서는 app.yml 파일에 MaxMind API 키만 필요했습니다. 최근 (문서화되지 않은?) 변경 사항으로 인해 app.yml 파일에 MaxMind API 키와 사용자 이름이 모두 필요하게 되었습니다. 사용자 이름이 없으면 포럼 빌드가 실패합니다.
감사합니다, @Frully, 하지만 이건 다른 문제인 것 같아요. 저를 막고 있는 에러 메시지는 다음과 같습니다:
Status: Downloaded newer image for discourse/base:2.0.20240602-0023
docker.io/discourse/base:2.0.20240602-0023
You have less than 5GB of free space on the disk where /var/lib/docker is located. You will need more space to continue
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 21G 3.5G 86% /
여러분, 전술을 바꿔서 @merefield 님의 아이디어대로 전체 세팅을 더 큰 VPS로 이전하기로 했습니다. 깨진 환경에서 제대로 동작하는 새 환경으로 자산을 옮기는 방법을 찾는 것은 분명히 어려운 부분이겠지만, 몇 가지 상식적인 방법을 시도해 보고, 만약 그 방법들이 통하지 않으면 새 스레드를 만들겠습니다. 도와주신 모든 분들께 감사드리며, 이 스레드는 이제 종료해도 무방할 것 같습니다.
에필로그: 새로운 호스트로 이관하는 과정에서 Discourse 컨테이너 안에서 셸 명령어를 직접 실행하는 방법에 대해 유용한 것을 배웠습니다. 이 내용은 다른 스레드에 설명되어 있습니다. 해당 스레드에는 디스크 공간을 절약하는 방법에 대한 정보도 조금 더 포함되어 있습니다.