Мультисайтинг - пошаговая инструкция для чайника

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

Аватар пользователя codexomega codexomega 22 августа 2008 в 6:15

Здравствуйте.
У меня небольшая просьба:

Выложите пожалуйста пошаговую инструкцию для полных чайников как настроить мультисайтинг в Друпале.
Задача такая:

Надо создать 3 сайта, на одном движке(общие модули) и разными базами данных.

- site1
- site2
- site3

1) Я установил и настроил связку Apache/PHP/MySQL
2) Скачал и распаковал Drupal (C:\Server\Web\Drupal)
3) Создал 3 базы данных: Site1_DB, Site2_DB, Site3_DB
4) Создал папки: site1, site2, site3 в C:\Server\Web\Drupal\
5) В каждой из этих папок под сайты, содал папки: files, modules, themes, tmp
6) Скопировал файл Settings.php в корень каждой папки под сайт, изменив при этом строку для подключения к БД

Всё, на этом я застрял. Не знаю что делать дальше.
Информация везде разная, кто говорит про виртуальные хосты, другие про линки на юниксе.

Пожалуйста помогите дополнить этапы, начиная с 7-го.
Заранее спасибо.

Комментарии

Аватар пользователя Geldora Geldora 22 августа 2008 в 14:17

тут уже есть полная инструкция, просто поиск не работает :((( Поищите через гугл, или через яндекс фразу Мультисайтинг на друпал

Насколько я могу судить, вы ошибаетесь в шаге 4. site1, 2 и тп. нужно создавать в папке site общей установки.

И плюс, у меня была сипанель, на ней все эти линки с хостами не создаются (или создаются, но сложно, я так и не разобралась). Обратилась к хостеру, но мне подсказал интересный путь - через сипанель создать подддомен, но направить его не на отдельную папку, а на общую html_files. После этого у меня все заработало!

Аватар пользователя SiR SiR 23 августа 2008 в 22:15

Все сделано правильно
Остается сделать последний шаг - правка файла setting.php:

1. Выбираем базовую установку - например Site1_DB, и ничего здесь не меняем
2. В остальных файлах setting.php делаем примерно следующую правку

$db_url = 'mysql://root@localhost/Site2_DB';
$db_prefix = '';

заменяем на

$db_url = 'mysql://root@localhost/Site2_DB'; //подчиненный сайт
$db_prefix = array(
    'default' => 'Site2_DB.',  //подчиненный сайт
    'users' => 'Site1_DB.', //дальше ссылки на базовый сайт
    'sessions' => 'Site1_DB.',
    'authmap' => 'Site1_DB.',
    'sequences' => 'Site1_DB.',
    'profile_fields' => 'Site1_DB.',
    'profile_values' => 'Site1_DB.',
//  'role' => 'Site1_DB.',
//  'users_roles' => 'Site1_DB.'
);

Проще говоря, мы указали drupal, что надо брать определенные таблицы из другой базы данных. И все Smile

Кроме того надо подправить строчку

$cookie_domain = 'example.com';

в зависимости от url основного сайта.

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

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

Аватар пользователя codexomega codexomega 24 августа 2008 в 6:41

Спасибо.
Geldora: Действительно ошибка в пункте 4.
Это я при написании сообщения не заметил;
Сайты должны лежать в пaпке /sites
C:\Server\Web\Drupal\sites
SiR:
Общие пользователи для нескольких сайтов, это тоже очень удобно.
Нужно будет изменить настройки, следуя вашему совету.

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

**************************************************************
1)
Настроить файл: C:\WINDOWS\system32\drivers\etc\hosts

127.0.0.1 localhost
127.0.0.1 site1.com
127.0.0.1 site2.com
127.0.0.1 test.site2.com

С учетом того что у меня имеются сайты: site1.com, site2.com, test.site2.com

2)
Убрать комментарий со строки:
Include conf/extra/httpd-vhosts.conf

в файле C:\Server\Apache\conf\httpd.conf

4)
Добавить строки:

<VirtualHost *:80>
    DocumentRoot "C:\Server\Web\Drupal"
    ServerName site1.com
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "C:\Server\Web\Drupal"
    ServerName site2.com
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "C:\Server\Web\Drupal"
    ServerName test.site2.com
</VirtualHost>

в файл C:\Server\Apache\conf\extra\httpd-vhosts.conf

5) Запустить установку сайтов:
http://site1.com/install.php

**************************************************************

После всего этого, у меня установились сайты.
Но возникла проблема с доступом к содержимому сайтов, к папкам которые лежат в папке самого сайта.
Например вот этот запрос:
http://site1.com/files/

Выдает ошибку 500(Internal Server Error)

Что делать?

Еще раз спасибо.

Аватар пользователя codexomega codexomega 24 августа 2008 в 19:13

Есть подозрения, что дело в файле .htacess, в корневой папке Drupal: C:\Server\Web\Drupal
Я закоментировал следующую строку: # RewriteBase /drupal
Ошибка 500 исчезла. Я поставил в папку C:\Server\Web\Drupal\sites\site1.com\files файл test.txt
При наборе url: http://site1.com/files/test.txt, выдает: Page not found
Ничего не понимаю...