你好,
我将一个 Discourse 实例从一个主机迁移到了另一个主机,从多站点设置迁移到了使用备份导出/导入的单容器单主机设置,但部分链接仍使用了 www.example.com 而非正确的主机名。
该如何修复?
我已将 DISCOURSE_HOST 设置为对应的主机名,但似乎并未解决问题。是否有可用的 SQL 查询来查找 www.example.com 的出现位置?
你好,
我将一个 Discourse 实例从一个主机迁移到了另一个主机,从多站点设置迁移到了使用备份导出/导入的单容器单主机设置,但部分链接仍使用了 www.example.com 而非正确的主机名。
该如何修复?
我已将 DISCOURSE_HOST 设置为对应的主机名,但似乎并未解决问题。是否有可用的 SQL 查询来查找 www.example.com 的出现位置?
或许可以按照更改域名或重命名我的 Discourse 中的描述进行重新映射?
我最大的猜测是,在某个环节中有东西被配置成了该主机名。不过,很难推测这究竟是如何发生的。
你可以从 Rails 控制台按如下方式快速搜索你所有站点设置中是否包含字符串 “example”:
SiteSetting.where('value LIKE ?', "%example%")
例如,在我们的 Discourse 实例上:
[1] pry(main)> SiteSetting.where('value LIKE ?', "%unix\.com%").count
=> 10
如果你想检查 REDIS,请尝试(假设你的数据容器在 app 中,请根据需要修改):
docker exec -it app redis-cli
然后,尝试类似以下的命令:
127.0.0.1:6379> KEYS *example*
(empty list or set)
另一个示例:
127.0.0.1:6379> KEYS *unix*
1) "default:_CACHE:onebox__https://www.unix.com/man-page/linux/1/df/"
2) "ANON_CACHE_text/html,application/xhtml+xml,application/signed-exchange;v=b3,application/xml;q=0.9,*/*;q=0.8_https_community.unix.com/t/passing-variables-to-awk/150198|m=true|c=true|b=true|t=|ca=|l=_count"
3) "default:_CACHE:onebox__https://www.unix.com/aix/56317-timestamp-sh_history-using-ksh-shell.html"
要快速查看所有全局设置,你可以从 Rails 控制台运行以下命令,所有全局设置都将可见(我相信肯定有更好的方法……但这很快速且有效):
[1] pry(main)> GlobalSetting.as_json
希望这能帮到你。
跟随 @pfaffman 的链接,我意识到自己误用了 DISCOURSE_HOST 而非 DISCOURSE_HOSTNAME。
@neounix 提供的有用排查建议并未产生结果,因此我推测第一个问题导致了当前的状况。我正在重建容器以验证……
容器已重建,链接现在能显示之前损坏的图片,看来问题已解决。感谢两位!
@pfaffman 能否请您为 ActivityPub Support: Phase 1 RFC - #27 by hellekin 执行 rebuild HTML 以确认修复是否生效?
是的,在查看了代码后,这完全说得通了。Discourse 的配置在配置文件中将默认主机名设置为 "www.example.com",因此如果构建文件中存在错误(就像你描述的 @hellekin 那样),看起来你会得到默认值 ![]()
也许有一天,有人会将该配置默认值改为:
hostname = "www.hostname-missing-check-yml-file.com"
![]()
我在这里没有管理员权限。如果你想确认你的网站嵌入功能在其他网站上是否正常运行,可以在 try.discourse.org 上进行测试。
我想 hostname = "please.set.DISCOURSE_HOSTNAME.env.example" 会更明确且符合 RFC 标准。
谢谢,我已经在其他地方测试过了,只是希望更新一下这个帖子 ![]()
按钮已按下。看起来图片已经显示出来了!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.