Много хора се чудят как могат да направят множество сайтове на Джумла!, които обаче да споделят едни и същи потребителски бази, а може би и други таблици в базата данни (примерно банерите). Настоящето решение, описано по-долу, решава проблема с потребителите, но по-аналогичен начин можете две или повече инсталации на Джумла! да споделят и други таблици от базата данни (това си има и определени проблеми понякога). Тук обаче ще говорим за синхронизация на потребителите, сесиите и правата.
Какво представлява решението:
- Позволява множество сайтове на Джумла! да имат единна потребителска база.
- Позволява потребител, който се е идентифицирал в единия от сайтовете, да бъде идентифициран и във всички останали.
- Може да позволи единно ползване и на други таблици (например: банери), но има и някой ограничения.
Какво не представлява решението:
- Не е мост, не е компонент или добавка. Решението е на ниво база данни.
- Не е удачно да синхронизирате таблици като тези за компонентите, модулите, добавките и подобни - просто има голяма вероятност да счупите нещо.
- Не е удачно да се синхронизират данни, които ползват релативни пътища към файлове.
- НЕ Е УДАЧНО ЗА ВЕЧЕ СЪЩЕСТВУВАЩИ САЙТОВЕ (един съществуващ с един нов е ОК, но свързване на два или повече такива ще е сериозен проблем).
- Един потребител ще има едни и същи права във всички сайтове, тоест ако в единия е супер администратор и в другите ще бъде такъв. Промяната на правата в единия сайт, ще ги променя и във всички останали.
Изисквания:
- MySQL 5
- PHP 5
- Joomla! 1.5
- Сайтовете да ползват един и същ MySQL сървър, не е задължително да е само в една база данни, но е задължително и двата (или повече) сайта да ползват един и същ потребител и парола в MySQL (въпросният трябва да има права и в двете бази данни).
Стъпка по стъпка:
- Инсталирате Джумла! на адрес localhost/site1 с база данни site1
- Инсталирате втора Джумла! на адрес localhost/site2 с база данни site2
(забележка: на реален хостинг, сайтовете могат да бъдат на изцяло различни домейни/поддомейни/папки и т.н., стига базите данни да са на един MySQL сървър и да са достъпни от един потребител, който се ползва и при двете инсталации). - Отваряте configuration.php и на двата сайта, от този на site1 копирате реда var $secret = 'символитук'; на мястото на същия ред в configuration.php на вторият сайт (тоест и в двата файла, secret трябва да има една и съща стойност, респективно ако са повече от два - СЪЩО).
- Отваряте базата данни (чрез phpMyAdmin) на site2 и пускате следните заявки ЕДНА ПО ЕДНА:
DROP TABLE `jos_users`
DROP TABLE `jos_session`
DROP TABLE `jos_stats_agents`
DROP TABLE `jos_core_acl_aro`
DROP TABLE `jos_core_acl_aro_groups`
DROP TABLE `jos_core_acl_aro_map`
DROP TABLE `jos_core_acl_sections`
DROP TABLE `jos_core_acl_groups_aro_map`
След което пускате отново в базата данни на site2 следните заявки, като заместите site1 с името на базата данни, която ползва site1:
CREATE VIEW jos_users AS SELECT * FROM site1.jos_users
CREATE VIEW jos_session AS SELECT * FROM site1.jos_session
CREATE VIEW jos_stats_agents AS SELECT * FROM site1.jos_stats_agents
CREATE VIEW jos_core_acl_aro AS SELECT * FROM site1.jos_core_acl_aro
CREATE VIEW jos_core_acl_aro_groups AS SELECT * FROM site1.jos_core_acl_aro_groups
CREATE VIEW jos_core_acl_aro_map AS SELECT * FROM site1.jos_core_acl_aro_map
CREATE VIEW jos_core_acl_aro_sections AS SELECT * FROM site1.jos_core_acl_aro_sections
CREATE VIEW jos_core_acl_groups_aro_map AS SELECT * FROM site1.jos_core_acl_groups_aro_map
!!!Това е всичко, двата сайта вече ще работят с едни и същи потребители (всеки регистрирал се в единия, ще бъде потребител и в другия), с едни и същи сесии (всеки логнал се в единия, ще бъде логнат и в другия).
Ако искате да направите повече сайтове свързани по този начин, то следва винаги да връзвате новите сайтове само към site1 (master) и да създавате репликации към неговата потребителска база от други сайтове (slaves). Тоест при добавяне на трети сайт, той трябва да бъде към site1, И НИКОГА КЪМ site2.
Вече съществуващи сайтове: Ако искате да свържете два вече съществуващи сайтове - ТОВА РЕШЕНИЕ НЕ Е УДАЧНО ЗА ВАС И ЩЕ СЧУПИ ПОНЕ ЕДИНИЯ. Ако искате да създадете нов сайт, който да ползва базата на вече съществуващ, минете през стъпките, като вече съществуващия е все едно site1.
ПРЕДИ ДА ПРАВИТЕ КАКВОТО И ДА Е СЪС СЪЩЕСТВУВАЩИ САЙТОВЕ, НАПРАВЕТЕ СИ БЕКЪП.
Какво ще стане при обновяване на версията на Джумла!?
Нямате проблеми за обновяване до нови версии на Джумла! 1.5, можете да го правите безпроблемно. За обновяване до 1.6, на този етап няма достатъчно стабилна версия, за да мога да преценя.
Инспирирано от тази тема. А от тук, ударете едно свежо.
От Иво Апостолов