мультисайтинг

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

Аватар пользователя antohoho antohoho 27 мая 2010 в 22:58

Вопрос вот какои
хочу сделать мультисайтинг.. пока что на 2 саита..
сеичас есть уже один тут
sites/all/modules
sites/all/themes
sites/default/settings.php
как добавить другои ? не понятно с доменом.. в доке написано что друпал находит по домену settings.php.. а если у меня локально домен product.my.inner а в миру будет product.word.com.. ??
я сеичас хочу новыи саит сделать
sites/product/modules
sites/product/themes
sites/product/settings.php
как правильно сделать мультисайтинг?? что бы одна папка была и локально и на сервере???

Комментарии

Аватар пользователя Alex_R Alex_R 27 мая 2010 в 23:09

Если правильно понял вропрос, то одна папка локально и на сервере невозможна.
Правильно делать так, для действующего сайта:
sites/all/modules (общие модули)
sites/site1/modules
sites/site1/themes
sites/site1/settings.php

для нового:
sites/all/modules (общие модули)
sites/site2/modules
sites/site2/themes
sites/site2/settings.php

Где site1 и site2 названия ваших доменов. Вообще ИМХО лучше обходиться без папок с модулями для каждого сайта, а использовать только общую для всех модулей, а то может возникнуть путаница.
Если я не прав, то профи поправят.

Аватар пользователя antohoho antohoho 27 мая 2010 в 23:55

да я собрался общие модули которые сейчас для одного сайта оставить в all а тему и уникальные модули для site1 в site1 вынести..
а как же быть с setting.php как мне для domain product1.my.inner подключать тот что в site1 a для product2.my.inner тот что в site2 если на production servere domain name будут product1.word.com и product2.word.com??

Аватар пользователя Alex_R Alex_R 28 мая 2010 в 0:25

antohoho wrote:
да я собрался общие модули которые сейчас для одного сайта оставить в all а тему и уникальные модули для site1 в site1 вынести..

ИМХО правильнее все модули в одном месте держать, а на каждом сайте включать только нужные, но в этом могу быть и не прав.
antohoho wrote:

а как же быть с setting.php как мне для domain product1.my.inner подключать тот что в site1 a для product2.my.inner тот что в site2 если на production servere domain name будут product1.word.com и product2.word.com??

Честно не понял вопроса. Sad

Аватар пользователя antohoho antohoho 28 мая 2010 в 0:54

попробую рассказать.. Smile
есть у меня локальная версия (2-ух саитов ).. ну у меня на машине.. домен у меня например такои product1.local.inner and product2.local.inner..

что бы для сайта product1.local.inner подхватывалсйя свои setting.php я делаю так

sites/all/modules
sites/product1.local.inner/themes
sites/product1.local.inner/setting.php (тут своя БД)

что бы для сайта product2.local.inner подхватывалсйя свои setting.php я просто добавляю папки

sites/product2.local.inner/themes
sites/product2.local.inner/setting.php (тут своя БД)

я почитал как друпал находит нужныи сеттинг.пхп исходя из домена.. пока что всё верно?

но вопрос вот в чём.. на сервере где потом будут лежать ети саиты домены то будут 2-ие.. например produuct1.word.com and produuct2.word.com.. только 3-и уровень будет совпадать..я уже настроил всё на локальные домены
как же тогда будет друпал работать? как наидёт нужныи сеттинг.пхп??

вот как то так Smile

Аватар пользователя fed05@drupal.org fed05@drupal.org 28 мая 2010 в 1:45

Тоже в начале долго думал как лучше замутить. Пришёл к выводу что симлинки - самое удобное.

Я делаю так: локально создаю sites/product/settings.php и ставлю сайт, а на хостинге создаю симлинк sites/product.word.com на sites/product. Тогда по http://product/ открывается локальный сайт, по http://product.word.com/ - серверный.

Можно делать наоборот: создавать сайт на хостинге в sites/product.word.com, а на локальном компе ставить симлинк sites/product на sites/product.word.com.

Желательно в admin/settings/file-system прописывать путь к файлам на реальную директорию (в моём случае sites/product/files).

Аватар пользователя antohoho antohoho 28 мая 2010 в 11:49

Спасибо большое.. я тоже думал в сторону сим линков.. интересно а в друпале решат как то ету проблему в дальнейшем.

у меня ещё возникли проблемы с мультисаитингом.. как поднять вторую базу? просто проинстолировать еше раз друпал? + к етому мне надо шарить табличку users..

сеичас таблички без префикса.. как правильно организовать поднятие 2-ой бд что бы были обшие таблицы с 1-ой?

Аватар пользователя fed05@drupal.org fed05@drupal.org 28 мая 2010 в 13:29

То что таблицы первого сайта без префикса - это не страшно, просто немного неудобно.

У меня таблицы всех сайтов находятся в одной базе, но не думаю что это правильно. Хотя, зависит от количества сайтов.

Пример для создания второго сайта на локальном компе (пишу по памяти, позаботьтесь о бэкапах):

1. Настройте веб сервер или hosts файл так чтобы http://product/ указывал на основной сайт (локальный).

2. Создайте папку sites/product.

3. В ней файл settings.php (нужно сделать его из default.settings.php).

4. Зайдите на http://product/ и устанавливайте друпал в ту же базу что и первый сайт с префиксом таблиц (например _product__, первый подчерк для того чтобы новые таблицы визуально отсортировывались отдельно от старых, последних два - чтоб phpMyAdmin-подобные тулзы группировали эти таблицы).

5. В файле sites/product/settings.php найдите строчку
$db_prefix = '_product__';
и вместо неё вставте:

$db_prefix = array(
  'default'   => '_product__',
  'users'     => '',
  'sessions'  => '',
  'role'      => '',
  'authmap'   => '',
);

Таблицы _product__users, _product__sessions, _product__role, _product__authmap можно удалить.

Вроде всё. Останется только перенести новые таблицы и папку sites/product на хостинг и создать симлинк.
Вообщето умные дядьки не рекомендуют объединять таблицы без крайней необходимости. Проблемы скорее всего будут.

Аватар пользователя antohoho antohoho 28 мая 2010 в 13:53

а можно например вдруг выяснится что понадобится объединить ещё какие то таблицы.. как ето сделать?
корректно ли будет сделать ALTER TABLE `_product__test` RENAME TO `test`; (вернее просто снести Smile )

а в сеттинг.пхп дописать:

был такои

<?php$db_prefix = array(
  'default'   => '_product__',
  'users'     => '',
  'sessions'  => '',
  'role'      => '',
  'authmap'   => '',
);?>

а станет

<?php$db_prefix = array(
  'default'   => '_product__',
  'users'     => '',
  'sessions'  => '',
  'role'      => '',
  'authmap'   => '',
  'test' => '',
);
?>

ну чтобы базу не сносить.. и не инсталить заново

Аватар пользователя fed05@drupal.org fed05@drupal.org 28 мая 2010 в 21:58

"antohoho" wrote:
корректно ли будет сделать ALTER TABLE `_product__test` RENAME TO `test`; (вернее просто снести Smile )

Всё верно, её можно будет снести, друпал к ней обращаться не будет.

С Domain Access не знаком. Возможно с ним попроще будет.
Обычно, прежде чем смотреть модуль, я смотрю его статистику использования, чем плавнее кривая - тем лучше модуль :), у этого кривая в последнее время какая-то сильно кривая :). Но это всё имха, попробуйте поставить, покопаться.

Аватар пользователя antohoho antohoho 30 мая 2010 в 18:48

у меня ещё вопросик... если для user я использую content_type_profile? какие таблицы нужно шарить? просто это уже как нода выходит.. что делать? шарить node, content_type_profile (и ещё какие нужно) таблицы или не обязательно?

Аватар пользователя antohoho antohoho 31 мая 2010 в 13:17

а вот по блокам ещё.. у меня много своих блоков на первом сайте... около 8-10.. все они нужны и на втором.. но возможно и не все.. или надо будет один в 2-ое место перенести.. как быть в таком случае? шарить только table `boxes` что бы просто они были доступны и размещать как угодно? или есть 2-ой способ? как то import - export ??

Аватар пользователя antohoho antohoho 13 июля 2010 в 14:03

есть новая проблемка...
сделал сим линки... с product.name1.com (local site) на product.com (production site)

проблема вот в чём...

у меня всё ок но я создал ещё для одного человека local site product.name2.com и теперь есть конфликты с таблицкой system
там если я чищу кэш то путь к теме ставится sites/product.name1.com/themes и на домене product.name2.com тема не работает..

product.name2.com чистит кэш => system прописывается sites/product.name2.com/themes и у меня тема не работает...

как можно решить проблему??

Аватар пользователя antohoho antohoho 13 июля 2010 в 14:48

почему при загрузки 2-ого домена не меняются пути к теме... почему только после кеша??
может как то принудитеольно это сделать?

Аватар пользователя antohoho antohoho 14 июля 2010 в 13:31

"RxB" wrote:
Любую переменную из таблицы system можно переопределить из settings.php

вотетого я не знал... хорошее решение..
а как это правильно сделать?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 15 июля 2010 в 19:14

Неужто комментарии в settings.php не помогают?

# $conf = array(
#   'site_name' => 'My Drupal site',
#   'theme_default' => 'minnelli',
#   'anonymous' => 'Visitor',
/**
 * A custom theme can be set for the off-line page. This applies when the site
 * is explicitly set to off-line mode through the administration page or when
 * the database is inactive due to an error. It can be set through the
 * 'maintenance_theme' key. The template file should also be copied into the
 * theme. It is located inside 'modules/system/maintenance-page.tpl.php'.
 * Note: This setting does not apply to installation and update pages.
 */

Откуда вы взяли filename я вообще не знаю, не помню такой переменной