多服务器部署上的Django Compressor

多服务器部署上的Django Compressor,django,less,django-compressor,Django,Less,Django Compressor,我很幸运地在我们的堆栈中发现并实现了它,它部署到许多服务器上(目前为6台,但随着我们部署更小的虚拟机而不断增长) 如果你用的是最好的django_压缩机,这一切都很好。压缩原始CSS/JS代码 但是,现在我想介绍一些类型的预编译器。让我们假设在这个例子中,它是LESS(css)。这方面的思考过程相当简单: 将node、npm和less包安装到服务器上 添加更少的预编译器 压缩预编译器=(('text/less','lessc{infle}{outfile}'),) 现在部署,服务器编译的文

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

如果你用的是最好的django_压缩机,这一切都很好。压缩原始CSS/JS代码

但是,现在我想介绍一些类型的预编译器。让我们假设在这个例子中,它是LESS(css)。这方面的思考过程相当简单:

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

  • 添加更少的预编译器

    压缩预编译器=(('text/less','lessc{infle}{outfile}'),)

现在部署,服务器编译的文件就更少了。一切都很棒

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

这就是有些事情看起来不对劲的地方,我觉得我错过了一些东西。我相信Django社区以前也遇到过这个问题

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

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

  • 吸收它,使节点、npm和更少的服务器堆栈的一部分

更新

我做了一些额外的检查,似乎在管理命令中使用
COMPRESS\u OFFLINE
标志(或者干脆--force)将生成一个脱机清单文件,该文件完成我需要的工作(仅在本地测试)。因此,使用预部署钩子来设置它似乎就是答案


当然,还有其他想法:-)

再加上关于
COMPRESS\u OFFLINE
的评论中的提示,你可以看看django staticfiles的存储内容。例如,您可以在AmazonS3上托管静态文件,因此在一个静态托管服务器上托管所有静态文件,并从所有服务器使用这些静态文件也是一个不错的解决方案。您不需要对各个服务器上的静态(和压缩)文件执行任何操作

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


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

您可以使用puppet完成任务

您是对的,脱机压缩是答案,我相信它是为此而创建的。不幸的是,脱机压缩似乎充满了错误。hrmca您可以指定您的错误吗?我使用django压缩机,较少使用离线压缩,在ep中没有任何问题。io@armonge例如,模板的结构有问题。。这似乎是文档建议您构建模板的方式:但是,如果我调整模板,使base.html具有包装这两个块的
{%compress%}
标记,如果我没有覆盖homepage.html中的
javascript
块,那么这将失败,然后,当我尝试运行compress管理命令时,我只会得到一个TemplateSyntaxError。您是否可以在SO之外的某个地方聊天?关于多个服务器:我制作了一个自定义fabric()脚本,用于在我们的服务器上安装/配置内容。我最近才开始使用coffeescript和更少的,但这两个最终都会出现在我的文件中。这为我解决了安装问题。