Развертывание статических файлов ¶
Смотрите также
Для ознакомления с использованием 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, для обслуживания статических файлов. На этом сервере часто работает другой тип веб-сервера - более быстрый, но менее полнофункциональный. Вот некоторые распространенные варианты:
Настройка этих серверов выходит за рамки этого документа; проверьте соответствующую документацию каждого сервера для получения инструкций.
Поскольку на вашем статическом файловом сервере не будет работать 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
см. В справке по статическим файлам .