Spec-Zone.ru › Django 4.0

Как развернуть статические файлы

См. также

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

STATICFILES_STORAGE = 'myproject.storage.S3Storage'

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

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

Дополнительная информация

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

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

Spec-Zone.ru

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