Spec-Zone.ru › Django 3.0

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

См. также

Для ознакомления с использованием 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, вы можете использовать настраиваемый бэкенд хранилища файлов для интеграции 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/3.0/howto/static-files/deployment/

Spec-Zone.ru

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