Уважаемый Друпаловцы!
Впервые пришлось обратиться к мультисайтингу и 7му друпалу, поэтому такая смесь из новшеств породила масса вопросов, с которыми не смог разобраться.
Нужна общая база пользователей, а
Во-первых: как присвоить префиксы таблицам, если они общие.
<?php
$databases = array (
'default' => array (
'default' => array (
'database' => 'baseofsite1',
'username' => 'suser',
'password' => '123456',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => array(
"default" => "baseofsite1.",
"users" => "shared.",
"sessions" => "shared.",
// И так далее
?>
То есть prefix заняты пересылками на общую для сайтов базу и задать через них префиксы не выйдет.
Попытка задать вручную и прописать добром не кончилось, разумеется.
Во-вторых, при установке вторых, третьих и прочих сайтов, возник непонятный момент - после выбора языка установщик начинает жаловаться на то, что та или иная таблица уже есть в ЕГО базе, которая пустая. Заходишь в базу - и вправду накидал таблиц. Дропаешь всё, повторяешь - тот же результат. То есть, друпал создаёт таблицы и сам же жалуется на их наличие, если один из сайтов уже существует, хоть и связан с совсем другой базой.
Под каждый сайт создана папка в sites, у каждого прописаны settings.php с личной и общей базами (как на примере сверху).
Требуются подсказки знатоков.
Комментарии
Можно так сделать (под 6-кой делал, думаю под 7-кой также будет работать):
Сделать стандартную установку друпала на один сайт, затем сделать дамп тех таблиц базы, которые расшариваются между несколькими сайтами и сделать отдельную базу shared_db например назвать и залить туда эти таблицы. У первой базы удалить шарящиеся таблицы и снова сдампить ее. Затем этот дамп (уже без шарящихся таблиц) залить в базы для других сайтов системы. Получившуюся структуру баз данных прописать в файлах settings.php находящихся в директориях с названиями типа sites/example.com (заменить на имя домена). Все, должно сработать.
To gorr
Спасибо, помогло!
По прежнему остался открыт первый вопрос - как при мультисайтинге на разных+общей БД сделать префиксы. Без них я чувствую себя очень неуютно.
Вот пример моего мультисайтинга :
НАСТРОЙКИ DEFAULT
<?php$db_prefix = 'префикс1_';
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'база1',
'username' => 'рут',
'password' => 'пароль',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => 'префикс1_',
),
),
);?>
НАСТРОЙКИ ПОДДОМЕН.ДОМЕН
<?php
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'база2',
'username' => 'root',
'password' => 'пароль',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => array(
"default" => "префикс2_",
"users" => "база1.префикс1_",
"sessions" => "база1.префикс1_",
"authmap" => "база1.префикс1_",
"profile_fields" => "база1.префикс1_",
"profile_values" => "база1.префикс1_",
),
),
),
);?>
В итоге общие таблицы
"users"
"sessions"
"authmap"
"profile_fields"
"profile_values"
Можно перед тем, как заливать дамп в базу для сайта системы отредактировать его в текстовом редакторе, добавив префиксы к таблицам. Потом продублировать префикс в settings.php файле.
To Maya
Спасибо! Мне хватило информации в примере для того чтобы частично уменьшить своё невежество с Друпалом и понять, что префиксы прописываются после точки, выделяющей БД.
Сделал проще. Прописал в sittings.php "ИмяБД.префикс_", а потом эти префиксы присоединил через phpMyAdmin - это быстрее, чем руками.
Спасибо за помощь! Всё настроил и работает. Хотя первое время после добавки префикса были проблемы со скоростью работы связки.