Spec-Zone.ru › Django 4.1

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

См. также

Для ознакомления с использованием 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/4.1/howto/static-files/deployment/

Spec-Zone.ru

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