WordPress to najpopularniejszy system zarządzania treścią i w tej materii nikt nie powinien mieć wątpliwości. Według statystyk serwisy oparte o WordPress stanowią 41,5% wszystkich witryn dostępnych w zasobach sieci Internet – to wręcz niewyobrażalna liczba. Popularność WordPress wynika przede wszystkim z dość dużej prostoty tworzenia nieskomplikowanych pod kątem technicznych serwisów, takich jak blogi, strony firmowe czy mniejsze portale informacyjne. Dodatkowo ogromna baza motywów i wtyczek sprawia, że nawet osoby nie mające choćby elementarnej wiedzy z zakresu tworzenia aplikacji internetowych, są w stanie dosłownie „wyklikać” witrynę, która będzie odpowiadała współczesnym standardom. Nie bez znaczenia pozostaje fakt, że WordPress jest oprogramowaniem bezpłatnym. Pewna część wspomnianych motywów i wtyczek jest rzecz jasna płatna, ale dzięki temu oferują one często bardziej rozbudowane funkcjonalności oraz zapewniają wsparcie techniczne.
Co oferuje WordPress?
Niewielkie wymagania techniczne sprawiają też, że autoinstalatory WordPress stały się nieodłączną częścią paneli różnych dostawców hostingu. W praktyce jednak ich zastosowanie jest znikome, bo instalacja WordPress ogranicza się zwykle do wyboru języka, podania dostępów do bazy danych i nazwy nowego serwisu oraz poświadczeń konta administratora witryny.
Istotny jest jednak fakt, że witrynę opartą o WordPress możemy wystawić w zasadzie na dowolnym hostingu, nawet z podstawowym planem. Do działania systemu WordPress wymagany jest interpreter PHP i baza danych MySQL – absolutny standard. Wdrożenia większych serwisów powinny oczywiście zostać zautomatyzowane w ramach CI/CD, co dla tego systemu nie jest specjalnie trudne.
Możliwości WordPress w pełni odpowiadają potrzebom twórcom mniejszych serwisów, a pewnie w niektórych przypadkach są zbyt duże. Natomiast często przygotowanie nieco bardziej zaawansowanej aplikacji w oparciu o WordPress może okazać się co najmniej problematyczne. Kod zawsze można dostosować do wymagań klienta, ale trzeba mieć świadomość, że ostateczne koszty wytworzenia aplikacji pisanej „od zera” (w praktyce będzie to zawsze framework typu Symfony czy Laravel), a tej powstającej na zasadzie modyfikacji WordPress, mogą być wyższe dla drugiego scenariusza. Podobnie z kwestiami bazy danych – MySQL, czyli jedyna baza danych obsługiwana przez WordPress – w porównaniu do PostgreSQL cechuje się niższą wydajnością. W przypadku wdrożeń dużych serwisów kwestia wydajności bazy danych jest zwyczajnie kluczowa, zwykle bardziej istotna od optymalizacji samego kodu.
Obecne trendy promują też technologie takie jak Node.js, Java czy Ruby. PHP, w którym od początku pisany był WordPress, bywa dość ograniczony. Kod strony PHP jest interpretowany przy każdym jednym zapytaniu do danego serwisu, co nie pozostaje bez wpływu na aspekty wydajności. Serwer HTTP i usługę PHP-FPM (o ile jest stosowana, bo dla serwera Apache z powodzeniem można używać wbudowanego mod_php) jesteśmy w stanie zoptymalizować, zastosować cache czy load balancing na wyższym poziomie, natomiast wciąż zauważalny może być spadek wydajności w porównaniu do aplikacji o tych samych funkcjonalnościach, ale napisanej w języku kompilowanym, m.in. w Java.
Rosnące znaczenie konteneryzacji czy tak zawansowanych narzędzi jak Kubernetes również w pewnym sensie „wymusza” używanie innych języków niż PHP. Aplikację napisaną w Java czy Node.js uruchomimy z wykorzystaniem jednego, niewielkiego i prostego kontenera (z dużą pewnością będzie to alpine jako obraz bazowy). W przypadku PHP wymagany jest zwykle serwer HTTP wraz z interpreterem, co już na początku oznacza znacznie większy rozmiar obrazu. Nie wspominam nawet o modułach PHP, których kompilacja przez docker-php-ext-install wymaga wcześniejszej instalacji kilkudziesięciu bibliotek.
Z drugiej strony migracja istniejących portali z WordPress na inny system nie zawsze może okazać się korzystna. WordPress utrzymywany zgodnie z dobrymi praktykami to wciąż stabilny system, a mniej techniczni użytkownicy mogą być już przyzwyczajeni do wyglądu Kokpitu i całej ścieżki zarządzania.
Ghost jako alternatywa dla projektów opartych o WordPress
Jeśli jednak ktoś szukałby alternatywnego rozwiązania, to dobrym podejściem może okazać się Ghost. Napisany w Node.js system CMS, którego użycie nie powinno sprawiać jakichkolwiek trudności. Proces instalacji realizowany jest poprzez powłokę (wydajemy polecenie i podajemy potrzebne informacje), więc wymagany jest dostęp SSH. Oprócz tego w systemie musi być dostępny Node.js w wersji LTS, czyli obecnie 22. Node.js możemy w prosty sposób zainstalować z użyciem NVM. Pamiętamy też o utworzeniu bazy danych MySQL – Ghost obsługuje również SQLite, natomiast dla serwisów produkcyjnych nie będzie to odpowiedni pomysł.
Kroki instalacji zostały opisane w repozytorium dostępnym pod adresem https://github.com/tryghost/ghost. Jako pierwsze polecenie wykonujemy
npm install ghost-cli -g
co pobierze skrypt do zarządzania Ghost. Wykonanie
ghost install
wymaga dostępu administracyjnego (sudo), ale przygotuje całą konfigurację nginx (reverse proxy) wraz z SSL i dedykowanym użytkownkiem ghost, na prawach którego będzie działać aplikacja. Mnie osobiście nie odpowiada użycie sudo do czynności, nad którymi nie mam kontroli – bo w praktyce nie wiadomo, jakich poleceń używa ghost itd. Stąd przygotowałem własną konfigurację nginx z obsługą HTTPS, a użytkownik nie posiada uprawnień root. To słuszna koncepcja i spotkamy się z nią w środowiskach współdzielonych, takich jak hostingi. W przypadku instalacji bez użycia sudo Ghost wymaga dodania jednego parametru (polecenie wykonujemy w pustym katalogu).
ghost install --no-setup-linux-user
Całość instalacji sprowadza się do odpowiedzi na kilka pytań. W związku z tym, że nasz użytkownik nie jest uprzywilejowany, to musimy zrezygnować z konfiguracji nginx i systemd (powinniśmy jednak dodać serwis ograniczony do naszego użytkownika, jeśli konfiguracja serwera pozwala na używanie systemctl –user).
Możemy wylistować zawartość katalogu, a także sprawdzić, jakie polecenie jest uruchomione. Zarządzanie stanem aplikacji Ghost jest powiązane z dwoma komendami: ghost start i ghost stop.
Ghost lokalnie jest wystawiony na porcie 2368. Zależnie od naszych uprawnień dostosowujemy więc konfigurację reverse proxy (nie musi to być nginx) bądź w panelu zarządzania hostingiem dodajemy proxy na ten właśnie port. Jest to typowe proxy, Ghost nie wymaga żadnych specyficznych konfiguracji (przykład podano w dokumentacji).
Jeżeli wszystko zostało wykonane pomyślnie, to po wejściu na https://domena/ghost powinniśmy zobaczyć niewielki formularz pozwalający na ustawienie nazwy tworzonego serwisu oraz informacji o użytkowniku administracyjnym.
Panel zarządzania Ghost jest intuicyjny i pozwala na szybki dostęp do najpotrzebniejszych funkcji.
To zdecydowanie prosty system zarządzania treścią, ale ewentualne rozbudowanie naszego portalu nie powinno stanowić wyzwania. Pamiętajmy zresztą, że rozwój i utrzymanie większych serwisów powinniśmy zlecić profesjonalnemu zespołowi programistów, bo samodzielnie w krótkim czasie napotkamy różne przeszkody związane nie tylko z dodawaniem nowych funkcji. Zawsze możemy też skorzystać z AI do „pomocy” nad zmianami w kodzie – te jednak powinny być zawsze dokładnie weryfikowane na osobnym środowisku, nawet lokalnym.
Ghost na starcie zapewnia też całkiem spory wybór motywów. Oczywiście ciężko stwierdzić, czy każdemu będzie odpowiadał ten i podobny ich wygląd, chociaż z pewnością jest bardziej interesujący od znanych domyślnych motywów WordPress.
W mojej ocenie witryna prezentuje się bardzo profesjonalnie i chętnie wykorzystałbym podobny układ treści podczas przygotowywania własnego publicznie dostępnego serwisu.
WordPress pozostaje najszerzej rozpowszechnionym systemem zarządzania treścią, ale konkurencyjne rozwiązania zaczynają zapewniać elementarne funkcjonalności CMS przy lepszym poziomie dostosowania do wymagań wydajnościowych, bezpieczeństwa czy możliwości rozwoju. Coraz większa potrzeba użycia konteneryzacji, w tym orkiestracji kontenerami sprawia, że tradycyjne hostingi przestają być wystarczające – jeśli u danego dostawcy usług hostingowych jedyną dostępną technologią pozostanie PHP, to taki hosting w krótkim czasie przestanie być wybierany przez klientów.
Wdrożenie systemu Ghost nie wiąże się z koniecznością nabycia szerokiej wiedzy technicznej – pokazaliśmy, że uruchomienie witryny składa się z wykonania dwóch poleceń w konsoli. Interfejs panelu zarządzania jest przejrzysty i zachęca do korzystania, a sama witryna wygląda zgodnie ze współczesnymi standardami.
Osobom zainteresowanym innymi systemami stanowiącym alternatywę dla WordPress polecam mój artykuł opisujący EmDash od Cloudflare – również w tym przypadku wykorzystywany jest Node.js.
Czy ten artykuł był pomocny?
Oceniono: 0 razy



