Мультисайтинг или использование одного ядра

Главные вкладки

Аватар пользователя alkis27 alkis27 28 февраля 2010 в 15:12

Здравствуйте!

Возможно ли развернуть на одной копии системы десяток разных сайтов (site1.ru, site2.ru и т.д.)?
Имеет ли это смысл, при условии что речь идет о разных сайтах с разными базами данных?

Если такой мультисайтинг возможен и целесообразен, тогда вопрос: как это сделать при условии, что разработка сайта и первоначальное наполнение информации происходит на локальной машине, а потом готовый сайт будет переносится на сервер? Как организовать хранение конфига/конфигов и папок для файлов (files) в папке "sites"?

Заранее спасибо.

Комментарии

Аватар пользователя vgoodvin vgoodvin 28 февраля 2010 в 18:13

Это без проблем. Изучите глубже мультисайтинг. Материалов вагон. Есть доклад Влада Савицкого, где он рассказывает подробно какие таблицы БД можно не рекомендуется и нельзя объядинять, а также общие принципы построения мультисайтинга.

Скажу кратко: все модули для каждого сайта храняться в папке sites/example.com/modules, темы соответственно в sites/example.com/themes. А вот где храняться настройки (settings.php) и папка с файлами (files) попробуйте догадаться сами, это не сложно.

Аватар пользователя VladSavitsky VladSavitsky 28 февраля 2010 в 19:43

Мультисайтинг это одно из достоинств друпал.
Облегчает установку новых сайтов (нужно только добавить базу) и обновление ядра и модулей (нужно обновлять только в одном месте).

Вот мой доклад: http://camp09.drupal.ua/ru/blog/multisiting
Я бы советовал изучить материал по ссылкам, что в конце презентации.

Аватар пользователя alkis27 alkis27 1 марта 2010 в 4:43

Спасибо за доклад - на будущее обязательно пригодится. Один из сайтов, который надо будет переделать - это на самом деле 3 сайта, часть контента которых пересекается, а у родителя - частично объединяется.

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

Перечитав все что можно - пришел к следующему выводу.

Как это работает сейчас:
Имеется сервер, на котором размещены 10 разных сайтов: site1.ru, site2.ru и т.д.
Сайты сделаны на своей CMS (asp). Все сайты обслуживает одна копия системы. База данных у каждого сайта своя. Разруливается все в конфигурационном файле asp-приложения. В web.config прописано соответствие между доменами, к которым идет обращение, и параметрами соединения с базой данных. Содержание сайта и всего его настройки - хранятся в базе. Для каждого сайта есть своя папка на диске, в которой хранятся ее вложенные файлы и картинки.
Вся эта схема работает и локально на моей машине. Разница только в том, что локально я могу обратиться к сайту только по адресу localhost. Поэтому в web.config добавлена строка - параметры соединения с базой данных для сайта localhost. Меняя эти параметры, я выбираю сайт с которым буду работать в данный момент.

Как это будет работать на Drupal (сначала локально, а потом на сервере):

Локально:
Файлы: для хранения файлов сразу заводим папки "sites/files/client1name", "sites/files/client2name" (лучше так, чем "sites/files/site1.ru", т.к. домен теоретически может поменяться, а ссылки на файлы останутся старыми) и в будущем на каждом сайте в настройках файловой системы прописываем соответствующий путь.
В папке "sites/default" - хранится все что связано с сайтом, с которым ведется работа в текущий момент. Именно этот сайт показывается при обращении к localhost.
Настройки (settings.php, темы и доп.модули, которые нужны только для этого сайта) каждого сайта храним в "sites/siteN.ru".
И самое главное - когда я хочу поработать локально с определенным сайтом - я все из папки "sites/siteN.ru" копирую в "site/default". А в конце работы - копирую обратно.
В том числе и копируется файл settings.php (некий аналог web.config), в котором прописано к какой базе подключаться.

На сервере:
На сервер переношу все как есть и все сразу работает, при условии, что в каждом settings.php я прописал нормальные домены (site1.ru, site2,ru) и папки в которых хранятся сайты называются также "sites/site1.ru", "sites/site2.ru".

Осталось дождаться когда я переделаю локально первый сайт, сяду за второй и возможно встанет вопрос - как запустить процесс первоначальной установки сайта. Достаточно ли для этого будет того, что в "sites/default" - будет новый пустой settings.php.

Подскажите, я правильно понял суть идеи?