你好,我参考了 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 与另一个 Web 服务器(如 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%。
## 将根据检测到的 RAM 由 bootstrap 自动设置,您也可以覆盖
db_shared_buffers: "128MB"
## 可以提高排序性能,但会增加每个连接的内存使用量
#db_work_mem: "40MB"
## 此容器应使用哪个 Git 版本?(默认:tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## 支持多少并发 Web 请求?取决于内存和 CPU 核心数。
## 将根据检测到的 CPU 由 bootstrap 自动设置,您也可以覆盖
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 地址(配置为拉取)
## 请参阅 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 "开始自定义命令"
## 如果您想设置首次注册的“发件人”邮箱地址,请取消注释并修改:
## 收到首次注册邮件后,请重新注释该行。它只需运行一次。
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "结束自定义命令"
这是我的 app.yml,感谢您的帮助。
根据您之前的错误信息和 app.yml 来看,问题很可能出在您使用的 RSS 插件分支上。该插件中可能存在某些故障,从而导致了该问题。能否请您在禁用该插件后尝试重新构建?
如果我注释掉这个插件,插件页面就能正常工作。但在我将 Discourse 升级到最新版本之前,该插件一直运行正常,没有任何问题。
因此,我不确定这是由 Discourse 升级引起的,还是与多站点设置有关。
特别是,我发现
https://meta.discourse.org/t/discourse-subscriptions/140818/77?u=livc
在多站点环境下也遇到了相同的错误。
这个插件对我的网站非常重要,但我现在毫无头绪。![]()
如果您制作了这个插件,请尝试修复它。如果是别人为您构建的,请尝试联系他们以进行修复。