Blogi
Docker WordPressille: Miksi eristetyt säiliöt muuttavat kaiken
Yksi asiakas ei voi kaataa toista. Yksi sivusto ei voi tartuttaa toista. Tämä on PAGEnzan isännöintialustan arkkitehtuuri.
Perinteinen WordPress-isännöinti sijoittaa useita sivustoja yhdelle palvelimelle. Ne jakavat PHP:n, tiedostojärjestelmän käytön ja usein myös tietokantapalvelimen. Tämä toimii, kunnes se ei toimi – ja silloin, kun se ei toimi, se on vakava ongelma.
PAGEnza varaa jokaisen WordPress-sivuston omaan Docker-säiliöönsä. Tämä julkaisu selittää, mitä se tarkoittaa käytännössä ja miksi se on tärkeää useita asiakassivustoja hallinnoiville toimistoille.
Jaetun isännöinnin ongelma
Tavallisella jaetulla isännöintisuunnitelmalla tai jopa perus-VPS:llä, jossa on useita WordPress-asennuksia:
Resurssien kilpailu: yhden sivuston liikennepiikki hidastaa kaikkia muita palvelimen sivustoja. Huonosti optimoitu lisäosa sivustolla A heikentää sivuston B suorituskykyä.
Tietoturvan vuoto: jos yksi WordPress-asennus vaarantuu – haavoittuvan lisäosan, heikon salasanan tai vanhentuneen ydinversion kautta – hyökkääjä, joka saa tiedostojärjestelmän käyttöoikeuden, voi usein lukea tiedostoja muista saman palvelimen sivustoista.
PHP-versioiden ristiriidat: sivusto A tarvitsee PHP 7.4:n vanhaa lisäosaa varten. Sivusto B tarvitsee PHP 8.2:n uudempaa varten. Jaetussa isännöinnissä valitset yhden.
Tietokannan altistuminen: jaetut tietokantapalvelimet tarkoittavat, että yksi väärin määritetty käyttäjäoikeus voi paljastaa muiden sivustojen tiedot.
Docker-säiliöt ratkaisevat kaikki nämä infrastruktuuritasolla.
Mikä säiliö oikeastaan on
Docker-säiliö on kevyt, eristetty prosessi, jolla on oma:
- Tiedostojärjestelmä (säiliö ei näe tiedostoja rajojensa ulkopuolella)
- Verkkopino (oma IP-osoite, omat portit)
- Prosessitila (se ei näe muiden säiliöiden prosesseja)
- Resurssirajoitukset (CPU- ja muistirajat)
Se jakaa isäntäytimen muiden säiliöiden kanssa, mutta kaikki ytimen yläpuolella oleva on eristettyä. Se ei ole täysi virtuaalikone – se käynnistyy sekunneissa, ei minuuteissa, ja käyttää vain murto-osan resursseista.
WordPressille yksi säiliö ajaa: Nginxiä, PHP-FPM:ää ja WordPress-tiedostoja. Tietokanta ajetaan erillisessä säiliössä, joka on yhdistetty vain kyseiseen WordPress-säiliöön.
Miten PAGEnza varaa sivuston
Kun luot uuden asiakassivuston PAGEnzassa, tässä tapahtuu alle 45 sekunnissa:
- Uusi Docker-säiliö käynnistetään perustason WordPress-kuvasta
- WordPress määritetään tuoreella tietokannalla jaetussa MariaDB-instanssissa (eristetty kyseisen säiliön tunnuksille)
- PAGEnza-lisäosa asennetaan ja aktivoidaan automaattisesti
- Nginx-virtuaali-isäntä määritetään asiakkaan alidomainilla
- SSL myönnetään Let's Encryptin kautta
- Säiliö rekisteröidään käänteiseen välityspalvelimeen oikeilla reitityssäännöillä
Asiakas saa URL-osoitteen, kuten clientname.pagenza.com, joka on käytössä 45 sekunnin kuluessa "Luo sivusto" -napin painamisesta. Ei manuaalista palvelimen määritystä, ei SSH:ta, ei DNS-odotteluaikaa (alidomainille – mukautetun domainin DNS-propagaatio on erillinen).
Säiliön eristys käytännössä
Muistirajoitukset: jokaisella säiliöllä on määritettävissä oleva muistiraja. Jos hallitsematon lisäosa aiheuttaa muistipiikin yhdellä asiakkaan sivustolla, se ei voi kuluttaa muiden säiliöiden varattua muistia. Sivusto voi hidastua tai palauttaa 503 – mutta se ei vaikuta muihin asiakkaisiin.
Tiedostojärjestelmän eristys: asiakkaan A WordPress-tiedostot ovat täysin näkymättömiä asiakkaan B säiliölle. Asiakkaan A sivuston vaarantuneella lisäosalla ei ole polkua asiakkaan B tiedostoihin.
Verkon eristys: säiliöt kommunikoivat vain määriteltyjen verkkosiltojen kautta. Asiakkaan A tietokantasäiliö hyväksyy yhteyksiä vain asiakkaan A WordPress-säiliöstä – ei mistään muusta järjestelmän säiliöstä.
PHP per säiliö: koska jokainen säiliö ajaa omaa PHP-FPM-instanssiaan, voit ajaa eri PHP-versioita eri asiakkaille. Asiakkaan A vanha lisäosa, joka tarvitsee PHP 7.4:ää, toimii hyvin asiakkaan B modernin pinon rinnalla PHP 8.2:lla.
Mukautetut domainit
Oletusasetus antaa jokaiselle asiakkaalle *.pagenza.com -alidomainin. Asiakkaiden, jotka haluavat oman domaininsa, prosessi on:
- Asiakas osoittaa domaininsa A-tietueen PAGEnza-palvelimen IP-osoitteeseen
- PAGEnza-hallintapaneelissa syötät mukautetun domainin
- Käänteisen välityspalvelimen määritys päivitetään automaattisesti
- SSL myönnetään mukautetulle domainille Let's Encryptin kautta
WordPressin siteurl- ja home-asetukset päivitetään vastaamaan. Asiakkaan näkökulmasta heidän sivustonsa toimii heidän domainissaan – ei uudelleenohjausta, ei alidomainia näkyvissä kävijöille.
Mitä tämä tarkoittaa toimistoille
Käytännön hyöty useita asiakassivustoja ajaville toimistoille:
Käyttöönoton nopeus: uuden asiakassivuston varaus kestää alle minuutin. Ei palvelimen asetuksia, ei cPaneliä, ei manuaalista WordPress-asennusta.
Asiakkaiden erottelu: jokainen asiakkaan sivusto on aidosti eristetty. Asiakas, joka asentaa ongelmallisen lisäosan, vaikuttaa vain omaan sivustoonsa.
Skaalautuvuus: uuden asiakkaan lisääminen ei vaadi uuden palvelimen varaamista. Säiliöinfrastruktuuri skaalautuu isännän kapasiteettiin, ja kapasiteetin lisääminen on vain uusien isäntäsolmujen lisäämistä.
Katastrofipalautus: koska jokainen sivusto on säiliöity, varmuuskopiointi ja palautus toimii säiliötasolla. Yhden asiakkaan sivuston palauttaminen ei vaikuta muihin asiakkaisiin.
Haittapuolena on, että säiliöisännöinti maksaa enemmän sivustoa kohden kuin jaettu isännöinti. Mutta toimistoille, joille sivuston luotettavuus ja asiakkaiden erottelu ovat ehdottomia, talous toimii – etenkin kun käyttöönottoajan säästöt otetaan huomioon.