Drupal multisite - co musisz wiedzieć o prowadzeniu wielu stron na Drupalu?
Drupal to jedno z lepszych rozwiązań dla biznesu. Jak sprawdzi się w przypadku większych firm, które muszą zarządzać jednocześnie licznymi, rozbudowanymi stronami? Odpowiedzią jest Drupal multisite. W tym artykule dowiesz się, jakie jest jego zastosowanie. Przygotowaliśmy również coś specjalnego dla programistów!
Drupal multisite – co to jest?
Drupal multisite – co to jest?
W największym skrócie Drupal multisite (określany także jako multi-instalacja Drupala) to liczne strony połączone w jednej instalacji Drupala. Każda z nich znajduje się w innym folderze katalogu systemu platformy i ma przyporządkowane oddzielne pliki settings.php oraz bazy danych. Oczywiście witryny różnią się adresami internetowymi i mogą mieć inną zawartość – wszystko wedle Twoich potrzeb.
W przypadku Drupal multisite strony dzielą ze sobą:
- rdzeń,
- dostępne moduły,
- dostępne motywy,
- bazowy kod.
Jednocześnie strony nie mają tych samych:
- domen,
- adresów URL,
- baz danych,
- włączonych modułów,
- włączonych motywów,
- konfiguracji,
- profili użytkowników,
- contentu,
- plików.
Dzięki takiemu układowi można stworzyć zbiór stron, które są wygodnie tworzone, zarządzane, wdrażane i aktualizowane z jednego miejsca, a jednocześnie różnią się między sobą zawartością i wyglądem.
Korzyści z zastosowania Drupal multisite
Korzyści z zastosowania Drupal multisite
Podstawowym powodem, dla którego warto zastosować to rozwiązanie, jest oszczędność czasu w przypadku zarządzania więcej niż jedną witryną, które korzystają z tej samej wersji rdzenia Drupala. Za każdym razem, gdy wydawana jest nowa aktualizacja Drupala, wystarczy przeprowadzić ją na jednej bazie kodu, zamiast robić to dla każdej witryny z osobna.
Korzyści z takiej instalacji są widoczne nie tylko na etapie zarządzania stronami, ale także ich wstępnego tworzenia. W przypadku Drupal multisite wystarczy bowiem zaprojektować główny, podstawowy motyw. Następnie mechanizm dziedziczenia motywu pozwoli przekazać ten fundament pod kolejne projekty, aby móc szybko przejść do pracy nad unikatowymi funkcjami.
Multi-instalacja Drupala to także korzyści długoterminowe. Pozwala zredukować i spłacić w przyszłości dług technologiczny, który pojawia się, gdy firmy idą na kompromisy, aby zrealizować założone plany. Takie decyzje są w biznesie często nieuniknione. Problem pojawia się, gdy dług technologiczny przybiera zbyt duże rozmiary. W rezultacie coraz trudniejsze jest utrzymywanie stron, a wprowadzenie większych edycji (np. zmiana motywu) jest zbyt skomplikowane z powodu starego kodu, który dodatkowo w przypadku każdej witryny jest inny.
Strony działające w systemie Drupal multisite odznaczają się lepszą jakością niż witryny internetowe postawione osobno. Dlaczego? Rozwiązanie pozwala oszczędzić zasoby, które w przeciwnym razie trzeba by było wykorzystać np. na zatrudnianie innej agencji do tworzenia kolejnego projektu. Sami developerzy, tworząc fundament projektu multisite, przygotowują elastyczniejsze i trwalsze rozwiązania, gdy zdają sobie sprawę z tego, że włożenie odpowiedniego wysiłku zaprocentuje na przyszłość.
Korzyści biznesowe i techniczne z zastosowania Drupal multisite
Biznesowe | Techniczne |
Elastyczne rozwiązanie - jeśli Twój zespół developerski wie, że dany szablon/moduły będą wykorzystywane na wielu podstronach, od razu pracują nad konfigurowalnymi rozwiązaniami. | Jedna baza kodu dla wszystkich stron - aktualizacje wprowadzane dla jednej strony są od razu dostępne dla wszystkich stron korzystających z danej funkcji. |
Tańsze ulepszanie - nowe funkcje czy aktualizacje przygotowuje się tylko raz i można je wdrożyć na wszystkich stronach jednocześnie, zamiast przygotowywać je osobno dla każdej strony. | Możliwość dodawania modułów do jednej/kilku instalacji - mimo że mowa o miltiinstalacji w Drupalu, możesz dodać moduły (również customowe), które nie będą dostępne na pozostałych stronach. |
Łatwość edycji - pracownik obsługujący jedną stronę, bez problemów będzie umiał publikować treści na pozostałych witrynach, bez konieczności poznawania nowego interfejsu edytorskiego. | Szybsze i tańsze uruchomienie kolejnych stron - mając właściwie przygotowany bazowy szablon, konfiguracja zazwyczaj sprowadza się do przełączenia kilku ustawień i włączenia wybranych funkcji na nowej stronie. |
Oszczędność - dzięki temu, że w multisite jest jedna baza kodu, wszystkie strony bez problemu może utrzymywać jeden zespół developerski. | Więcej możliwości na testowanie - dzięki jednej bazie kodu, można poświęcić więcej czasu na rozbudowane testy, code review i redukcję długu technologicznego, zachowując przy tym ustalone terminy. |
Standaryzacja działań - dzięki wspólnej bazie funkcji łatwiej utrzymać wysoki, jednolity poziom tworzenia i modyfikacji treści na wszystkich stronach w obrębie multisite. | Szybsze wdrażanie aktualizacji bezpieczeństwa - podobnie jak w przypadku dodawania nowych funkcji, aktualizację bezpieczeństwa przygotowuje się raz i wdraża od razu na wszystkich stronach. |
Drupal multisite – wady
Drupal multisite – wady
Drupal multisite nie jest najlepszym rozwiązaniem, jeśli strony, jakie zamierzasz prowadzić, będą w znaczący sposób różnić się funkcjami i projektem. Oczywiście takie przedsięwzięcie jest możliwe, jednak niepotrzebnie spędzisz zbyt wiele czasu, walcząc z samą platformą, zamiast wykorzystywać jej prawdziwy potencjał. Inną kwestią, jaką należy mieć na uwadze, jest bezpieczeństwo. Jeśli problemy pod tym względem pojawią się na jednej stronie, zapewne dotkną także resztę powiązanych witryn. Podobnie konsekwencje błędów wykonanych podczas instalacji lub aktualizacji będą mieć szerokie znaczenie.
Drupal multisite – typy instalacji
Drupal multisite – typy instalacji
Istnieje kilka sposobów na zaprojektowanie architektury Drupala multisite. Poniżej w skrócie przedstawiamy każdy z nich.
Podejście klasyczne multisite
Klasyczne podejście do multisite wymaga:
- znajomości struktury plików Drupala,
- wskazania miejsca docelowego domeny,
- wpisu w sites.php, kierującego na konkretny folder strony,
- stworzenia bazy danych.
Klasyczny multisite prezentuje się tak, jak omówiliśmy wcześniej – ma oddzielne konfiguracje, bazy danych itp. Wspólna jest jednak podstawowa baza kodu. Chcąc dodać do każdej multiinstalacji nowy element, specjaliści korzystają z konfiguracji eksportowanych do pliku tekstowego yml. Mogą także użyć modułu Configuration Split. Daje on możliwość segregowania konfiguracji - wybrania, które mają być współdzielone, a które dostępne tylko dla wybranej strony.
Architektura multi-domain (z wykorzystaniem modułu Domain)
W architekturze multi-domain wszystkie strony dzielą wspólną bazę danych, co sprawia, że mogą korzystać z tej samej biblioteki mediów. Przy dobrze skonfigurowanej stronie, tzn. ignorując konfiguracje poszczególnych domen, wystarczy dodać nową domenę w panelu i ją przekierować.
W tym rozwiązaniu przydaje się moduł Domain, który pozwala zarządzać licznymi stronami, kategoryzować content oraz ustalać, który i gdzie ma się pokazywać. Jeśli Twoje strony mają takie same treści, nie musisz ich kopiować i wklejać osobno, a jedynie zaznaczyć, na których domenach mają się pojawić. W efekcie aktualizowanie pojedynczych stron sprawia mniej kłopotów - zarządzasz całym contentem z jednego miejsca.
Wyzwania związane z wdrożeniem Drupal multisite
Wyzwania związane z wdrożeniem Drupal multisite
Drupal multisite niesie za sobą wiele korzyści, jednak jego wdrożenie może być nieco problematyczne. Oto wyzwania, na które możesz natrafić.
Wymagająca pierwsza konfiguracja
Decydując się na zastosowanie Drupal multisite, musisz liczyć się z większym kosztem wdrożenia. Od tego punktu zależy cała dalsza praca na multi-instalacji. Dlatego warto przed przystąpieniem do konfiguracji rozplanować sobie funkcje i mechanizmy, które wykorzystasz na stronie. Pozwoli to nie tylko ocenić, czy wdrażana witryna nadaje się do multi-instalacji, ale także przygotować się na odpowiednie zmiany w plikach konfiguracyjnych. Czy konieczne będzie użycie modułu config_split, czy też wystarczy wykorzystać config_ignore do obsługi uniwersalnych konfiguracji?
Należy także pamiętać, że customowe moduły muszą wspierać wszystkie instancje multi-instalacji oraz być aktualizowane w taki sposób, żeby tę kompatybilność zachować. Dobrym rozwiązaniem jest przygotowanie globalnego pliku settings.php, w którym zdefiniujesz zmienne zależne od każdej strony, np. wyciąganie nazwy wewnętrznej, żeby móc robić warunki pod konkretne instancje.
Zarządzanie użytkownikami
Przy instalacji niewykorzystującej modułu domains dla każdej z instancji jest osobna baza danych, przez co dla każdej strony przydzielone są oddzielne konta użytkowników, co czasami jest pożądane. Jednak w niektórych przypadkach tworzenie użytkowników i zarządzanie ich uprawnieniami staje się nieco uciążliwe. W takich sytuacjach z pomocą przychodzą narzędzia CAS (Central Authentication System). Drupal posiada moduły do integracji aplikacji z CAS, przy czym można hurtowo importować nazwy użytkowników, które Drupal ma utworzyć w danej instancji. Moduł można skonfigurować w taki sposób, że każda osoba z danej domeny CAS może się zalogować, tworząc przy pierwszej wizycie konto.
Zarządzanie multimediami
Oddzielna baza danych wpływa także na przechowywanie multimedia. Każdy fizyczny plik na serwerze musi mieć swoją encję w bazie danych np. media, aby można było go poprawnie przypisać (referować) do nadrzędnych elementów. Można w tym przypadku posiłkować się migracjami, które będą migrować wpisy w bazie danych do pozostałych instancji. Jest to jednak kwestia bardzo indywidualna i zależy od potrzeb klienta.
Konfiguracja Drupal multisite
Konfiguracja Drupal multisite
Przedstawiamy kilka kroków, jak poprawnie skonfigurować funkcję multi-instalacji w Drupalu.
Instalacja nowej instancji
Tworząc pojedynczą stronę w Drupalu, pliki znajdują się w folderze sites/default. Wtedy nie musisz przejmować się plikiem sites/sites.php, ponieważ cały ruch i tak jest kierowany na folder default. Aby dodać kolejną instancję, możesz posłużyć się narzędziem drush, wykonując komendę:
drush site-install standard --sites-subdir=new_site --account-name=admin --account-pass=admin_pass --db-url='mysql://user:password@localhost/db_name'
Komenda utworzy folder sites/new_site oraz skonfigurowany w nim settings.php z podanym dostępem do bazy danych. Skrypt automatycznie zainstaluje bazową konfigurację do bazy danych i utworzy użytkownika ‘admin’.
Należy także pamiętać o poprawnym ustawieniu domeny – vhost powinien kierować w to samo miejsce, w które kieruje pierwsza domena, natomiast Drupalowi trzeba wskazać, która domena będzie kierować na który folder instalacji. Dodaj w tym celu linię kodu do sites/sites.php:
$sites[‘new-domain.com’] = ‘new_site’;
Po takim zabiegu, wchodząc na domenę new-domain.com, zobaczysz swoją nowo wygenerowaną stronę.
Współdzielenie konfiguracji
Jeśli Twoje strony są bliźniaczo podobne, możesz na obu z nich korzystać z tych samych konfiguracji yml. W tym celu w plikach settings.php obu stron ustaw taką samą ścieżkę do folderu z konfiguracją, np.:
$settings['config_sync_directory'] = '../config/sync/multisite/';
W celu wykluczenia z eksportu/importu konkretnych fragmentów konfiguracji możesz skorzystać z modułu config_ignore. W jego konfiguracji podajesz całe pliki konfiguracji lub masz możliwość wykluczenia pojedynczej definicji z całego pliku bardziej zaawansowaną składnią. Przykładowo, jeśli chcesz wykluczyć z eksportu do plików yaml nazwę swojej witryny, dodaj do config_ignore taką ścieżkę:
system.site:page
W skład ścieżki wchodzi nazwa konfiguracji ‘system.site’ oraz konkretny argument, który chcesz ignorować.
Częściowe importowanie konfiguracji
Jeśli samo ignorowanie konkretnych plików/argumentów nie jest dla Ciebie wystarczające, możesz skorzystać z modułu config_split. Pozwala on na tworzenie oddzielnych zestawów konfiguracji, które mogą być aktywowane lub deaktywowane w zależności od środowiska. Przykładowo, można zdefiniować jeden split dla środowiska deweloperskiego, który będzie zawierał konfiguracje debugowania, a inny dla środowiska produkcyjnego. Tak samo jeden zestaw dla strony_pierwszej drugi dla strony_drugiej. Gdy moduł jest aktywowany i skonfigurowany, podczas eksportowania konfiguracji Drupala za pomocą Drusha (drush config:export) lub interfejsu użytkownika, konfiguracje przypisane do określonego splitu są wyłączane z podstawowego eksportu i zapisywane w osobnym katalogu. Podczas importowania konfiguracji można zdecydować, który split ma być aktywowany. Dzięki temu można załadować tylko te konfiguracje, które są istotne dla danego środowiska/instancji. To umożliwia automatyczne dostosowanie aplikacji bez ręcznego manipulowania plikami konfiguracyjnymi. Moduł pozwala ustawiać priorytety dla różnych splitów. W sytuacjach, gdy różne splity mają sprzeczne ustawienia, kolejność ich stosowania decyduje o końcowej konfiguracji.
Multi-instalacja Drupala – podsumowanie
Multi-instalacja Drupala – podsumowanie
Drupal multisite to świetne rozwiązanie, które sprawdzi się w przypadku firm prowadzących wiele stron internetowych jednocześnie np. stron marek lub submarek, filii firm w innych krajach. Dzięki inwestycji w multisite możesz znacznie ograniczyć czas spędzony na zarządzaniu witrynami, a co za tym idzie - zaoszczędzić sporo pieniędzy. Rozważ korzyści tego rozwiązania przy tworzeniu wielu stron dla swojego biznesu.