Spec-Zone.ru › Django 5.1

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

См. также

Для введения в использование 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.contrib.staticfiles, см. справочник по staticfiles.

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

Spec-Zone.ru

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