Poprawnie – Joomla! w swojej domyślnej, typowej instalacji działa w klasycznym stosie LAMP/WAMP, czyli serwer HTTP Apache, interpreter PHP oraz baza danych MySQL (obecnie często MariaDB, ale w praktyce nadal mówi się „MySQL”). Joomla! to system CMS napisany w PHP, więc potrzebuje środowiska, które potrafi wykonywać kod PHP po stronie serwera. Apache jest jednym z najpopularniejszych serwerów WWW, świetnie współpracuje z PHP poprzez moduł mod_php albo PHP-FPM i jest standardowo wspierany w dokumentacji Joomla!. Baza MySQL służy do przechowywania wszystkich treści: artykułów, użytkowników, menu, modułów, konfiguracji. Podczas instalacji Joomla! tworzy tabele w MySQL, zapisuje tam dane konfiguracyjne i później przy każdym wyświetleniu strony pobiera je zapytaniami SQL. W praktyce, jeśli stawiasz Joomla! na hostingu współdzielonym, dostajesz właśnie taki zestaw: Apache + PHP + MySQL, często z panelem typu cPanel lub DirectAdmin. To jest zgodne z dobrymi praktykami w branży webowej – prosty, sprawdzony stos, łatwy w administracji i dobrze udokumentowany. Moim zdaniem to też wygodne na etapie nauki: możesz lokalnie postawić XAMPP, WAMP lub Laragon i bez kombinowania odpalić Joomla! na swoim komputerze. W świecie produkcyjnym coraz częściej używa się też Nginx zamiast Apache, ale w treści pytania jest mowa o domyślnej, typowej konfiguracji, a tutaj dalej króluje Apache z PHP i MySQL jako standardowe, rekomendowane środowisko.
W tym pytaniu łatwo wpaść w pułapkę skojarzeń z innymi technologiami programistycznymi i zapomnieć, że Joomla! to konkretny system CMS napisany w określonym języku i zaprojektowany pod typowe środowisko serwerowe. Niektóre odpowiedzi wyglądają sensownie na pierwszy rzut oka, bo łączą język programowania z bazą danych, ale kompletnie mijają się z rzeczywistością techniczną Joomla!. Joomla! nie jest napisana w C++, więc środowisko C++ i MySQL w ogóle nie ma tutaj zastosowania. C++ oczywiście może być używany do tworzenia wysokowydajnych serwerów, silników gier czy komponentów systemowych, ale nie jest standardem w typowych CMS-ach webowych. Podobnie Python – bardzo popularny w aplikacjach webowych (Django, Flask), ale Joomla! nie korzysta z Pythona, więc nawet jeśli Python dobrze współpracuje z MySQL, to nie ma to znaczenia przy uruchamianiu tego konkretnego CMS. Kolejny trop to IIS, PERL i MySQL. IIS to serwer WWW od Microsoftu, PERL to stary, ale nadal używany język skryptowy. Da się na IIS uruchamiać różne technologie, ale Joomla! została zbudowana z myślą o PHP i serwerach zgodnych z typowym środowiskiem LAMP. PERL nie jest językiem, w którym powstała Joomla!, więc taki zestaw jest po prostu niekompatybilny z jej kodem. Typowy błąd myślowy przy tego typu pytaniach polega na tym, że ktoś patrzy: „jest język + jest baza danych, to pewnie zadziała”. Niestety tak to nie działa. Każdy CMS ma jasno określone wymagania środowiskowe, opisane w dokumentacji: wersja PHP, typ i wersja bazy danych, zalecany serwer HTTP, czasami konkretne rozszerzenia PHP. Dobre praktyki w administracji serwerami mówią, żeby zawsze sprawdzać oficjalne wymagania systemu, zamiast zgadywać na podstawie ogólnej wiedzy o programowaniu. W przypadku Joomla! takim wymaganiem jest właśnie PHP jako język, MySQL jako baza oraz typowe serwery WWW jak Apache (ewentualnie Nginx), a nie C++, Python czy PERL.