← Späť na Blog

Blog

Docker pre WordPress: Prečo izolované kontajnery menia všetko

Jeden klient nemôže zničiť druhého. Jedna stránka nemôže nakaziť druhú. Toto je architektúra hostingovej platformy PAGEnza.

Tradičný WordPress hosting umiestňuje viacero stránok na jeden server. Zdieľajú PHP, zdieľajú prístup k súborovému systému a často zdieľajú databázový server. To je v poriadku, kým to nie je – a keď to nie je, je to vážny problém.

PAGEnza poskytuje každú WordPress stránku vo vlastnom Docker kontajneri. Tento príspevok vysvetľuje, čo to znamená v praxi a prečo je to dôležité pre agentúry spravujúce viacero klientskych stránok.

Problém zdieľaného hostingu

Na typickom zdieľanom hostingovom pláne alebo dokonca na základnom VPS s viacerými inštaláciami WordPress:

Konkurencia o zdroje: jedna stránka s nárastom návštevnosti spomaľuje všetky ostatné stránky na serveri. Zle optimalizovaný plugin na stránke A zhoršuje výkon na stránke B.

Bezpečnostné riziko: ak sa jedna inštalácia WordPress kompromituje – prostredníctvom zraniteľného pluginu, slabého hesla alebo zastaranej verzie jadra – útočník, ktorý získa prístup k súborovému systému, môže často čítať súbory z iných stránok na rovnakom serveri.

Konflikty verzií PHP: stránka A potrebuje PHP 7.4 pre starý plugin. Stránka B potrebuje PHP 8.2 pre novší. Na zdieľanom hostingu si vyberiete jednu.

Expozícia databázy: zdieľané databázové servery znamenajú, že jedno nesprávne nakonfigurované oprávnenie používateľa môže odhaliť dáta iných stránok.

Docker kontajnery riešia všetky tieto problémy na úrovni infraštruktúry.

Čo je vlastne kontajner

Docker kontajner je ľahký, izolovaný proces, ktorý má vlastný:

  • Súborový systém (kontajner nevidí súbory mimo svojich hraníc)

  • Sieťový zásobník (vlastná IP adresa, vlastné porty)

  • Procesný priestor (nevidí procesy iných kontajnerov)

  • Limity zdrojov (limity CPU a pamäte)

Zdieľa hostiteľské jadro s inými kontajnermi, ale všetko nad jadrom je izolované. Nie je to plnohodnotný virtuálny stroj – spustí sa za sekundy, nie minúty, a spotrebuje zlomok zdrojov.

Pre WordPress, jeden kontajner spúšťa: Nginx, PHP-FPM a súbory WordPress. Databáza beží v samostatnom kontajneri, pripojenom iba k danému WordPress kontajneru.

Ako PAGEnza poskytuje stránku

Keď vytvoríte novú klientsku stránku v PAGEnza, tu je to, čo sa stane za menej ako 45 sekúnd:

  1. Nový Docker kontajner sa spustí zo základného obrazu WordPress
  2. WordPress je nakonfigurovaný s novou databázou na zdieľanej inštancii MariaDB (izolované na poverenia daného kontajnera)
  3. Plugin PAGEnza je automaticky nainštalovaný a aktivovaný
  4. Virtuálny host Nginx je nakonfigurovaný s poddoménou klienta
  5. SSL je vydaný cez Let's Encrypt
  6. Kontajner je zaregistrovaný v reverznom proxy so správnymi pravidlami smerovania

Klient získa URL ako clientname.pagenza.com, ktorá je aktívna do 45 sekúnd po kliknutí na "Vytvoriť stránku". Žiadna manuálna konfigurácia servera, žiadne SSH, žiadne čakanie na DNS (pre poddoménu – šírenie DNS vlastnej domény je samostatné).

Izolácia kontajnerov v praxi

Limity pamäte: každý kontajner má konfigurovateľný limit pamäte. Ak nekontrolovaný plugin spôsobí nárast pamäte na stránke jedného klienta, nemôže spotrebovať pamäť pridelenú iným kontajnerom. Stránka sa môže spomaliť alebo vrátiť 503 – ale neovplyvní to iných klientov.

Izolácia súborového systému: súbory WordPress pre klienta A sú úplne neviditeľné pre kontajner klienta B. Kompromitovaný plugin na stránke klienta A nemá cestu k súborom klienta B.

Sieťová izolácia: kontajnery komunikujú iba cez definované sieťové mosty. Databázový kontajner pre klienta A prijíma pripojenia iba z WordPress kontajnera klienta A – nie z žiadneho iného kontajnera v systéme.

PHP na kontajner: pretože každý kontajner spúšťa svoju vlastnú inštanciu PHP-FPM, môžete spúšťať rôzne verzie PHP pre rôznych klientov. Starý plugin klienta A, ktorý potrebuje PHP 7.4, beží spolu s moderným stackom klienta B na PHP 8.2.

Vlastné domény

Predvolené nastavenie poskytuje každému klientovi poddoménu *.pagenza.com. Pre klientov, ktorí chcú svoju vlastnú doménu, je proces nasledujúci:

  1. Klient nasmeruje A záznam svojej domény na IP adresu servera PAGEnza
  2. V dashboarde PAGEnza zadáte vlastnú doménu
  3. Konfigurácia reverzného proxy sa automaticky aktualizuje
  4. SSL sa vydá pre vlastnú doménu cez Let's Encrypt

Možnosti WordPress siteurl a home sa aktualizujú tak, aby zodpovedali. Z pohľadu klienta ich stránka jednoducho funguje na ich doméne – žiadny presmerovanie, žiadna poddoména viditeľná pre návštevníkov.

Čo to znamená pre agentúry

Praktický prínos pre agentúry spravujúce viacero klientskych stránok:

Rýchlosť onboardingu: poskytnutie novej klientskej stránky trvá menej ako minútu. Žiadne nastavenie servera, žiadny cPanel, žiadna manuálna inštalácia WordPress.

Separácia klientov: každá klientska stránka je skutočne izolovaná. Klient, ktorý nainštaluje problematický plugin, ovplyvní iba svoju vlastnú stránku.

Škálovateľnosť: pridanie nového klienta nevyžaduje poskytnutie nového servera. Kontajnerová infraštruktúra sa škáluje podľa kapacity hostiteľa a pridanie ďalšej kapacity je otázkou pridania ďalších hostiteľských uzlov.

Obnova po havárii: pretože každá stránka je kontajnerizovaná, zálohovanie a obnova funguje na úrovni kontajnera. Obnovenie stránky jedného klienta neovplyvňuje žiadnych iných klientov.

Nevýhodou je, že kontajnerový hosting stojí viac na stránku ako zdieľaný hosting. Ale pre agentúry, kde spoľahlivosť stránky a separácia klientov sú neprijateľné, ekonomika funguje – najmä keď sa zohľadnia úspory času pri poskytovaní.