Django Compressor在多服务器部署上

时间:2012-02-03 14:51:36

标签: django less django-compressor

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

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

但是,现在说我想介绍一些预编译器。让我们说这个例子是LESS(css)。对此的思考过程非常简单:

  • 将node,npm和less包安装到服务器上。

  • 向预编译器添加少量内容!

      

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

现在部署,您的服务器编译较少的文件。一切都太棒了!

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

这是一些看似不对的地方,我觉得我错过了什么。我相信Django社区之前遇到过这个问题。

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

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

  • 将其吸收并创建节点,npm和服务器堆栈的较少部分。

更新

我做了一些额外的调查,似乎在管理命令中使用COMPRESS_OFFLINE标志(或只是--force)将产生一个离线清单文件,它可以满足我的需求(仅在本地测试)。因此,使用预部署钩子进行设置就像是答案。

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

2 个答案:

答案 0 :(得分:0)

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

关于多个服务器的替代解决方案:我已经制作了一个自定义结构(docs.fabfile.org)脚本,用于在我们的服务器上安装/配置内容。我最近才开始使用coffeescript而不是更少,但这两个最终都在我的fabfile中结束。这解决了我的安装问题。

(fabfile的替代品类似于具有标准依赖性的自定义debian包。或者厨师或木偶或类似的东西。)

答案 1 :(得分:0)

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