您可以在 JavaScript 控制台中查看。我猜想 CDN 是错误的,或者您没有正确处理预编译资源部分。
https://community.itechguides.com/ 现在可以正常工作了:
如果对您来说无法正常工作,请尝试强制重新加载和/或使用无痕窗口。
您可以在 JavaScript 控制台中查看。我猜想 CDN 是错误的,或者您没有正确处理预编译资源部分。
https://community.itechguides.com/ 现在可以正常工作了:
如果对您来说无法正常工作,请尝试强制重新加载和/或使用无痕窗口。
该站点对您开放是因为当您打开它时,我已从 app.yml 文件中注释掉了以下行:
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: nyc3
DISCOURSE_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
DISCOURSE_S3_ACCESS_KEY_ID: accesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: secretkey
DISCOURSE_S3_CDN_URL: https://community-cdn.itechguides.com
DISCOURSE_S3_BUCKET: itg-community-files
DISCOURSE_S3_BACKUP_BUCKET: itg-community-files/backups
DISCOURSE_BACKUP_LOCATION: s3
我现在重新启用了这些行并重建了容器。现在,该站点又显示空白页了!
下面的屏幕截图显示了我将代码放在 app.yml 中的位置。如您所见,我将 S3 配置代码放在了 DISCOURSE_NOTIFICATION_EMAIL 的下方。
如果注释掉 DISCOURSE_CDN_URL 会发生什么?
我注释掉了 DISCOURSE_S3_CDN_URL,网站就可以加载了。这证实了我的 S3 CDN 设置有问题,但我仍然不知道如何正确设置。
非常感谢任何帮助。
您是否完成了“配置”部分中的所有任务?
如果我没记错的话,在 app.yml 中设置 DISCOURSE_S3_CDN_URL _要求_将资产存储在 S3 上。
我不太了解 Discourse 的工作原理。我只是一个从 PHP 世界复制粘贴的网站管理员,但我仍然想知道为什么需要声明两次相同的 CDN。
我没有使用 DISCOURSE_CDN_URL,因为我有 DISCOURSE_S3_CDN_URL(而且我读过的任何文档可能都没有指导我使用它)。所以我尝试了一下。
我添加了 DISCOURSE_CDN_URL: <cdn-url>。重建没有报错,但我遇到了 502 错误。当我删除它时,我的论坛又恢复正常了。
不过,您的问题可能是由于其他地方的配置错误造成的。但我喜欢简单的解决方案,即使我错了,而且我抱怨的是您为不同需求两次指定 CDN 的情况。或者别的什么。
DISCOURSE_CDN_URL 和 DISCOURSE_S3_CDN_URL 是不同的。DISCOURSE_CDN_URL 指向您的论坛,而 DISCOURSE_S3_CDN_URL 指向您的 S3 存储 URL。
其想法是让 DISCOURSE_CDN_URL 提供可拉取的资源,如 CSS,而 DISCOURSE_S3_CDN_URL 提供可推送的资源,如 JS、图像和用户上传。
我已经设法让一切正常工作,除了我的 S3 存储 CDN。每当我启用 app.yml 文件中的那部分时,我的论坛就会显示空白。
查看浏览器检查元素的网络显示,由 DISCOURSE_S3_CDN_URL 提供的资源显示 404 错误。
我卡在这里了!我不确定为什么 S3 CDN 无法提供这些资源。
感谢您耐心解释!
这对我来说相当……陌生。但正如我所说,我的经验非常有限。我在 WordPress 中使用 AWS 作为 CDN,通过 S3/CloudFlare,但仅限于静态文件——脚本需要另一套设置。我认为没有必要比较 WP 和 Discourse,因为它们是根本上截然不同的平台。但我在这里试图理解这个概念的原理。
好吧,我现在比您了解得多 ![]()
编辑:而且我的设置也完全错了
所有 JS、图片等都通过 CDN 提供服务。但我找不到 CSS。
是的,它们是。但感谢您的更新。
嗨 @Jagster,我将非常感谢您的帮助。
我现在遇到的问题是我的网站试图从对象存储 CDN 加载 .gz.js 资源,但这些文件不存在。如何强制 Discourse 将这些 .gz.js 资源上传到对象存储?
这正是指南中这部分内容的作用:
That’s wrong. The after_assets_precompile YAML key must be under the hooks key.
By default we ship as:
## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
and you want
## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
非常感谢您,@Falco。我现在就移动它们并重试。
但是其他插件呢?把它们列在下面可以吗?
不。
它将变成:
## 插件放在这里
## 详情请参阅 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/discourse/docker_manager.git
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/docker_manager.git
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
YAML 是一种树状数据结构,空格缩进定义了结构。