D6.x multisite install egy DB-ből autentikációval /és utólagos beállítása/

makgab képe

Hi!

Nálam a leírások alapján a multisite install nem működik.
"Drupal ajánlás" szerint:
* Normál drupal install 2 site-ra, majd
* settings.php editálás:
$db_prefix = array(
'default' => 'multi_',
'users' => 'shared_',
'sessions' => 'shared_',
'role' => 'shared_',
'authmap' => 'shared_',
);
* Végén a install.php futtatása.

Ez szerintem semmi mást nem csinál, mint shared_ előtaggal látja el a táblaneveket (pl. shared_users, shared_role). Ettől a drupal nem fogja tudni, hogy a 2. site-nak pl. a default site DB-jéből kellene autentikálni. Én a 2. site-nak ezt állítottam be utólag:
$db_prefix = array(
'default' => '',
'users' => 'drupal.',
'sessions' => 'drupal.',
'role' => 'drupal.',
'authmap' => 'drupal.',
);

Azaz a users-t a drupal.users táblából vette (drupal DB users táblája). Nálam így működik. :)
Ez jó megoldás?

Ill. ezek nem kellenek?
'users_role' => 'drupal.',
'permission' => 'drupal.',

G.

Drupal verzió: 
Tgr képe

Ha a másik site külön adatbázist használ, akkor drupal.shared_ a prefix. Vagy az egyikben nem adsz prefixet, a másikban meg drupal. -ot. Vagy egy adatbázist használsz, két különböző default prefixet adsz nekik, a közöseknek meg shared_ -et. Stb. A lényeg, hogy a prefix + adatbázisnév mindkét esetben ugyanoda mutasson (figyelembevéve, hogy esetleg nem ugyanaz az alapértelmezett adatbázis).

Szerintem működik külön users_role adatbázisokkal is, ha ugyanazokat a felhasználókat és szerepeket akarod a két oldalon, de nem feltétlenül ugyanazok a felhasználók kapják a privilégiumokat a két oldalon (más kérdés, hogy ezt akarod-e). permission-nél utána kellene nézni, pontosan mikor frissíti a hook alapján; el tudom képzelni, hogy ha nem ugyanazokat a modulokat használod a két oldalon, akkor összeakadhat valahogy.

0
0
makgab képe

Ha ezek vannak beállítva, akkor csak az autentikáció megy a drupal DB-ből, a többit a saját DB-ből:

'default' => '',
'users' => 'drupal.',
'sessions' => 'drupal.',
'role' => 'drupal.',
'authmap' => 'drupal.',

A lényeg, hogy a 2 site 2 külön adatbázis, de az azonosítás közös, a drupal nevű (default, azaz fősite) DB-ből történne. Akkor jó amit irtam/gondoltam. :)
Kösz!

G.

0
0
Tgr képe

Nem jó, amit írtál, mert pl.:
[drupal.] + shared_ + users = drupal.shared_users
[masikdrupal.] + drupal. + users = drupal.users
nem ugyanarra a táblára hivatkoznak.

A közös autentikációhoz csak a users és a sessions kell, hogy közös legyen. (Az authmapban nem vagyok biztos, az ránézésre csak akkor kell, ha valami spéci autentikációs modult használsz.) A role csak akkor kell, ha azt akarod, hogy a szerepek (csoportok) is ugyanazok legyenek; a permissions akkor, ha azt akarod, hogy az egyes szerepek jogai is megegyezzenek a két oldalon; a users_role akkor, ha azt akarod, hogy aki az egyik oldalon teszem azt moderátor, az a másikon is az legyen.

0
0
makgab képe

Én ezt irtam és a drupal "default.settings.php"-je is ezt írja, gondolom nem véletlen.
Az én esetemben a default site:
$db_url['default'] = mysql://user:pass@localhost/drupal;
$db_prefix = '';

A multisite installkor:
$db_url['default'] = mysql://user:pass@host/multi1;
$db_prefix = '';
majd telepítés után a multisite:
$db_prefix = array(
'default' => '',
'users' => 'drupal.',
'sessions' => 'drupal.',
'role' => 'drupal.',
'authmap' => 'drupal.',
);
A 2. esetben (multisite) csak a 4db tábla hivatkozik a "drupal."-ra.
Nálam éles rendszerben is működik, tökéletesen látszódnak a default site-ban felvitt userek és be is lehet lépni velük. :)
Finomítani kell esetleg (permission, users_role) - ha kell.

G.

0
0
pp képe

Miért nem valami központi azonosítást használsz? Mit fogsz csinálni akkor, ha kijön a hetes? Megváltozik a táblaszerkezet akkor hogyan fogsz eljárni? Fel vagy készülve arra, hogy akkor neked külön erre a rendszerre kell írnod majd egy egyedi update szkriptet? Minden verzió, még alverzió frissítésnél is sokkal óvatosabban kell eljárnod, mert lehet, hogy a megosztott adattáblákat fogja érinteni a változás. Fel vagy készülve mindenre? Biztos vagy benne, hogy csak ezek a táblák érintettek?

Szóval lehet, hogy most "műxik", de hosszú távon nem lesz karbantartható ez biztos.

pp

0
0
makgab képe

Igen, egy központi azonosítás lenne a legjobb, pl. ldap.
Egyelőre a tárhelyen nincs ilyen lehetőség.

G.

0
0
zila képe

Van openID is a drupalban. Nem kell egyből az ágyút előszedni...

0
0

--
IE doesn't support internet

makgab képe

pontosan mi is az openid?

G.

0
0
Tgr képe

Bocs, nem olvastam figyelmesen. Ha így csinálod, akkor tényleg működik.

0
0