Spec-Zone.ru › Django 2.1

Развёртывание статических файлов

См. также

Для введения в использование django.contrib.staticfiles, см. Управление статическими файлами (например, изображениями, JavaScript, CSS).

Обработка статических файлов в рабочей среде

Основные принципы размещения статических файлов в рабочей среде просты: запустите команду collectstatic при изменении статических файлов, затем разместите каталог собранных статических файлов (STATIC_ROOT) на сервере статических файлов и настройте его для обработки. В зависимости от STATICFILES_STORAGE, файлы могут потребоваться перенести в новое расположение вручную, или метод post_process класса Storage может позаботиться об этом.

Конечно, как и во всех задачах развёртывания, ключевой момент — детали. Каждая конфигурация рабочей среды будет немного отличаться, поэтому вам потребуется адаптировать базовые принципы к своим потребностям. Ниже приведены несколько распространённых шаблонов, которые могут помочь.

Обработка сайта и статических файлов с одного сервера

Если вы хотите обрабатывать статические файлы с того же сервера, что и ваш сайт, процесс может выглядеть следующим образом:

  • Загрузите свой код на сервер развёртывания.
  • На сервере запустите collectstatic, чтобы скопировать все статические файлы в STATIC_ROOT.
  • Настройте веб-сервер на обработку файлов в STATIC_ROOT по URL STATIC_URL. Например, вот как сделать это с Apache и mod_wsgi.

Вероятно, вам захочется автоматизировать этот процесс, особенно если у вас несколько веб-серверов.

Обработка статических файлов с выделенного сервера

Большинство крупных сайтов на Django используют отдельный веб-сервер — то есть, сервер, на котором не работает Django — для обработки статических файлов. Этот сервер часто работает с другим типом веб-сервера — более быстрым, но менее функциональным. Некоторые распространённые варианты:

  • Nginx
  • Упрощённая версия Apache

Настройка этих серверов выходит за рамки этого документа; см. документацию каждого сервера для инструкций.

Поскольку ваш сервер статических файлов не будет запускать Django, вам потребуется изменить стратегию развёртывания, чтобы она выглядела примерно так:

  • При изменении статических файлов запустите collectstatic локально.
  • Загрузите ваш локальный STATIC_ROOT на сервер статических файлов в каталог, который обрабатывается. rsync — распространённый выбор для этого шага, так как он переносит только изменённые части статических файлов.

Обработка статических файлов из облачного сервиса или CDN

Ещё один распространённый приём — обработка статических файлов с поставщика облачных хранилищ, такого как Amazon S3, и/или CDN (сеть доставки контента). Это позволяет вам игнорировать проблемы обработки статических файлов и часто приводит к более быстрому загрузке веб-страниц (особенно при использовании CDN).

При использовании этих сервисов базовый рабочий процесс будет похож на описанный выше, за исключением того, что вместо использования rsync для передачи статических файлов на сервер, вам необходимо перенести статические файлы на поставщика хранилищ или CDN.

Существует множество способов сделать это, но если у поставщика есть API, пользовательский бэкенд хранилища файлов сделает процесс невероятно простым. Если вы написали или используете сторонний пользовательский бэкенд хранилища, вы можете указать collectstatic использовать его, задав STATICFILES_STORAGE на движок хранилища.

Например, если вы написали бэкенд хранилища S3 в myproject.storage.S3Storage, вы можете использовать его с:

STATICFILES_STORAGE = 'myproject.storage.S3Storage'

После этого всё, что вам нужно сделать, это запустить collectstatic, и ваши статические файлы будут переданы через ваш пакет хранилища на S3. Если вам потребуется позже переключиться на другого поставщика хранилищ, это может быть так же просто, как изменить свой параметр STATICFILES_STORAGE.

Для получения подробностей о написании одного из этих бэкендов см. Написание пользовательской системы хранения. Существуют сторонние приложения, предоставляющие бэкенды хранилищ для многих распространённых API файловых хранилищ. Хорошей отправной точкой является обзор на djangopackages.org.

Узнать больше

Для получения полной информации обо всех настройках, командах, тегах шаблонов и других компонентах, включённых в django.contrib.staticfiles, см. справочник по статическим файлам.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.1/howto/static-files/deployment/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API