在子域名之间移动 Discourse——这会奏效吗?

场景:

注意:以下两个实例(服务器 1 和服务器 2)均运行在两台不同服务器上的 Docker 容器中。两台服务器均同时支持 HTTP 和 HTTPS(端口 80 和 443),并使用了 Let’s Encrypt 证书:

  1. Discourse 已在服务器 1 上完整运行,IP 地址为 1,同时支持 HTTP 和 HTTPS:discourse-test.example-domain.com
  2. Discourse 已在服务器 2 上初始化并运行(尚无额外帖子或主题),IP 地址为 2,同时支持 HTTP 和 HTTPS:talktime.example-domain.com

目标:

将服务器 1(测试环境)的所有内容迁移到服务器 2(生产环境),并将域名从 discourse-test.example-domain.com 更改为 talktime.example-domain.com

建议方案:

  1. 在服务器 1 上对 Discourse 进行备份。
  2. 在服务器 2 上恢复来自服务器 1 的 Discourse 备份。

这样应该可以无缝完成吗?

或者有什么需要注意的陷阱?

感谢任何提示。

2 个赞

这应该可以。在恢复后,请执行:

script/discourse remap //discourse-test.example-domain.com //talktime.example-domain.com

5 个赞

更新:

成功了……谢谢。

但头像没有恢复,不知何故。

也许是因为这个失败了?

script/discourse remap //discourse-test.example-domain.com //talktime.example-domain.com

Traceback (most recent call last):

2: from script/discourse:4:in `<main>'

1: from /usr/local/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'

/usr/local/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- thor (LoadError)
1 个赞

这个方法有效:

su discourse -c 'bundle exec script/discourse remap //discourse-test.example-domain.com //talktime.example-domain.com

……运行正常……

但在恢复过程中,头像没有迁移过来(我们在备份时选择了包含图片)。

更新:

我们通过将服务器 1 的以下目录中的图片迁移到服务器 2,使头像正常工作:

/var/discourse/shared/standalone/uploads/defaults
2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.