【问题标题】:Django Compressor on a multi-server deployment多服务器部署上的 Django Compressor
【发布时间】:2012-02-03 14:51:36
【问题描述】:

我很幸运地发现了django_compressor 并在我们的堆栈中实现了它,该堆栈部署到许多服务器(目前有 6 个,但随着我们部署更小的虚拟机而增长。)

现在,如果您使用最好的 django_compressor,这一切都很好。压缩原始 CSS/JS 代码

但是,现在说我想介绍某种类型的预编译器。假设这个例子是 LESS (css)。对此的思考过程相当简单:

  • 在服务器上安装node、npm和less包。

  • 为您的预编译器添加更少的内容!

    COMPRESS_PRECOMPILERS = ( ('text/less', 'lessc {infile} {outfile}'), )

现在您进行部署,并且您的服务器会编译 less 文件。一切都太棒了!

现在让我们再添加 8 台服务器,您必须在每台服务器上安装 node、npm 和 less?

这似乎有些不对劲,我觉得我错过了一些东西。相信Django社区之前也遇到过这个问题。

到目前为止,我的想法是:

  • 使用提交后挂钩在开发人员机器上编译 CSS。这意味着通过 django_compressor,我们链接到 HTML 中已编译的静态文件,并且我们的存储库包含已编译和未编译的版本。我唯一的缺点是它最终没有使用 django_compressor 的一半好处,并且对开发人员来说可能很乏味?

  • 收拾一下,让 node、npm 和更少的服务器堆栈的一部分。

更新

我做了一些额外的环顾四周,似乎将COMPRESS_OFFLINE 标志(或只是--force)与管理命令一起使用将生成一个离线清单文件,它可以满足我的需要(仅在本地测试)。因此,使用预部署挂钩进行设置很可能是答案。

当然,仍然对其他想法持开放态度:-)

【问题讨论】:

  • 你是对的,COMPRESS_OFFLINE 就是答案,我相信它就是为此而创建的
  • 不幸的是,离线压缩似乎充满了错误。人力资源管理
  • 您能具体说明您遇到的错误吗?我在 ep.io 中使用 django-compressor 和 less 进行离线压缩,没有任何问题
  • @armonge 模板的结构有问题,例如..这似乎是文档建议您构建模板的方式:dpaste.com/698404 但是,如果我不过度 -骑在 homepage.html 中的 javascript 块 如果我调整模板,使 base.html 有 {% compress %} 标记包裹这两个块,那么当我尝试运行压缩管理命令时,我只会得到一个 TemplateSyntaxError。你可以在 SO 以外的地方聊天吗?
  • 关于多台服务器:我制作了一个自定义结构 (docs.fabfile.org) 脚本,用于在我们的服务器上安装/配置内容。我最近才开始使用coffeescript 和less,但这两个肯定会出现在我的fabfile 中。这为我解决了安装问题。

标签: django less django-compressor


【解决方案1】:

结合 cmets 中关于 COMPRESS_OFFLINE 的提示,您可以查看 django-staticfiles 的存储内容。例如,您可以在 amazon s3 上托管静态文件,因此将其全部托管在一台静态托管服务器上并从所有服务器上使用它也可能是一个不错的解决方案。您无需对各个服务器上的静态(和压缩)文件执行任何操作。

关于多台服务器的替代解决方案:我制作了一个自定义结构 (docs.fabfile.org) 脚本,用于在我们的服务器上安装/配置内容。我最近才开始使用coffeescript 和less,但这两个肯定会出现在我的fabfile 中。这解决了我的安装问题。

(fabfile 的替代品是诸如具有标准依赖项的自定义 debian 包之类的东西。或者 chef 或 puppet 或类似的东西。)

【讨论】:

    【解决方案2】:

    你可以使用木偶来完成任务

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 2017-09-03
      • 2018-12-30
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      相关资源
      最近更新 更多