Мультисайтинг в Drupal
Первоначально для этих целей планировалось использовать модуль Domain Access (http://drupal.org/project/domain) но все оказалось не так просто.
По теме мультисатинга удалось нарыть две неплохие статьи - http://drupal.org/node/291373#comment-1420746
и
http://drupalcookbook.ru/recept/ustanovka-multisajtinga-s-obshhimi-tablicami
вобщем то там все достаточно подробно описано, едиственно несколько замечаний:
Я делал так: Первый сайт у меня уже был установлен (без префикса таблиц) - установка второго была выполнена с префиксом (ну например "db2_"). После этого были опеределены таблицы которые будут общими и в конфиг была добавлена следующие строки (после строки подключения к базе):
'default' => 'db2_',
'authmap' => '',
'profile_fields' => '',
'profile_values' => '',
'role' => '',
'sessions' => '',
'users' => ''
);
Соотвественно вы можете расширить нужными вам таблицами.
Вот это и отличает пенсионеров форума от новичков )) Они прежде ищут, и хорошо ищут )
понятно как сделать общими таблицы - а как быть с файлами
если на одном сервере, то мож symlink'и сканают (на фолдеры ессна)?
PS: а если не один сервер, то можно примаунтить шары по ssh :))) но это изврат :rolleyes: это я так... рассуждаю ;)
если задача встала использовать то же самое.
во! про симлинки я и забыл :) попробую. сенкс
Как раз данное решение и есть самое удобное. В этом случае дерево модулей остается в актуальном состоянии для всех сайтов входящих в портал. Ну а если необходимо что бы модуль единым для всех (либо некоторых сайтов) - то тогда соотвественно необходимо и таблицы сделать общими как показано выше.
И необходимо выделить под пхп изрядное количество памяти - я например установил параметр 128 метров - иначе при большом количестве модулей вы постоянно будет еполучать сообщение о надостаточном выделении памяти.
Так как в процессе поиска внятной информации я не нашел - то соотвественно выкладываю сюда, если вдруг кто столкнется с подобной проблемой.
Суть проблемы в следующем - был установлен Domain Access, в последствии решил его убрать. Естественно выключив в модулях, а затем удалив.
Вот тут собственно и началось. Не знаю что было следствием - может ньюансы установки, либо ошибки в самом модуле, либо я гдето допустил ошибку - сказать сложно. При работе на сайте начало появлятся сообщение:
# Права доступа к содержанию следует перестроить....
что в принципе нормально. Так вобщем то и должно быть.
Но при попытке собственно это сделать - во первых появлялся варнинг:
Warning: Table 'xxxxxx.domain_editor' doesn't exist query: SELECT domain_id FROM domain_editor WHERE uid = 1
...
где xxxxxx - название базы с которой работает сайт и сообщение:
# Domain access failed to load during phase: -1. Please check your settings.php file and site configuration.
Надо сказать что таблица в базе естественно была, и при выполнении запроса он возвращал то что должен. Второе сообщение обычно появляется при не правильной установке DA - точнее в случае если не выполнены все шаги - но в данном случае модуль то работал до этого (но на всякий случай проверил и это). Поэтому я грешу на ошибку в самом модуле. Кроме того, если модуль включить - он вполне нормально работает.
после нажатия на ссылку "перестроить права" - система гордо заявляла - типа "функция проверки вернула не правильное значение - поробуйте еще раз либо обратитесь к администратору". Сказать что я был в акуе от всего этого - это не сказать ничего. Вобщем так как ни на буржуинских ни на наших сайтах я толкового решения не нашел - алгоритм убирания данной фигни следующий:
1. Закрыть все вкладки сайта кроме одной. По крайней мере в ФФ это делать обязательно, часть данных начинает тянуться из кеша и эти "зомби" портят всю картину.
2. Выключить все сторонние модули - оставить только те, которые идут в составе ядра (сайт естественно превести в режим обслуживания).
3. Вернуть встроенную тему оформления.
4. Я очистил так же все таблицы сессий и кеша в базе - не знаю надо ли это было делать, но по крайней мере это не повредило.
5. Выполнить престройку прав.
6. Включить нужные модули и темы.
7. Вернуть сайт в состояние продакшин.
Вот такие пирожки...