Мультисайтинг в 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.
Иначе необходимо вручную внести корректировку в настройку виртуального хоста, чтобы запись имела приблизительно следующий вид:
<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, то (если все сделали правильно) появится форма с предложением установить друпал.