Spec-Zone.ru › Django 3.2

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

См. также

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

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

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

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

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

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

  • Загрузите свой код на сервер развёртывания.
  • На сервере выполните collectstatic, чтобы скопировать все статические файлы в STATIC_ROOT.
  • Настройте веб-сервер на обработку файлов в STATIC_ROOT по адресу STATIC_URL. Например, вот как это сделать с Apache и mod_wsgi как это сделать с 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.1/howto/static-files/deployment/

Spec-Zone.ru

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