← Nazaj na Blog

Blog

Docker za WordPress: Zakaj izolirani kontejnerji spremenijo vse

Ena stranka ne more uničiti druge. Ena stran ne more okužiti druge. To je arhitektura PAGEnza-ine platforme za gostovanje.

Tradicionalno gostovanje WordPressa postavlja več spletnih mest na en strežnik. Delijo PHP, delijo dostop do datotečnega sistema in pogosto delijo strežnik baz podatkov. To je v redu, dokler ni – in ko ni, je to resen problem.

PAGEnza zagotavlja vsako spletno mesto WordPress v svojem Docker kontejnerju. Ta objava pojasnjuje, kaj to pomeni v praksi in zakaj je pomembno za agencije, ki upravljajo več spletnih mest strank.

Problem skupnega gostovanja

Na tipičnem skupnem gostovanju ali celo osnovnem VPS-ju z več namestitvami WordPressa:

Konkurenca za vire: eno spletno mesto, ki doživi prometni vrh, upočasni vsa druga spletna mesta na strežniku. Slabo optimiziran vtičnik na spletnem mestu A poslabša delovanje spletnega mesta B.

Varnostno "puščanje": če je ena namestitev WordPressa ogrožena – preko ranljivega vtičnika, šibke gesla ali zastarele osnovne različice – lahko napadalec, ki pridobi dostop do datotečnega sistema, pogosto bere datoteke z drugih spletnih mest na istem strežniku.

Konflikti različic PHP: spletno mesto A potrebuje PHP 7.4 za star vtičnik. Spletno mesto B potrebuje PHP 8.2 za novejšega. Na skupnem gostovanju izberete eno.

Izpostavljenost baz podatkov: skupni strežniki baz podatkov pomenijo, da lahko ena napačno konfigurirana dovoljenja uporabnika izpostavijo podatke drugih spletnih mest.

Docker kontejnerji rešujejo vse te težave na ravni infrastrukture.

Kaj je kontejner v resnici

Docker kontejner je lahek, izoliran proces, ki ima svoj:

  • Datotečni sistem (kontejner ne vidi datotek zunaj svojih meja)
  • Omrežni sklad (svoj IP naslov, svoja vrata)
  • Procesni prostor (ne vidi procesov drugih kontejnerjev)
  • Omejitve virov (omejitve CPU in pomnilnika)

S skupnim jedrom gostitelja deli z drugimi kontejnerji, vendar je vse nad jedrom izolirano. To ni polni virtualni stroj – zažene se v nekaj sekundah, ne minutah, in porabi le delček virov.

Za WordPress, en kontejner poganja: Nginx, PHP-FPM in datoteke WordPressa. Baza podatkov deluje v ločenem kontejnerju, povezanem samo s tem specifičnim kontejnerjem WordPressa.

Kako PAGEnza zagotavlja spletno mesto

Ko ustvarite novo spletno mesto stranke v PAGEnza, se zgodi naslednje v manj kot 45 sekundah:

  1. Nov Docker kontejner se zažene iz osnovne slike WordPressa
  2. WordPress je konfiguriran s svežo bazo podatkov na skupni instanci MariaDB (izolirano na poverilnice tega kontejnerja)
  3. Vtičnik PAGEnza je samodejno nameščen in aktiviran
  4. Nginx virtualni gostitelj je konfiguriran z domeno poddomene stranke
  5. SSL je izdan preko Let's Encrypt
  6. Kontejner je registriran v povratnem posredniku s pravilnimi pravili usmerjanja

Stranka dobi URL, kot je clientname.pagenza.com, ki je aktiven v 45 sekundah po kliku na "Ustvari spletno mesto". Brez ročne konfiguracije strežnika, brez SSH, brez čakanja na DNS (za poddomeno – širjenje DNS-ja za lastno domeno je ločeno).

Izolacija kontejnerjev v praksi

Omejitve pomnilnika: vsak kontejner ima nastavljivo omejitev pomnilnika. Če neobvladljiv vtičnik povzroči skok pomnilnika na spletnem mestu ene stranke, ne more porabiti pomnilnika, dodeljenega drugim kontejnerjem. Spletno mesto se lahko upočasni ali vrne 503 – vendar to ne bo vplivalo na druge stranke.

Izolacija datotečnega sistema: datoteke WordPressa za stranko A so popolnoma nevidne kontejnerju stranke B. Ogrožen vtičnik na spletnem mestu stranke A nima poti do datotek stranke B.

Omrežna izolacija: kontejnerji komunicirajo samo preko definiranih omrežnih mostov. Kontejner baze podatkov za stranko A sprejema povezave samo od kontejnerja WordPressa stranke A – ne od nobenega drugega kontejnerja v sistemu.

PHP na kontejner: ker vsak kontejner poganja svojo instanco PHP-FPM, lahko za različne stranke poganjate različne različice PHP-ja. Zapuščeni vtičnik stranke A, ki potrebuje PHP 7.4, deluje brezhibno ob sodobnem sklopu stranke B na PHP 8.2.

Lastne domene

Privzeta nastavitev vsaki stranki dodeli poddomeno *.pagenza.com. Za stranke, ki želijo svojo domeno, je postopek naslednji:

  1. Stranka usmeri A zapis svoje domene na IP naslov strežnika PAGEnza
  2. V nadzorni plošči PAGEnza vnesete lastno domeno
  3. Konfiguracija povratnega posrednika se samodejno posodobi
  4. SSL je izdan za lastno domeno preko Let's Encrypt

Možnosti WordPressa siteurl in home se posodobijo, da se ujemajo. Z vidika stranke njihovo spletno mesto preprosto deluje na njihovi domeni – brez preusmeritve, brez poddomene, vidne obiskovalcem.

Kaj to pomeni za agencije

Praktična prednost za agencije, ki upravljajo več spletnih mest strank:

Hitrost vključevanja: zagotavljanje novega spletnega mesta stranke traja manj kot minuto. Brez nastavitve strežnika, brez cPanela, brez ročne namestitve WordPressa.

Ločitev strank: spletno mesto vsake stranke je resnično izolirano. Stranka, ki namesti problematičen vtičnik, vpliva samo na svoje spletno mesto.

Prilagodljivost: dodajanje nove stranke ne zahteva zagotavljanja novega strežnika. Kontejnerska infrastruktura se prilagaja zmogljivosti gostitelja, dodajanje več zmogljivosti pa je stvar dodajanja več gostiteljskih vozlišč.

Obnova po katastrofi: ker je vsako spletno mesto v kontejnerju, varnostno kopiranje in obnova delujeta na ravni kontejnerja. Obnova spletnega mesta ene stranke ne vpliva na druge stranke.

Kompromis je, da kontejnersko gostovanje stane več na spletno mesto kot skupno gostovanje. Toda za agencije, kjer sta zanesljivost spletnega mesta in ločitev strank nujna, ekonomika deluje – še posebej, ko se upoštevajo prihranki časa pri zagotavljanju.