Jakiś czas temu sprawdzałem, czy da się korzystać z WordPressa w chmurze Windows Azure. Wspomniałem wówczas, że oprócz standardowej instalacji, dostępna jest także specjalna edycja o nazwie Brandoo WordPress. Różnica między nimi polega na tym, że wybierając standardową wersję WordPressa z galerii, będziemy korzystali z domyślnej bazy MySQL, natomiast Brandoo WordPress, pozwoli nam skorzystać z baz MS SQL, dla których mamy natywne wsparcie w ramach chmury. Czy to działa? Zobaczmy.
Instalacja
Sama instalacja Brandoo WordPress w ramach chmury Microsoftu przebiega bardzo podobnie do instalacji wersji standardowej.
Zaczynamy od wyboru obrazu w galerii, którego tym razem musimy szukać w zakładce CMS, pod literką B.
Podajemy kilka podstawowych informacji potrzebnych do skonfigurowania strony.
W ostatnim kroku musimy skonfigurować bazę danych MS SQL.
A dalej już standardowo instalacja WordPressa, który jest dostępny pod adresem, jaki wybraliśmy w kroku 2.
Pierwsze wrażenia
Wizualnie i funkcjonalnie, sam WordPress nie różni się niczym od wersji standardowej. To, że mamy do czynienia z Brandoo WordPress możemy poznać po dodatkowych widgetach widocznych w kokpicie.
Gdy spojrzymy na zakładkę z listą wtyczek znajdziemy tam domyślnie zainstalowane dwa nowe rozszerzenia. Zostały one dodane do katalogu /wp-content/mu-plugins i nie mamy możliwości ich usunięcia/wyłączenia z poziomu panelu administratora strony. To takie zabezpieczenie, aby ich przypadkowo nie wyłączyć i tym samym unieruchomić sobie całą stronę (szczególnie jeżeli chodzi o wtyczkę WP Db Abstraction).
Na zakładce Drop-ins znajdziemy informację o nowej klasie, która będzie odpowiedzialna za komunikację z bazą danych, czyli z MS SQL.
Jest to bardzo dobre rozwiązanie, dzięki któremu autorzy, aby dodać obsługę nowej bazy nie musieli zmieniać niczego w kodzie WordPressa. Możemy zatem bez przeszkód aktualizować system do kolejnych wersji, bez obaw, że nadpiszemy jakieś zmiany i strona przestanie działać. Przetestowałem to na małej aktualizacji z wersji 3.8 na 3.8.1, i przebiegał ona bez najmniejszych zakłóceń.
Jeżeli chodzi o pozostałe funkcjonalności WordPressa, to konfiguracja, dodawanie treści, modyfikacja, wszytko przebiegało bez najmniejszych problemów i w niczym nie różni się od standardowej wersji opartej o bazę MySQL.
Największy problem – kompatybilność wtyczek
Testowa strona w podstawowej konfiguracji działała bez problemów, postanowiłem zatem doinstalować kilka wtyczek, których używam na co dzień.
I w tym momencie ujawnił się największy problem z Brandoo WordPressem, a mianowicie kompatybilność z wtyczkami. Teoretycznie (zgodnie z wytycznymi Codexu), wszystkie operacje na bazie danych powinny odbywać się za pomocą warstwy abstrakcji, jaką jest klasa wpdb. Niestety część z wtyczek tego nie robi, odwołując się do bazy bezpośrednio. Wynika to z różnych pobudek. Niekiedy jest to zwykły brak wiedzy, w innych przypadkach chęć wyciśnięcia maksymalnych osiągów i optymalizacji niektórych zadań realizowanych przez wtyczkę. Rezultat jest taki, że przy próbie bezpośredniego dostępu do bazy otrzymujemy informację o błędzie i wtyczki po prostu nie działają.
Poniżej trzy przykładowe wtyczki i problemy jakie zauważyłem:
WordPress SEO by Yoast – próba wygenerowania pliku xml z mapą strony zakończyła się białym ekranem. Po włączeniu wyświetlania błędów, okazała się, że problemem jest zapytanie do bazy bazy.
BackWPup – podstawa jeżeli chodzi o kopie zapasowe na większości stron (moim zdaniem najlepsze rozwiązanie tego typu dla WP). I tutaj nie miałem szczęścia, gdyż przy próbie stworzenia kopii posypały się błędy.
Revolution Slider – świetna wtyczka, która pozwala „wyklikać” cały slider z poziomu panelu administratora. Jak się okazało, autor w 90% przypadków trzymał się wytycznych Codexu i korzystał z klasy wpdb do komunikacji z bazą. Jednak w kilku miejscach zdarzyło mu się skorzystać z np. z funkcji mysql_insert_id czy też natywnych poleceń MySQL.
Wtyczka skutecznie odmówiła działania z Brandoo WordPress :/
Podsumowanie
Moim zdaniem Brandoo WordPress można traktować w tej chwili tylko jako ciekawostkę, proof of concept. Ze względu na brak kompatybilności z wieloma wtyczkami (najczęściej z winy samych wtyczek) wdrażając to rozwiązanie produkcyjnie mocno ograniczymy sobie możliwości rozwoju. Jeżeli nie będziemy mogli skorzystać z istniejących wtyczek, to albo trzeba będzie się bez nich obejść (co może być trudne i uciążliwe) albo napisać je samemu (a to mija się z celem, niepotrzebna praca).
Te problemy zauważyli chyba i sami twórcy edycji WordPressa dla Windows Azure i przygotowali Brandoo WordPress LAMP Editon. Jest to gotowy obraz maszyny w której mamy zainstalowanego linuxa (Ubuntu 12.04 LTS) z Apache, PHP i bazą MariaDB plus oczywiście WordPress. Ale to już temat na osobny wpis :)
A może ktoś z Was wdrożył u siebie lub klienta stronę opartą o Brandoo WordPress? Chętnie obejrzę :)