Как разместить 50 доменов / сайтов с общей базой кода Django - PullRequest
1 голос
/ 16 апреля 2010

У меня есть 50 различных веб-сайтов, которые используют одинаковую разметку и кодовую базу, но в основном непересекающиеся данные (региональные сайты поддержки, а не ферма ссылок). Есть ли способ выполнить одну установку кода и запустить все 50 одновременно?

Когда мне нужно исправить ошибку (или развернуть новую функцию), я хочу развернуть ОДИН раз + 1 перезапуск и покончить с этим.

Также:

Код должен знать, к какому домену поступает запрос, чтобы отображались соответствующие данные.

Ответы [ 3 ]

1 голос
/ 16 апреля 2010

Я вижу два совершенно разных способа сделать это:

  1. Используйте одну базу данных и структуру сайтов. Каждый пост / изображение / какая-либо модель связана с сайтом, и вы всегда фильтруете на сайте. Для этого требуется отдельный файл настроек для каждой базы данных.
  2. Используйте одну базу данных для каждого сайта. Это позволяет использовать разных пользователей для каждого сайта, но требует дублирования всего , хранящегося в базе данных. Также требуется отдельный файл настроек, указывающий на правильную базу данных.

В любом случае, вы не дублируете какой-либо код, только данные.

-

Если вам нужно внести изменения, относящиеся к конкретному сайту, или пост-специфические изменения в ie. шаблон, вы должны прочитать о том, как Django загружает шаблоны. Он позволяет вам указать список, т.е. ["story_% d.html", "story_site_% d.html", "story.html"] и django будут искать шаблоны в этом порядке.

1 голос
/ 16 апреля 2010

На ум приходит Структура сайтов .

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

0 голосов
/ 17 июня 2010

Я просто наткнулся на это и в итоге использовал собственный класс промежуточного программного обеспечения, который:

  1. Получить HTTP_HOST
  2. Очистить HTTP_HOST (удалить www, порты и т. Д.)
  3. Поиск домена в таблице веб-сайтов, привязанной к каждой учетной записи.
  4. Установить экземпляр учетной записи для объекта HTTPRequest.

Во всем коде моего просмотра я выполняю поиск на основе учетной записи, хранящейся в объектах HTTPRequest.

Надеюсь, это поможет кому-то в будущем.

...