Blogi
Docker WordPressile: Miks isoleeritud konteinerid muudavad kõike
Üks klient ei saa teist hävitada. Üks sait ei saa teist nakatada. See on PAGEnza hostimisplatvormi arhitektuur.
Traditsiooniline WordPressi hostimine paigutab mitu saiti ühele serverile. Nad jagavad PHP-d, failisüsteemi juurdepääsu ja sageli ka andmebaasiserverit. See sobib seni, kuni see pole nii – ja kui see pole nii, on see tõsine probleem.
PAGEnza pakub iga WordPressi saiti selle enda Docker-konteineris. See postitus selgitab, mida see praktikas tähendab ja miks see on oluline agentuuridele, kes haldavad mitut kliendisaiti.
Jagatud hostingu probleem
Tavalises jagatud hostingu plaanis või isegi mitme WordPressi installatsiooniga põhilisel VPS-il:
Ressursside võistlus: ühe saidi liikluskoormus aeglustab kõiki teisi serveri saite. Saidil A olev halvasti optimeeritud pistikprogramm halvendab saidi B jõudlust.
Turvalisuse lekkimine: kui üks WordPressi installatsioon on kompromiteeritud – haavatava pistikprogrammi, nõrga parooli või aegunud põhivärskenduse kaudu – võib ründaja, kes saab failisüsteemi juurdepääsu, sageli lugeda sama serveri teiste saitide faile.
PHP versioonide konfliktid: saidil A on vana pistikprogrammi jaoks vaja PHP 7.4. Saidil B on uuema jaoks vaja PHP 8.2. Jagatud hostingu puhul valite ühe.
Andmebaasi kokkupuude: jagatud andmebaasiserverid tähendavad, et üks valesti konfigureeritud kasutajaõigus võib paljastada teiste saitide andmeid.
Docker-konteinerid lahendavad kõik need probleemid infrastruktuuri tasandil.
Mis on konteiner tegelikult
Docker-konteiner on kerge, isoleeritud protsess, millel on oma:
- Failisüsteem (konteiner ei näe väljaspool oma piire olevaid faile)
- Võrgupinu (oma IP-aadress, oma pordid) -Protsessiruum (ei näe teiste konteinerite protsesse) -Ressursipiirangud (CPU ja mälu piirangud)
See jagab hosti kerneli teiste konteineritega, kuid kõik kerneli kohal on isoleeritud. See pole täielik virtuaalmasin – see käivitub sekunditega, mitte minutitega, ja kasutab murdosa ressurssidest.
WordPressi jaoks töötab üks konteiner: Nginx, PHP-FPM ja WordPressi failid. Andmebaas töötab eraldi konteineris, mis on ühendatud ainult selle konkreetse WordPressi konteineriga.
Kuidas PAGEnza saiti pakub
Kui loote PAGEnzas uue kliendisaiti, juhtub järgmine asi vähem kui 45 sekundiga:
-
Uus Docker-konteiner käivitatakse baas-WordPressi pildist
-
WordPress konfigureeritakse värske andmebaasiga jagatud MariaDB installatsioonis (isolatsiooniga selle konteineri mandaatide jaoks)
-
PAGEnza pistikprogramm installitakse ja aktiveeritakse automaatselt
-
Nginx virtuaalhost konfigureeritakse kliendi alamdomeeniga
-
SSL väljastatakse Let's Encrypt kaudu
-
Konteiner registreeritakse pöörd-puhverserverisse õigete marsruutimise reeglitega
Klient saab URL-i nagu clientname.pagenza.com, mis on aktiivne 45 sekundi jooksul pärast "Loo sait" klõpsamist. Ei mingit käsitsi serveri konfiguratsiooni, SSH-i ega DNS-i ooteperioodi (alamdomeeni jaoks – kohandatud domeeni DNS-i levik on eraldi).
Konteineri isolatsioon praktikas
Mälu piirangud: igal konteineril on konfigureeritav mälu piirang. Kui kontrollimatu pistikprogramm põhjustab ühe kliendi saidil mälu hüppe, ei saa see tarbida teistele konteineritele eraldatud mälu. Sait võib aeglustuda või tagastada 503 – kuid see ei mõjuta teisi kliente.
Failisüsteemi isolatsioon: kliendi A WordPressi failid on kliendi B konteineri jaoks täiesti nähtamatud. Kliendi A saidi kompromiteeritud pistikprogrammil pole teed kliendi B failide juurde.
Võrgu isolatsioon: konteinerid suhtlevad ainult määratletud võrgusildade kaudu. Kliendi A andmebaasikonteiner aktsepteerib ühendusi ainult kliendi A WordPressi konteinerist – mitte ühestki teisest süsteemi konteinerist.
PHP konteineri kohta: kuna iga konteiner töötab oma PHP-FPM installatsiooniga, saate erinevate klientide jaoks kasutada erinevaid PHP versioone. Kliendi A pärandpistikprogramm, mis vajab PHP 7.4, töötab hästi koos kliendi B kaasaegse PHP 8.2 stackiga.
Kohandatud domeenid
Vaike seadistus annab igale kliendile *.pagenza.com alamdomeeni. Klientidele, kes soovivad oma domeeni, on protsess järgmine:
- Klient suunab oma domeeni A-kirje PAGEnza serveri IP-aadressile
- PAGEnza juhtpaneelil sisestate kohandatud domeeni
- Pöörd-puhverserveri konfiguratsioon värskendatakse automaatselt
- SSL väljastatakse kohandatud domeeni jaoks Let's Encrypt kaudu
WordPressi siteurl ja home valikud värskendatakse vastavalt. Kliendi vaatenurgast töötab nende sait nende domeenil – ilma ümbersuunamiseta, ilma külastajatele nähtava alamdomeenita.
Mida see agentuuride jaoks tähendab
Praktiline kasu agentuuridele, kes haldavad mitut kliendisaiti:
Sisseelamise kiirus: uue kliendisaiti pakkumine võtab aega alla minuti. Ei mingit serveri seadistust, cPaneli ega käsitsi WordPressi installatsiooni.
Kliendi eraldamine: iga kliendi sait on tõeliselt isoleeritud. Klient, kes installib probleemse pistikprogrammi, mõjutab ainult oma saiti.
Skaalautuvus: uue kliendi lisamine ei nõua uue serveri pakkumist. Konteineri infrastruktuur skaalub hosti võimsusele ja lisavõimsuse lisamine on lihtsalt täiendavate hosti sõlmede lisamine.
Katastroofi taastamine: kuna iga sait on konteineriseeritud, toimub varundamine ja taastamine konteineri tasandil. Ühe kliendi saidi taastamine ei mõjuta teisi kliente.
Tagasilöök on see, et konteinerhostingu hind ühe saidi kohta on kõrgem kui jagatud hostingu hind. Kuid agentuuride jaoks, kus saidi töökindlus ja kliendi eraldamine on mitteläbiräägitavad, on majanduslikult mõttekas – eriti kui arvestada sisseelamise aja kokkuhoidu.