Проблемы при мультисайтинге 7го друпала

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

Аватар пользователя Tutelarius Tutelarius 12 января 2013 в 14:08

Уважаемый Друпаловцы!
Впервые пришлось обратиться к мультисайтингу и 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 с личной и общей базами (как на примере сверху).

Требуются подсказки знатоков.

Комментарии

Аватар пользователя gorr gorr 12 января 2013 в 16:19

Можно так сделать (под 6-кой делал, думаю под 7-кой также будет работать):
Сделать стандартную установку друпала на один сайт, затем сделать дамп тех таблиц базы, которые расшариваются между несколькими сайтами и сделать отдельную базу shared_db например назвать и залить туда эти таблицы. У первой базы удалить шарящиеся таблицы и снова сдампить ее. Затем этот дамп (уже без шарящихся таблиц) залить в базы для других сайтов системы. Получившуюся структуру баз данных прописать в файлах settings.php находящихся в директориях с названиями типа sites/example.com (заменить на имя домена). Все, должно сработать.

Аватар пользователя Tutelarius Tutelarius 13 января 2013 в 13:38

To gorr
Спасибо, помогло!

По прежнему остался открыт первый вопрос - как при мультисайтинге на разных+общей БД сделать префиксы. Без них я чувствую себя очень неуютно.

Аватар пользователя Maya Maya 13 января 2013 в 14:02

Вот пример моего мультисайтинга :
НАСТРОЙКИ 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"

Аватар пользователя gorr gorr 13 января 2013 в 22:54

"Tutelarius" wrote:
По прежнему остался открыт первый вопрос - как при мультисайтинге на разных+общей БД сделать префиксы. Без них я чувствую себя очень неуютно.

Можно перед тем, как заливать дамп в базу для сайта системы отредактировать его в текстовом редакторе, добавив префиксы к таблицам. Потом продублировать префикс в settings.php файле.

Аватар пользователя Tutelarius Tutelarius 14 января 2013 в 14:47

To Maya
Спасибо! Мне хватило информации в примере для того чтобы частично уменьшить своё невежество с Друпалом и понять, что префиксы прописываются после точки, выделяющей БД.

"gorr" wrote:
Можно перед тем, как заливать дамп в базу для сайта системы отредактировать его в текстовом редакторе, добавив префиксы к таблицам

Сделал проще. Прописал в sittings.php "ИмяБД.префикс_", а потом эти префиксы присоединил через phpMyAdmin - это быстрее, чем руками.

Спасибо за помощь! Всё настроил и работает. Хотя первое время после добавки префикса были проблемы со скоростью работы связки.