【问题标题】:CSS and JS assets not being found when deploying Apostrophe CSM to Heroku将 Apostrophe CSM 部署到 Heroku 时找不到 CSS 和 JS 资产
【发布时间】:2019-09-12 06:28:31
【问题描述】:

我正在关注如何部署到 Heroku:https://docs.apostrophecms.org/apostrophe/tutorials/howtos/deploying-apostrophe-in-the-cloud-with-heroku

由于我使用 Heroku 的 mLab 插件来处理我的 Mongo,因此我有点偏离了 HOWTO。另外,我暂时跳过了 S3 设置,因为我只是想让它运行起来。我不确定这对于适当交付资产是否非常重要。

我已经完成了 HOWTO 中的以下内容:

  • 在 Heroku 中创建了一个项目
  • 将其添加到我的 git 存储库中作为 heroku 作为远程
  • 添加了 mLab 插件并创建了一个数据库,并添加了指向该数据库 uri 的环境变量。
  • APOS_BUNDLE=1APOS_MINIFY=1 添加了环境变量
  • 在 /scripts 目录以及 Procfile 中添加了 heroku-release-scripts 可执行文件。

这是我./scripts/heroku-release-scripts的代码

#!/bin/bash

node app apostrophe:generation
node app apostrophe-migrations:migrate

这是Procfile

web: node app
release: ./scripts/heroku-release-tasks

注意一点;如果我查看我的 CSS 和 JS 资产的路径,它会看到类似这样的内容“

https://van-biema-partners.herokuapp.com/uploads/assets/ck0fmqn3i00050uuck7exy3v2/apos-minified/anon-ck0fmqn3i00050uuck7exy3v2.js

我不确定这是否正确,但也许是......

编辑

复制上面的 URL 并删除 '/uploads/assets/ck0fmqn3i00050uuck7exy3v2' 部分,我可以看到 CSS 和 JS。不知道路径发生了什么,但这似乎是问题所在,但我不知道如何纠正。 https://van-biema-partners.herokuapp.com/apos-minified/anon-ck0fmqn3i00050uuck7exy3v2.css

【问题讨论】:

  • 我还可以补充一点,当构建和部署发生时,我在 heroku 日志中看不到任何明显的内容。
  • 我怀疑问题是我们错过了您尚未设置 s3 的边缘情况的细节,即使这是成功上传工作所必需的。在这种情况下,路径应该会有所不同,但实际上将事物留在大多数实际用途中并不是一种可持续的状态。我会开一张关于这个边缘案例的票。
  • 实际上,我什至可以说它的行为符合预期——如果你实际上有一个工作的 uploadfs 配置(s3 或其他对你的所有 heroku dynos 可见的后端),它会工作正常。我将更新文档以明确此步骤是强制性的。
  • @TomBoutell 这完全有道理。在设置 s3 时,文档说您需要设置四个 evnvironment var、APOS_S3_BUCKET、APOS_S3_SECRET、APOS_S3_KEY 和 APOS_S3_REGION。 Secret 和 Key 的值是我的根 AWS 用户的访问密钥吗?
  • 您可以使用您的根密钥,是的,但亚马逊肯定会恳求您创建一个 IAM 用户和一个 IAM 组,并创建一个仅允许访问存储桶的策略,这样被黑的服务器就不会这并不意味着人们可以完全按照自己的意愿创建 AWS 服务器(:虽然这有点痛苦,所以如果你一开始使用根密钥和秘密,我不会评判你。以下是有关更安全设置的信息:@ 987654323@

标签: apostrophe-cms


【解决方案1】:

问题在于,新的、简化的 APOS_BUNDLE=1 功能严格要求您有一个持久的 uploadfs 后端 — 换句话说,它要求您设置 S3,即使资产 URL 也能成功。

由于在任何情况下媒体上传都需要这样做,因此我已修复您阅读的文档以解决此要求。我还删除了关于 --sync-to-uploadfs 选项的令人困惑的剩余部分,不再需要将资产复制到 S3;这是导致 S3 可能不是强制性的令人困惑印象的部分原因。

(严格来说,它不一定是 Amazon S3。除了支持替代 S3 实现之外,Apostrophe 的 uploadfs 模块还支持 Azure blob 存储和 Google 的云存储。uploadfs 文档有更多关于该主题的内容。什么是真正的要求是在 heroku 临时文件系统以外的地方来存储东西,因为这些不是持久的,同样的文件也不是所有 dynos 可见的。)

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 2016-05-25
    • 2016-02-04
    • 2013-12-29
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多