수많은 완벽했던 Discourse 설치와 마이그레이션에도 불구하고 아직도 해결하지 못한 문제가 하나 있습니다.
배경:
우리는 Docker 컨테이너에서 Discourse를 잘 운영하며 postgres DB 관련 세부 사항을 다루고 있었습니다.
문제는 raw 포스트를 다시 베이킹(rebake)했을 때 생성된 결과물에 만족하지 못하면서 발생했습니다. 아무것도 계획대로 작동하지 않아 결국 postgres DB를 삭제하고 다시 생성하기로 결정했지만, 앱이 다양한 권한 오류 등을 계속 내뱉었습니다.
그 후 우리는 "강력하게 가자"며 “도대체 왜 이러지” 하는 마음으로 postgres에 직접 들어갔습니다(이것이 잘 될 거라고는 알면서도 시도해보고 싶었습니다). DB에서 모든 topics와 posts를 삭제했습니다(DELETE FROM topics; DELETE FROM posts;). 이 방법은 어느 정도 효과가 있었지만, 결과물에 만족하지 못해(실험 종료) Discourse를 처음부터 다시 구축하기로 결정했습니다. 기존 /var/discourse를 치우고 git에서 새로 가져와 시작했습니다.
문제
git pull로 완전히 새로운 환경에서 빌드할 때, 빌드 자체는 사이트의 관리자 로그인 생성 단계까지 잘 작동했습니다.
새 설치 환경의 관리자 로그인을 시도했을 때, 우리가 파괴한 이전 사이트가 나타났습니다. 이는 예상치 못한 일이었습니다.
그래서 우리는 이 새로운 앱으로 들어가 DB에서 모든 discourse 테이블을 삭제해 보았습니다. 하지만 놀랍게도 앱을 다시 빌드했을 때, 새로 생긴 사이트가 아니라 위에서 언급한 동일한 깨진 사이트가 나타났습니다.
우리는 모든 /var/*discourse* 디렉토리를 삭제하고, Docker images도 모두 제거하여 완전히 깨끗한 상태로 git에서 /var/discourse로 다시 가져와 완전 처음부터 빌드한다고 생각하며 시작했습니다. 하지만 놀랍게도… 이전 사이트가 여전히 그곳에 있었습니다.
“이게 어떻게 가능한 거지”…??
Docker 컨테이너 외부에서 ps aux | grep postgres를 실행해 보니 컨테이너 외부에도 postgres가 존재하는 것을 발견했습니다(우리는 실수로 discourse docker install이 모두 Docker 컨테이너 안에 있다고 생각했기 때문에 이 또한 놀라운 일이었습니다). 그래서 정리할 곳을 찾으려 했지만 성공하지 못했습니다.
구글 링크가 보라색으로 변할 때까지 검색하고, 이것저것 많이 시도해 보았지만… discourse의 깨끗한 설치를 얻을 수 없습니다.
무언가를 놓치고 있다고 생각하여, Discourse를 설치해 본 적 없는 새 서버를 하나 더 확보하고, 그곳에서 discourse를 처음부터 설치해 보았습니다. 그리고 그것은 평소처럼 완벽하게 작동했습니다(다른 서버였기 때문입니다).
질문
제 질문은 아마도… 설치가 완전히 꼬여버린 경우(어떤 식으로든), postgres를 포함한 서버를 어떻게 지로(ground zero)로 되돌려 이 문제를 해결하고 완전히 새로운 설치를 시작할 수 있을까요?
질문만으로도 도움을 받을 수 있었을 텐데 이렇게 긴 글을 올려 죄송합니다.
감사합니다.