Мультисайтинг – это возможность использовать одну сборку Drupal для нескольких сайтов. Например, нужно сделать 5 похожих сайтов на Drupal. Традиционный способ – это иметь 5 экземпляров движка и 5 баз данных. Конечно, иметь несколько копий одних и тех же файлов не рационально. В этом случае можно использовать 1 экземпляр движка общий на все сайты. Это сэкономит место на жестком диске сервера, избавит от необходимости обновлять одни и те же модули на всех пяти сайтах и повысит удобство работы с сайтами в целом.
Варианты мультисайтинга могут быть разными:
- Мультисайтинг с общим движком. Много независимых сайтов используют один движок. Drupal будет работать в режиме "один движок, много сайтов".
- Мультисайтинг с общими таблицами. Много сайтов частично используют одинаковые таблицы в базе, например, данные о пользователях.
- Мультисайтинг с одной базой данных для разных сайтов. Таблицы различаются префиксами.
Для настройки мультисайтинга надо правильно настроить файл settings.php .
Также, если на мультисайтинге работают сайты с доменом третьего уровня (домены первого и второго уровня совпадают, а третий различен), например store.site.ru и blog.site.ru и т.д. – то указав этим сайтам одинаковый домен для кук (.site.ru) и у сайтов будут общие таблицы пользователей – то при авторизации на одном сайте - пользователь будет авторизован и на другом.
Рассмотрим настройку всех способов мультисайтинга.
№1. Одно ядро, 2 разные базы.
Имеем сайты home.ru и game.ru
Скопируем файлы Drupal в папку сайта. Я назвал её m_s_1.
В папке sites создадим папки home.ru и game.ru
Сервер должен быть настроен так, чтобы оба адреса вели на корневую папку сайта, не на папки в sites.
Далее создадим 2 базы-game и home.
Запускаем в браузере установку первого сайта game.ru/install.php .Устанавливаем в базу game.
Префиксы таблиц не используем.
Готово, сайт установлен.
Теперь установим сайт home.ru в базу home.
Сайт успешно установился. Как видите – ядро Drupal используется одно. Причём каждый сайт имеет свои настройки и БД. Все модули и темы в папке sites/all будут доступны обоим сайтам. А в папках sites/home.ru и sites/game.ru только соответствующим сайтам.
№2. Сайты с общими таблицами.
Теперь на основе двух созданных сайтов сделаем сайты с общими пользователями. В таком случае аккаунт, созданный на одном из сайтов – будет работать на всех сайтах в мультисайтинге. Для этого нужно объединить таблицы users, sessions, role и authmap
В таком случае 1 сайт будет основным (в его БД будут таблицы пользователей) и все остальные сайты будут тянуться к БД главного сайта за пользователями.
Пусть сайт home.ru будет основным.
Отредактируем файл sites/game.ru/settings.php
В элементе prefix мы указали, из какой БД брать таблицы users, sessions, role и authmap. Для этого после home стоит точка.
№3. Несколько сайтов на одной БД.
И последний способ – использование одной БД. Этот способ использовать не рекомендуется из-за разрастания БД. В этом случае также создаются папки sites/home.ru и sites/game.ru ,только при установке сайтов указывается одна БД, но разные префиксы.
Этот случай стоит использовать, если, например хостер не позволяет создать ещё одну БД.