Multisite
Drupalowe problemy z logowaniem
środa, Luty 14th, 2007 | Blog | Brak komentarzy
Fakty: całkiem nowa instalacja (Drupal 5.1), zakładamy konto admina, ustalamy hasło i … i koniec.
Podczas próby logowania wyrzuca nas do formularza logowania bez komunikatu o błędnym loginie lub haśle.
Aktualizacja
źródło: http://drupal.org/node/136397
Należy wyedytować settings.php głównej domeny ustawiając:
ini_set('session.name', 'domenapl');oraz dla subdomen/domen podrzędnych analogicznie w ich settings.php:
ini_set('session.name', 'subdomenadomenapl');Wykonanie niżej opisanych czynności – ustawienia domen dla cookie na pewno nie zaszkodzi.
Szybkie googlanie i użycie szukajki na drupal.org uświadomiły mnie, że to znany problem.
Problem w tym, że znany dla wersji w okolicach 4.6.x oraz dla 5.0 beta 2 – ponoć w już RC 1 było coś tam poprawianie w user.module.
Po kilku dłuższych chwilach udało się odnieść zwycięstwo. Rozwiązanie?
Wykomentować całość w /sites/strona/settings.php:
/**
* We try to set the correct cookie domain. If you are experiencing problems
* try commenting out the code below or specifying the cookie domain by hand.
*/
if (isset($_SERVER['HTTP_HOST'])) {
$domain = '.'. preg_replace('`^www.`', '', $_SERVER['HTTP_HOST']);
// Per RFC 2109, cookie domains must contain at least one dot other than the
// first. For hosts such as 'localhost', we don't set a cookie domain.
if (count(explode('.', $domain)) > 2) {
ini_set('session.cookie_domain', $domain);
}
}
A zamiast tego wstawić na sztywno:
ini_set('session.cookie_domain', 'naszadomena.pl');
Opera, IE6 ruszyły od razu, Firefox 2.x dopiero po restarcie komputera – cache, cookie były wyczyszczone – nie wiem gdzie jeszcze miałaby siedzieć informacja o sesji.
Drupal multisite dla opornych
niedziela, Luty 4th, 2007 | Blog | 1 komentarz
Już kilka razy robiłem podejście do instalacji Drupala, jako multisite. Sama zawartość pliku INSTALL.txt, handbooka do multisite na drupal.org oraz polskiego opisu instalacji na drupal.org.pl nie pomogły. W końcu – chyba za 5 razem powiodło się – bardziej metodą prób i błędów.
Po co w ogóle komu multisite? Dla mnie za taką instalacją przemawiała możliwość współdzielenia użytkowników serwisu i jego subdomen oraz ułatwiona aktualizacja core Drupala i jego modułów.
Teoretycznie można by jeszcze wspomnieć o oszczędności miejsca na koncie, ale sam Drupal, w przeciwieństwie do konkurencyjnych CMSów zajmuje bardzo mało miejsca.
Cały opis będzie bardzo uproszczony, więc w razie bardziej szczegółowych pytań zachęcam do zapoznania się z tymi dwoma powyższymi linkami.
Załóżmy, że nasz serwis będzie znajdował się pod adresem www.domena.pl, a subdomena analogicznie pod subdomena.domena.pl, która oczywiście będzie korzystać z instalacji serwisu bazowego www.domena.pl. Obie instalacje będą znajdować się w tej samej bazie danych oraz serwis z subdomeny będzie korzystał z użytkowników nadrzędnego serwisu.
Całość opisana jest dla Drupala 5.x i wyżej – od wersji 5.0 jest dostępny instalator, dzięki któremu życie drupalowców stało się jeszcze prostsze.
Instalacja multisite dla opornych krok po kroku
- Instalujemy główny serwis www.domena.pl – korzystamy oczywiście z wbudowanego instalatora. Załóżmy, że ustaliliśmy prefix dla bazy danych “wwwdomenapl_”. Instalację, możemy uznać za zakończoną po założeniu konta administratora.
- W katalogu naszej instalacji odnajdziemy podkatalog /sites/. Zakładamy w nim, zgodnie z drupalową nomenklaturą podkatalog subdomena.domena.pl
- Do katalogu subdomena.domena.pl kopiujemy “czysty” plik settings.php, który znajdziemy np w /sites/default/ w paczce .tar.gz z plikami instalacyjnymi.
- W panelu konfiguracyjnym, który udostępnia nam firma hostująca nasze strony, dodajemy subdomenę subdomena.domena.pl i zaznaczamy, że ma wskazywać na ten sam katalog, co domena www.domena.pl. Z tym, że będą to dwa osobne serwisy, Drupal sobie poradzi dzięki odpowiedniemu nazewnictwu katalogów w /sites/.
- Wpisanie w przeglądarce adresu subdomena.domena.pl powinno wywołać drupalowy instalator. Może nie od razu, bo w zależności od hostingu, zmiany dotyczące domen i subdomen mogą trochę potrwać. Wykonujemy instalację, do rozważań załóżmy, że dla naszej subdomeny ustaliliśmy prefix tabel subdomenadomenapl_. Ważne! Instalacja na subdomenie musi dojść do momentu utworzenia konta administratora włącznie! W przeciwnym wypadku współdzielenie użytkowników po zmodyfikowaniu settings.php nie zadziała.
- W tej chwili mamy 2 instalacje, korzystające z tych samych plików, ale jeszcze bez współdzielonych użytkowników. Otwieramy /sites/subdomena.domena.pl/settings.php i modyfikujemy wpisy dotyczące współdzielenia tabel na następujące:
$db_prefix = array(
'default' => 'subdomenadomenapl_',
'users' => 'wwwdomenapl_',
'sessions' => 'wwwdomenapl_',
'role' => 'wwwdomenapl_',
'authmap' => 'wwwdomenapl_',
'sequences' => 'wwwdomenapl_',
);
W takim wypadku wpis $db_prefix = ’subdomenadomenapl_’; jest oczywiście zbędny i należy go usunąć.
I to tyle, od tej chwili możemy się cieszyć dobrodziejstwami instalacji Drupala w trybie multisite.