# 새 설치에서 Postgres DB 관련 이상한 문제 발생

**URL:** https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374
**Category:** Self-hosting
**Created:** [3월 15, 2020, 9:06오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374 "2020-03-15T09:06:54Z")
**Posts on this page:** 14
**Page:** 1

<div class="post-metadata">

### Author: ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)
#### Post date: [3월 15, 2020, 9:06오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/1 "2020-03-15T09:06:54Z")

</div>

수많은 완벽했던 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)로 되돌려 이 문제를 해결하고 완전히 새로운 설치를 시작할 수 있을까요?

**질문** 만으로도 도움을 받을 수 있었을 텐데 이렇게 긴 글을 올려 죄송합니다.

감사합니다.

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [3월 15, 2020, 9:19오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/2 "2020-03-15T09:19:00Z")

</div>

테이블을 삭제하거나 비우는 대신, 데이터베이스를 삭제하세요.

---

<div class="post-metadata">

### Author: ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)
#### Post date: [3월 15, 2020, 9:28오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/3 "2020-03-15T09:28:30Z")

</div>

감사합니다. 시도해 보고 결과를 다시 올릴게요.

---

<div class="post-metadata">

### Author: ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)
#### Post date: [3월 15, 2020, 9:35오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/4 "2020-03-15T09:35:31Z")

</div>

DB를 삭제하려고 했는데 계속 이 권한 오류가 발생합니다:

```plaintext
/var/www/discourse# su postgres -c 'psql'
psql (10.12 (Debian 10.12-1.pgdg100+1))
Type "help" for help.
postgres=# drop database discourse;
ERROR: database "discourse" is being accessed by other users
DETAIL: There are 3 other sessions using the database.

```

어떤 단서가 있을까요?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [3월 15, 2020, 9:44오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/5 "2020-03-15T09:44:43Z")

</div>

제 추측으로는 실행 중인 docker 컨테이너를 삭제하지 않은 것 같고, 이미지는 삭제했다고 주장하고 계십니다. 그리고 다른 어떤 알림이나 표시가 있었을 것 같습니다.

혹시 컨테이너 내의 postgres가 아니라 외부 postgres를 사용 중이신 건가요?

일반적으로 /var/discourse/shared를 삭제하고 다시 빌드하면 문제가 해결됩니다.

---

<div class="post-metadata">

### Author: ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)
#### Post date: [3월 15, 2020, 9:48오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/6 "2020-03-15T09:48:27Z")

</div>

감사합니다.

방금 기존 `discourse` DB 세션을 모두 종료했고, 덕분에 `discourse` 데이터베이스를 삭제할 수 있었습니다.

이제 다시 `./launcher rebuild app` 절차를 진행 중입니다. 결과를 확인 후 다시 공유하겠습니다.

---

<div class="post-metadata">

### Author: ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)
#### Post date: [3월 15, 2020, 10:22오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/7 "2020-03-15T10:22:06Z")

</div>

`./launch rebuild app`가 작동하지 않았습니다. 그래서 다음을 수행했습니다:

- `./launch enter app`

- `su postgress -c psql`

- drop database discourse

- \q

- exit

- cd /var

- rm -rf discourse

- git clone [GitHub - discourse/discourse\_docker: A Docker image for Discourse · GitHub](https://github.com/discourse/discourse_docker.git) /var/discourse

- cd /var/discourse

- ./discourse-set

- (보통처럼 모든 설정 항목을 입력했습니다)

그 다음:

````plaintext
Building app

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

```Unable to find image 'discourse/base:2.0.20200220-2221' locally
2.0.20200220-2221: Pulling from discourse/base
bc51dd8edc1b: Pulling fs layer
27ae5d171719: Pulling fs layer
bc51dd8edc1b: Download complete
bc51dd8edc1b: Pull complete
27ae5d171719: Verifying Checksum
27ae5d171719: Download complete
27ae5d171719: Pull complete
blah blah....
blah blah....
blah blah....

````

오류 없이 재빌드하고 런한 후에도 여전히 작동하지 않습니다.

그래서 다시 시도하며 LETSENCRYPT 옵션을 끄었습니다:

- Optional email address for Let’s Encrypt warnings? (Enter ‘OFF’ to disable.) : OFF

그런데 여전히 몇 시간 전에 파괴된 인스턴스를 빌드하고 있습니다. 그 인스턴스에는 여러 테마가 설치되어 있었는데, `discourse` DB를 `drop`한 후에도 이 빌드에는 여전히 그 테마들이 남아 있습니다:

```plaintext
Start compiling CSS: 2020-03-15 10:16:20 UTC
Compiling css for default 2020-03-15 10:16:20 UTC
precompile target: desktop Dark
precompile target: mobile Dark
precompile target: desktop_rtl Dark
precompile target: mobile_rtl Dark
precompile target: desktop_theme Dark
precompile target: mobile_theme Dark
precompile target: admin Dark
precompile target: desktop Light
precompile target: mobile Light
precompile target: desktop_rtl Light
precompile target: mobile_rtl Light
precompile target: desktop_theme Light
precompile target: mobile_theme Light
precompile target: admin Light
precompile target: desktop 
precompile target: mobile 
precompile target: desktop_rtl 
precompile target: mobile_rtl 
precompile target: desktop_theme 
precompile target: mobile_theme 
precompile target: admin 
Done compiling CSS: 2020-03-15 10:16:27 UTC

```

`discourse` DB 전체를 drop하고, 모든 docker 이미지와 컨테이너를 정화(purge)하고, `rm -rf /var/discourse`로 삭제한 후 처음부터 다시 빌드했는데도, 완전히 파괴하려는 몇 시간 전 빌드의 설치된 테마들이 여전히 보이는 것은 어떻게 가능한가요?

새로운 설치에서는 말이 되지 않습니다.

---

<div class="post-metadata">

### Author: ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)
#### Post date: [3월 15, 2020, 10:33오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/8 "2020-03-15T10:33:34Z")

</div>

음, 처음부터 다시 시작해서 LETSENCRYPT 템플릿과 이메일 옵션을 주석 처리했는데, 이제 제대로 재빌드되고 축하 메시지 표시되는 관리자 로그인 페이지까지 확인했습니다.

진전이 있네요!

이제 `app.yml`을 편집해서 다시 SSL을 설정해 보겠습니다.

---

<div class="post-metadata">

### Author: ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)
#### Post date: [3월 15, 2020, 10:46오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/9 "2020-03-15T10:46:23Z")

</div>

음. 흥미롭네요…

`SSL (LETS ENCRYPT)`를 활성화하여 앱을 다시 빌드하면 두 개의 다른 사이트가 나타납니다…

- HTTP: 예상대로 새로운 사이트
- HTTPS: 오래된 깨진 사이트

흠. 정말 수수께끼네요!

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [3월 15, 2020, 12:43오후 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/10 "2020-03-15T12:43:07Z")

</div>

다음은

```
 docker ps

```

명령어는 무엇을 표시합니까?

---

<div class="post-metadata">

### Author: ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)
#### Post date: [3월 15, 2020, 1:44오후 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/11 "2020-03-15T13:44:12Z")

</div>

각 빌드 전에 다음과 같이 이전 도커 이미지 등을 모두 삭제했습니다:

```plaintext
docker system prune -a

```

따라서 도커 이미지 문제는 아닙니다.

문제는 LETSENCRYPT SSL 인증서와 관련이 있다고 생각합니다. 같은 서버 IP에서 서브도메인을 변경하고 빌드 과정에서 새로운 SSL 인증서를 생성하면 정상적으로 작동하지만, 원래 서브도메인으로 돌아가면 문제가 여전히 남아있기 때문입니다.

그래서 지금은 문제의 서브도메인 사용을 중단했습니다(어쨌든 스테이징 도메인뿐이었으니까요). 그리고 진행을 계속했습니다.

제안해 주셔서 감사합니다.

안전하세요.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [3월 15, 2020, 3:26오후 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/12 "2020-03-15T15:26:23Z")

</div>

하지만 이것은 사용하지 않는 이미지만 삭제합니다. 실행 중인 컨테이너가 정말 없는지 확인해 보셨나요?

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [3월 16, 2020, 2:56오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/13 "2020-03-16T02:56:14Z")

</div>

컨테이너가 하나 이상 있는 것 같은데, containers 폴더에 app.yml 외에 다른 파일도 있나요?

---

<div class="post-metadata">

### Author: ![DBHacker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dbhacker/32/173072_2.png) [@DBHacker](https://meta.discourse.org/u/DBHacker)
#### Post date: [3월 16, 2020, 8:38오전 UTC](https://meta.discourse.org/t/strange-postgres-db-issue-with-new-install/144374/14 "2020-03-16T08:38:48Z")

</div>

`docker ps` 명령을 실행하면 실행 중인 컨테이너가 하나만 표시되며, `/var/discourse/containers` 디렉터리에는 `app.yml` 파일도 하나만 있습니다.

그래도 좋은 아이디어들을 많이 주셔서 감사합니다!

정말 감사드립니다.
