Spec-Zone.ru › Wagtail 2

Многосайтовая, многоинстансная и многоарендная системы

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

  • Многосайтовая система
  • Многоинстансная система
  • Многоарендная система

Многосайтовая система

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

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

Wagtail поддерживает многосайтовую систему «из коробки»: Wagtail поставляется с site model. Модель сайта содержит имя хоста, порт и поле корневой страницы. При запросе 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 в модель, а затем использовать метод get_queryset админ-интерфейса модели для определения, какой сайт может управлять каждым объектом. Встроенные выбиратели сниппетов можно заменить на modelchooser, который позволяет фильтровать набор запросов, чтобы ограничить сайты, которые могут отображать объекты.
  • Управление сайтами, настройками сайтов, пользователями и группами. В настоящее время лучше всего разрешить только суперпользователям управление этими объектами.
  • Потоки и задачи потока
  • История сайта
  • Перенаправления

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

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

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

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

  • Предыдущая О блоках BoundBlocks и значениях StreamField
  • Следующая Как использовать перенаправление с Form Builder для предотвращения двойной отправки

Содержание страницы

  • Многосайтовая, многоинстансная и многоарендная системы
    • Многосайтовая система
    • Многоинстансная система
    • Многоарендная система

© 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/multi_site_multi_instance_multi_tenancy.html

Spec-Zone.ru

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