안녕하세요, 저는 이 링크(Multisite configuration with Docker)를 따라 멀티사이트 구성을 적용했습니다. 이제 다시 단일 사이트로 복원하고 싶은데, app.yml 파일을 복원하는 것 외에 무엇을 해야 하나요?
여기서 정확히 무엇을 이루고 싶으신지 잘 모르겠지만, 멀티사이트 설정에서 특정 사이트를 분리해서 사용하고 싶으시다면, 멀티사이트에서 백업을 다운로드한 뒤 스탠드얼론 사이트에서 복원하시면 됩니다. 이 스탠드얼론 사이트가 어떻게 설정되어 있는지에 따라 일부 리매핑 작업이 필요할 수 있습니다.
첫 번째 사이트만 유지하고 두 번째 사이트는 삭제하고 싶습니다.
네, 가장 간단한 방법은 첫 번째 사이트의 백업을 받은 후, 멀티사이트 설정 시 사용했을 두 개의 컨테이너(web_only 및 data)를 종료하고, ./discourse-setup을 통해 새 사이트를 설정한 뒤 백업을 복원하는 것입니다. 더 고급스러운 해결 방법으로는 yml 파일에서 두 번째 사이트 설정을 제거하고, 데이터 컨테이너에 접속하여 두 번째 데이터베이스를 삭제하며, 공유 폴더에서 두 번째 사이트의 에셋을 제거하는 등의 작업이 포함될 수 있습니다.
감사합니다! 첫 번째 방법을 시도해 보겠습니다.
안녕하세요, 두 번째 방법을 따랐습니다. 두 번째 사이트의 데이터베이스를 삭제하고 app.yml 설정 파일을 복원했습니다. 하지만 공유 폴더에서 두 번째 사이트의 에셋을 어떻게 삭제해야 하는지 모르겠는데, 도와주실 수 있나요?
discourse를 업그레이드했을 때 플러그인 페이지가 빈 페이지로 표시되고 콘솔에 오류가 발생했습니다:
Uncaught TypeError: Cannot read property 'extend' of undefined
at _discourse-rss-poster-422da9e50d576ad45cb7287315e7a35550af3708eb68422bee05813edc01521d.js:188
at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74640)
at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74470)
at require (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74637)
at t.customResolve (_application-572c27eef10b724b244ce26553c6fe92b75f44172387b25ef144f338da4faa1e.js:1015)
at t.resolveRoute (_application-572c27eef10b724b244ce26553c6fe92b75f44172387b25ef144f338da4faa1e.js:1051)
at t.e [as resolveRoute] (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:43433)
at t.n.resolve (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:46378)
at _ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:12420
at e.t.resolve (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:11959)
두 번째 사이트 때문이라고 생각하는데, 어떻게 수정해야 할지 모르겠습니다. 감사합니다!
@sam 도와줄 수 있을까요?
비밀번호를 삭제한 app.yml 파일을 공유해 주셔야 합니다. 이 문제는 app.yml 파일에서 누락되거나 오류가 발생하여 생기는 것으로 추정됩니다.
## 이 파일은 올인원, 스탠드얼론 Discourse Docker 컨테이너 템플릿입니다
##
## 이 파일을 수정한 후에는 반드시 다시 빌드해야 합니다
## /var/discourse/launcher rebuild app
##
## 편집할 때 *매우* 주의하세요!
## YAML 파일은 공백이나 정렬 오류에 대해 *매우* 민감합니다!
## 필요할 경우 http://www.yamllint.com/ 에서 이 파일을 검증하세요
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Lets Encrypt(https)를 추가하려면 아래 두 줄의 주석을 해제하세요
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
- "templates/web.socketed.template.yml"
## 이 컨테이너가 노출해야 할 TCP/IP 포트는 무엇인가요?
## Discourse를 Apache나 nginx 같은 다른 웹서버와 포트 공유를 원한다면
## 세부 사항은 https://meta.discourse.org/t/17247 를 참조하세요
expose:
# - "80:80" # http
# - "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## db_shared_buffers는 총 메모리의 최대 25%로 설정하세요.
## bootstrap이 감지된 RAM에 따라 자동으로 설정되거나, 직접 오버라이드할 수 있습니다
db_shared_buffers: "128MB"
## 정렬 성능을 향상시킬 수 있지만, 연결당 메모리 사용량이 증가합니다
#db_work_mem: "40MB"
## 이 컨테이너가 사용해야 할 Git 리비전은 무엇인가요? (기본값: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## 동시에 처리할 수 있는 웹 요청 수는 얼마인가요? 메모리와 CPU 코어 수에 따라 달라집니다.
## bootstrap이 감지된 CPU에 따라 자동으로 설정되거나, 직접 오버라이드할 수 있습니다
UNICORN_WORKERS: 2
## TODO: 이 Discourse 인스턴스가 응답할 도메인 이름
## 필수입니다. Discourse는 IP 주소만으로는 작동하지 않습니다.
DISCOURSE_HOSTNAME: at4am.io
## 컨테이너가 위에서 지정한 동일한 호스트네임(-h 옵션)으로 시작되도록 하려면 주석을 해제하세요
## (기본값 "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: 초기 가입 시 관리자 및 개발자로 설정될 쉼표로 구분된 이메일 목록
## 예시 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'a@gmail.com'
## TODO: 새 계정 검증 및 알림 전송에 사용되는 SMTP 메일 서버
# SMTP 주소, 사용자 이름, 비밀번호는 필수입니다
# 경고: SMTP 비밀번호의 '#' 문자는 문제를 일으킬 수 있습니다!
DISCOURSE_SMTP_ADDRESS: smtp.office365.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: a@outlook.com
DISCOURSE_SMTP_PASSWORD: "a"
DISCOURSE_SMTP_AUTHENTICATION: login
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (선택 사항, 기본값 true)
## Lets Encrypt 템플릿을 추가했다면 무료 SSL 인증서를 얻으려면 아래 주석을 해제하세요
LETSENCRYPT_ACCOUNT_EMAIL: a@gmail.com
## 이 Discourse 인스턴스의 CDN 주소 (pull로 설정됨)
## 세부 사항은 https://meta.discourse.org/t/14857 를 참조하세요
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## Docker 컨테이너는 상태가 없으며, 모든 데이터는 /shared에 저장됩니다
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## 플러그인은 여기에 추가합니다
## 세부 사항은 https://meta.discourse.org/t/19157 를 참조하세요
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/livc/discourse-rss-poster
#- git clone https://github.com/paviliondev/discourse-ratings
- git clone https://github.com/discourse/discourse-data-explorer
- git clone https://github.com/discourse/discourse-solved
## 빌드 후 실행할 커스텀 커맨드
run:
- exec: echo "Beginning of custom commands"
## 첫 가입 시 'From' 이메일 주소를 설정하려면 주석을 해제하고 수정하세요:
## 첫 가입 이메일을 받은 후, 해당 줄을 다시 주석 처리하세요. 한 번만 실행하면 됩니다.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "End of custom commands"
제 app.yml 파일입니다. 도움 주셔서 감사합니다.
이전 오류와 app.yml 파일을 살펴본 결과, 사용 중인 rss 플러그인 포크에 문제가 있는 것으로 보입니다. 해당 플러그인 내부에 오류가 있어 문제를 일으키고 있을 가능성이 큽니다. 플러그인을 비활성화한 후 다시 빌드해 보실 수 있나요?
이 플러그인을 주석 처리하면 플러그인 페이지가 정상적으로 작동합니다. 하지만 Discourse를 최신 버전으로 업그레이드하기 전에는 이 플러그인이 문제 없이 잘 작동했습니다.
따라서 이 문제가 Discourse 업그레이드 때문인지, 아니면 multisite 때문인지 정확히 알 수 없습니다.
특히, multisite 환경에서 동일한 오류가 발생한다는 것을 발견했습니다:
https://meta.discourse.org/t/discourse-subscriptions/140818/77?u=livc
이 플러그인은 내 사이트에 매우 중요한데, 지금은 전혀 모르겠어요. ![]()
그 플러그인을 직접 만들었다면, 직접 수정해 보세요. 누군가가 대신 만들어 준 것이라면, 해당 사람에게 연락하여 수정을 요청해 보세요.