Развёртывание Wagtail
На вашем сервере
Wagtail легко развернуть на современных дистрибутивах Linux, и он должен работать с любыми комбинациями, подробно описанными в документации по развертыванию Django в документации по развертыванию. Обратитесь к разделу о производительности для получения рекомендаций по не-Python сервисам.
На Divio Cloud
Divio Cloud — это облачная платформа хостинга на базе Docker для Python/Django, которая позволяет запускать и развертывать проекты Wagtail за несколько минут. С бесплатной учётной записью вы можете создать проект Wagtail. Вы можете выбрать:
Divio Cloud также предоставляет живую демонстрацию Wagtail Bakery (без необходимости регистрации).
На PythonAnywhere
PythonAnywhere — это платформа как услуга (PaaS), ориентированная на хостинг и разработку на Python. Она позволяет разработчикам быстро разрабатывать, размещать и масштабировать приложения в облачной среде. Начиная с бесплатного плана, они также предоставляют базы данных MySQL и PostgreSQL, а также гибкие и доступные платные планы, так что у вас есть всё необходимое для размещения сайта Wagtail. Чтобы быстро начать работу, вы можете использовать wagtail-pythonanywhere-quickstart.
На Google Cloud
Google Cloud — это инфраструктура как услуга (IaaS), которая предлагает множество управляемых продуктов, поддерживаемых библиотеками Python-клиентов, которые помогут вам создавать, развертывать и контролировать ваши приложения. Вы можете развернуть Wagtail или любое приложение Django различными способами, в том числе на App Engine или Cloud Run.
На других платформах PAAS и IAAS
Нам известно о сайтах Wagtail, работающих на Heroku, Digital Ocean и других платформах. Если вы успешно установили Wagtail на вашей платформе или инфраструктуре, пожалуйста, внести свой вклад в эту документацию!
Советы по развертыванию
Статические файлы
Как и во всех проектах Django, статические файлы не предоставляются сервером приложений Django в рабочей среде (т. е. вне manage.py runserver команды); их необходимо обрабатывать отдельно на уровне веб-сервера. См. документацию Django по развертыванию статических файлов.
Файлы JavaScript и CSS, используемые административной панелью Wagtail, часто меняются между выпусками Wagtail — важно избегать предоставления устаревших версий этих файлов из-за кэширования на стороне браузера или сервера, так как это может привести к трудно диагностируемым проблемам. Мы рекомендуем включить ManifestStaticFilesStorage в настройках STATICFILES_STORAGE — это гарантирует, что различным версиям файлов будут назначены разные URL-адреса.
Файлы, загруженные пользователем
Wagtail следует конвенциям Django для управления загружаемыми файлами. Таким образом, по умолчанию Wagtail использует встроенный класс Djangos FileSystemStorage, который хранит файлы на сервере вашего сайта в каталоге, указанном настройкой MEDIA_ROOT. В качестве альтернативы, Wagtail можно настроить для хранения загруженных изображений и документов в облачной службе хранения, такой как Amazon S3; это делается через настройку DEFAULT_FILE_STORAGE в сочетании с дополнительным пакетом, таким как django-storages.
При использовании FileSystemStorage, URL-адреса изображений строятся, начиная с пути, указанного в MEDIA_URL. В большинстве случаев вам следует настроить веб-сервер для непосредственного предоставления файлов изображений (без прохождения через Django/Wagtail). При использовании одного из облачных хранилищ, URL-адреса изображений напрямую указывают на URL-адрес файла в облачном хранилище. Если вы хотите предоставить изображения с отдельного сервера ресурсов или CDN, вы можете настроить представление для предоставления изображений для перенаправления.
Отображение документов контролируется методом WAGTAILDOCS_SERVE_METHOD. При использовании FileSystemStorage, документы хранятся в подкаталоге documents в каталоге MEDIA_ROOT вашего сайта. Если все ваши документы общедоступны, вы можете установить WAGTAILDOCS_SERVE_METHOD в direct и настроить свой веб-сервер для непосредственного предоставления файлов. Однако, если вы используете настройки приватности коллекций Wagtail Настройки приватности коллекций для ограничения доступа к некоторым или всем вашим документам, вы можете или не захотите настроить свой веб-сервер для непосредственного предоставления документов. Значение по умолчанию — redirect, которое позволяет Wagtail выполнять любые настроенные проверки конфиденциальности перед передачей предоставления фактического документа вашему веб-серверу или CDN. Это означает, что Wagtail создаёт ссылки на документы, которые проходят через Wagtail, но конечный URL в браузере пользователя предоставляется напрямую вашим веб-сервером. Если это неприемлемо, вы можете установить WAGTAILDOCS_SERVE_METHOD в serve_view и настроить свой веб-сервер, чтобы он не предоставлял файлы документов напрямую. Если вы предоставляете документы из облака и вам необходимо применить настройки конфиденциальности, убедитесь, что документы недоступны для публичного доступа с помощью URL-адреса файла облачной службы.
Облачное хранилище
Помните, что настройка удалённого хранилища не полностью перенесёт задачи обработки файлов с сервера приложения — некоторые функции Wagtail требуют, чтобы сервер приложения считывал файлы обратно. В частности, оригинальные файлы изображений необходимо считывать обратно при создании нового масштабированного изображения, а документы могут быть настроены на предоставление через представление Django для проверки разрешений (см. WAGTAILDOCS_SERVE_METHOD).
Обратите внимание, что бэкэнды django-storages Amazon S3 (storages.backends.s3boto.S3BotoStorage и storages.backends.s3boto3.S3Boto3Storage) не правильно обрабатывают дублирующиеся имена файлов в своей конфигурации по умолчанию. При использовании этих бэкэндов AWS_S3_FILE_OVERWRITE необходимо установить в False.
Если вы также предоставляете статические файлы Wagtail из удалённого хранилища (используя настройку Django STATICFILES_STORAGE), вам нужно убедиться, что оно настроено на предоставление заголовков CORS HTTP CORS HTTP headers, так как современные браузеры отклонят удалённые файлы шрифтов, у которых отсутствует допустимый заголовок. Для Amazon S3 обратитесь к документации Setting Bucket and Object Access Permissions, или (только для бэкэнда storages.backends.s3boto.S3Boto3Storage) добавьте следующее в настройки Django:
AWS_S3_OBJECT_PARAMETERS = {
"ACL": "public-read"
}
Параметр ACL принимает список предварительно определённых конфигураций для Amazon S3. Для получения дополнительной информации обратитесь к документации Canned ACL.
Для Google Cloud Storage создайте конфигурацию cors.json.
[
{
"origin": ["*"],
"responseHeader": ["Content-Type"],
"method": ["GET"],
"maxAgeSeconds": 3600
}
]
Затем примените эту конфигурацию CORS к хранилищу ведра:
gsutil cors set cors.json gs://$GS_BUCKET_NAME
Для других хранилищ обратитесь к документации вашего поставщика или к документации библиотеки бэкэнда Django хранилища, которую вы используете.
© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/advanced_topics/deploying.html