Spec-Zone.ru › Django 5.2

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

См. также

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

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

Основные этапы размещения статических файлов в рабочей среде включают два шага: запуск команды collectstatic при изменении статических файлов, а затем размещение каталога собранных статических файлов (STATIC_ROOT) на сервере статических файлов и его обработку. В зависимости от staticfiles STORAGES псевдонима, файлы могут потребоваться перенести в новое место вручную, или метод 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 в STORAGES.

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

STORAGES = {
    # ...
    "staticfiles": {"BACKEND": "myproject.storage.S3Storage"}
}

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

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

Подробнее

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

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

Spec-Zone.ru

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