Вы здесь

Мультисайтинг в Drupal

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

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

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

На самом деле есть явные преимущества, а вот недостатков - не замечено. Со временем у вас будет находится несколько сайтов одновременно в разработке. Не обязательно все в активной стадии, но не переставлять же сайт ради 5 минут правок в месяц?

Но это все лирика. Давайте рассмотрим установку мультисайтинга Drupal на примере.

Предполагается что у вас уже есть готовое рабочее окружение. Настройку рабочего окружения для Drupal под Windows вы сможете найти тут.

Для удобства архив с друпалом распаковываем в папку multisite.local.

В папке sites создаете папку с именем домена. Например, example.com (общепринятый домен для тестовых описаний). Создаем там директории:

  • files
  • modules
  • themes

Копируем туда default.settings.php.

Копируем example.sites.php и переименовываем его в sites.php (example.sites.php и sites.php должны лежать в одной директории multisite.local/sites/). В файле sites.php прописываем строки:

$sites['example.com'] = 'example.com';
$sites['example.com.local'] = 'example.com';
  • 1 строка - для рабочей версии сайта, когда зальется на хост;
  • 2 строка - для локальной.

Слева прописывается адрес сайта, а справа - папка в которую надо за этим сайтом лезть. При этом указывает имя папки, которая лежит в multisite.local/sites/, но не путь к ней и уже тем более не multisite.local.

Если стоит OpenServer, то в настройках для домена указываем для имени домена example.com.local папку multisite.local.

Настройки OpenServer для мультисайта Drupal

Иначе необходимо вручную внести корректировку в настройку виртуального хоста, чтобы запись имела приблизительно следующий вид:

<VirtualHost *:80>
    DocumentRoot "D:/web/multisite.local"
    ServerName "example.com.local"
    ServerAlias "example.com.local" "multisite.local"
</VirtualHost>

Если в записи файла sites.php прописать одни синонимы (левая часть записи), а сервер настроить на другие (файл виртуальных хостов для apache или вкладка доменов в OpenServer), то работать ничего не будет. Поэтому важно чтобы сервер был настроен, что по ссылке example.com.local ссылается на папку multisite.local. А файлы подсайта лежали в папке multisite.local/sites/example.com. Понятное дело, что example.com везде надо заменить на адрес сайта своего проекта.

Если в дальнейшем добавляете новый мультисайт, то прописываете новый алиас в кавычках через пробел, не создавая отдельного виртуального хоста.

  • Все контрибьюторские модули складываем в sites/all/modules/contrib, библиотеки в sites/all/libraries.
  • Базовые темы и темы админки складываем в sites/example.com/themes.
  • Все кастомные модули относящиеся к нашему домену размещаем в sites/example.com/modules.

Вот и все, подготовка сайта выполнена. Теперь, если открыть в браузере наш новый домен example.com.local, то (если все сделали правильно) появится форма с предложением установить друпал.

Уровень: 
Версия: 

Добавить комментарий