Spec-Zone.ru › Wagtail

Многосайтовая, многоэкземплярная и многоарендная системы

Эта страница предоставляет справочную информацию о том, как запустить несколько сайтов Wagtail (с одинаковым исходным кодом).

  • Многосайтовая
  • Многоэкземплярная
  • Многоарендная

Многосайтовая

Многосайтовая конфигурация Wagtail — это конфигурация проекта Wagtail, в которой авторы контента работают в одном административном интерфейсе и управляют контентом нескольких веб-сайтов. В определенной степени возможны разрешения для управления определённым контентом и ограничение доступа к другому контенту.

Конфигурация многосайтовой системы основана на одном кодовом основании, на одном сервере и подключена к одной базе данных. Медиафайлы хранятся в одном корневом каталоге медиа. Контент может быть общим для разных сайтов.

Wagtail поддерживает многосайтовую конфигурацию «из коробки»: Wagtail поставляется с моделью сайта моделью сайта. Модель сайта содержит имя хоста, порт и поле корневой страницы. При запросе URL запрос поступает, имя домена и порт берутся из объекта запроса для поиска соответствующего объекта сайта. Корневая страница используется в качестве начальной точки для разрешения URL и отображения правильной страницы.

Wagtail также поставляется с настройками сайта. Настройки сайта — это «синглтоны», которые позволяют хранить дополнительную информацию о сайте. Например, настройки социальных сетей, поле для загрузки логотипа или поле выбора темы.

Объекты модели могут быть связаны с сайтом путем размещения поля внешнего ключа в модели, указывающего на объект сайта. Объект запроса может быть использован для поиска текущего сайта. Таким образом, может быть отображен контент, относящийся к определённому сайту.

Пользователи, группы и разрешения могут быть настроены таким образом, чтобы авторы контента могли управлять только страницами, изображениями и документами конкретного сайта. Wagtail может содержать несколько объектов сайта и несколько деревьев страниц. Разрешения могут быть связаны с определённым деревом страниц или его частью. Коллекции используются для категоризации изображений и документов. Коллекция может быть ограничена пользователями, которые входят в определённую группу.

Некоторые проекты требуют, чтобы редакторы контента имели разрешения на конкретные сайты и ограничивали доступ к другим сайтам. Разделение всего контента по сайту и гарантия, что контент «не утечёт», сложно реализовать в многосайтовом проекте. Если вам требуется полное разделение контента, то многоэкземплярная конфигурация может быть более подходящей…

Многоэкземплярная

Многоэкземплярная конфигурация проекта Wagtail — это конфигурация проекта, в которой один набор файлов проекта используется несколькими веб-сайтами. Каждый сайт имеет свой файл настроек, отдельную базу данных и каталог медиа. Каждый сайт выполняется в собственном процессе сервера. Это гарантирует полное разделение всего контента.

Предположим, что домены a.com и b.com. Файлы настроек могут быть base.py, acom.py, и bcom.py. Базовые настройки будут содержать все настройки, как обычно. Содержимое сайтоспецифичных настроек переопределяет базовые настройки:

# settings/acom.py

from base import \* # noqa

ALLOWED_HOSTS = ['a.com']
DATABASES["NAME"] = "acom"
DATABASES["PASSWORD"] = "password-for-acom"
MEDIA_DIR = BASE_DIR / "acom-media"

Каждый сайт может быть запущен со своим файлом настроек. В режиме разработки ./manage.py runserver --settings settings.acom. В режиме производства, например, с uWSGI, укажите правильные настройки с env = DJANGO_SETTINGS_MODULE=settings.acom.

Поскольку у каждого сайта своя база данных и папка медиа, ничего не может «просочиться» на другой сайт. Но это также означает, что контент не может быть общим для разных сайтов, как это возможно при использовании многосайтовой опции.

В этой конфигурации несколько сайтов используют один и тот же, единый набор файлов проекта. Развертывание будет обновлять один и тот же набор файлов проекта и перезагружать каждый экземпляр.

Эта многоэкземплярная конфигурация мало чем отличается от многократного развертывания кода проекта. Однако использование одного набора файлов проекта и различение только с помощью файлов настроек — это максимально приближенная к истинной многоарендной системе конфигурация Wagtail. Каждый сайт идентичен, контент разделен, включая управление пользователями. «Добавление нового арендатора» — это добавление нового файла настроек и запуск нового экземпляра.

В многоэкземплярной конфигурации каждый экземпляр требует определённого количества ресурсов сервера (CPU и памяти). Это означает, что добавление сайтов увеличит нагрузку на сервер. Это масштабируется только до определенного предела.

Многоарендная

Многоарендная конфигурация — это конфигурация проекта, в которой один экземпляр программного обеспечения обслуживает несколько арендаторов. Арендатор — это группа пользователей, которые имеют доступ и разрешения к одному сайту. Многоарендная система разработана для обеспечения каждой аренды своей конфигурацией, данными и управлением пользователями.

Wagtail поддерживает многосайтовую конфигурацию, где управление пользователями и контентом общие. Wagtail может работать в многоэкземплярном режиме, где обеспечивается полное разделение контента за счет запуска нескольких экземпляров. Многоарендная система сочетает в себе лучшее из обоих миров: один экземпляр и полное разделение контента по сайту и управление пользователями.

Wagtail в настоящее время не поддерживает полную многоарендность. Но это в нашем плане, мы хотели бы улучшить Wagtail, добавив многоарендность — при одновременной поддержке существующей многосайтовой опции. Если у вас есть идеи или вы хотите внести вклад, присоединяйтесь к нам на Slack в канале многоарендности.

В настоящее время Wagtail имеет следующие функции для поддержки многоарендности:

  • Модель сайта, сопоставляющая имя хоста с корневой страницей
  • Разрешения, позволяющие группам пользователей управлять:

    • произвольными частями дерева страниц
    • частями дерева коллекции (скоро будет)
    • одной или несколькими коллекциями документов и изображений
  • API страниц автоматически ограничивает доступ к хосту, используемому для запроса

Но некоторые функции в настоящее время не поддерживают многоарендность:

  • Сниппеты — это глобальные фрагменты контента, поэтому они не подходят для многоарендности, но любая модель, которая может быть зарегистрирована как сниппет, также может управляться через админку моделей Wagtail. Вы можете добавить site_id в модель, а затем использовать метод model admin get_queryset для определения сайта, который может управлять каждым объектом. Встроенные выборщики сниппетов могут быть заменены modelchooser, который позволяет фильтровать выборку, чтобы ограничить сайты, которые могут отображать определенные объекты.
  • Управление сайтами, настройками сайта, пользователями и группами. В настоящее время ваш лучший вариант — разрешить только суперпользователям управлять этими объектами.
  • Потоки и задачи потоков
  • История сайта
  • Перенаправления

Настройка разрешений для встроенных моделей, таких как Сайты, Настройки сайта и Пользователи, не специфична для сайта, поэтому любой пользователь с разрешением на редактирование одной записи может редактировать их все. Это ограничение можно в основном обойти, разрешив управлять этими моделями только суперпользователям.

Python, Django и Wagtail позволяют переопределять, расширять и настраивать функциональность. Вот несколько идей, которые могут помочь вам создать решение многоарендной системы для вашего сайта:

  • Django позволяет переопределять шаблоны, это также работает в админке Wagtail.
  • Можно использовать пользовательскую модель пользователя для связи пользователей с определённым сайтом.
  • Пользовательские админские представления могут обеспечить более ограниченное управление пользователями.

Мы приветствуем заинтересованных членов сообщества Wagtail, чтобы внести вклад в код и идеи.

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/stable/advanced_topics/multi_site_multi_instance_multi_tenancy.html

Spec-Zone.ru

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