Django Compressor на многосерверном развертывании - PullRequest
4 голосов
/ 03 февраля 2012

Мне посчастливилось обнаружить django_compressor и внедрить его в наш стек, который развертывается на многих серверах (в настоящее время 6, но растет по мере развертывания небольших виртуальных машин).

Теперь все в порядке, если вы используете django_compressor во всей красе.Сжатие необработанного кода CSS / JS

Однако, скажем, теперь я хочу представить некоторый тип прекомпилятора.Допустим, для этого примера это LESS (CSS).Мысленный процесс для этого довольно прост:

  • Установите узел, npm и пакет less на сервер.

  • Добавьте меньше на свойпрекомпиляторы!

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

Теперь выразверните, и ваш сервер компилирует меньше файлов.Все это фантастика!

Теперь давайте добавим еще 8 серверов к этому, и вам нужно будет установить узел, npm и меньше на каждом сервере?

Это то, чего не нужнокажется неправильным, и я чувствую, что что-то упустил.Я полагаю, что сообщество Django уже сталкивалось с этой проблемой раньше.

До сих пор мои мысли были такими:

  • Использование пост-фиксации хука для компиляции CSS для разработчиковмашина.Это означает, что через django_compressor мы ссылаемся на скомпилированный статический файл в HTML, и наш репозиторий содержит как скомпилированные, так и не скомпилированные версии.Единственный мой недостаток в этом заключается в том, что он не использует половину преимуществ django_compressor и может быть утомительным для разработчиков?

  • Соси его и сделай узел, npm и меньше частьюсерверный стек.

Обновление

Я сделал несколько дополнительных осмотров, и кажется, что с использованием флага COMPRESS_OFFLINE (или просто --force)) с командой управления создаст автономный файл манифеста, который делает то, что мне нужно (проверяется только локально).Так что настройка этого с помощью ловушки перед развертыванием нравится быть ответом.

Конечно, все еще открыты для других идей: -)

Ответы [ 2 ]

0 голосов
/ 29 марта 2013

Вы можете использовать куклу для задания

0 голосов
/ 23 марта 2012

В сочетании с советами в комментариях о COMPRESS_OFFLINE вы можете посмотреть на материал для хранения django-staticfiles. Например, вы можете разместить статические файлы на amazon s3, поэтому размещение их на одном сервере статического хостинга и использование их со всех ваших серверов также может быть хорошим решением. Вам не нужно ничего делать со статическими (и сжатыми) файлами на отдельных серверах.

Альтернативное решение, касающееся нескольких серверов: я создал собственный скрипт фабрики (docs.fabfile.org), который устанавливает / настраивает компоненты на наших серверах. Я только недавно начал использовать coffeescript и меньше, но эти два окончательно оказались в моем файле. Это решает проблему установки для меня.

(Альтернативой fabfile являются такие вещи, как пользовательский пакет debian со стандартными зависимостями. Или chef, puppet или что-то подобное.)

...