Spec-Zone.ru › Django 4.2

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

См. также

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

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

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

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

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

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

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

Изменено в Django 4.2:

Была добавлена настройка STORAGES.

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

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

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

Spec-Zone.ru

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