Blogg
Docker för WordPress: Varför isolerade containrar förändrar allt
En klient kan inte krascha en annan. En webbplats kan inte infektera en annan. Detta är arkitekturen bakom PAGEnzas hostingplattform.
Traditionell WordPress-hosting placerar flera webbplatser på en server. De delar PHP, de delar filsystemåtkomst och ofta delar de en databasserver. Detta fungerar tills det inte gör det – och när det inte gör det, är det ett allvarligt problem.
PAGEnza provisionerar varje WordPress-webbplats i sin egen Docker-container. Det här inlägget förklarar vad det innebär i praktiken och varför det är viktigt för byråer som hanterar flera klientwebbplatser.
Problemet med delad hosting
På en typisk delad hostingplan eller till och med en grundläggande VPS med flera WordPress-installationer:
Resurskonkurrens: en webbplats som får en trafikökning saktar ner alla andra webbplatser på servern. Ett dåligt optimerat plugin på webbplats A försämrar prestandan på webbplats B.
Säkerhetsläckage: om en WordPress-installation blir komprometterad – via ett sårbart plugin, ett svagt lösenord eller en föråldrad kärnversion – kan en angripare som får filsystemåtkomst ofta läsa filer från andra webbplatser på samma server.
Konflikter i PHP-versioner: webbplats A behöver PHP 7.4 för ett gammalt plugin. Webbplats B behöver PHP 8.2 för ett nyare. På delad hosting väljer du en.
Exponering av databas: delade databasservrar innebär att en felkonfigurerad användarbehörighet kan exponera andra webbplatsers data.
Docker-containrar löser alla dessa problem på infrastrukturell nivå.
Vad en container faktiskt är
En Docker-container är en lättviktig, isolerad process som har sitt eget:
-
Filsystem (containern kan inte se filer utanför sina gränser)
-
Nätverksstack (sin egen IP-adress, sina egna portar)
-
Processutrymme (den kan inte se andra containers processer)
-
Resursgränser (CPU- och minnesbegränsningar)
Den delar värdkärnan med andra containrar, men allt ovanför kärnan är isolerat. Det är inte en fullständig virtuell maskin – den startar på sekunder, inte minuter, och använder en bråkdel av resurserna.
För WordPress kör en enda container: Nginx, PHP-FPM och WordPress-filer. Databasen körs i en separat container, ansluten endast till den specifika WordPress-containern.
Hur PAGEnza provisionerar en webbplats
När du skapar en ny klientwebbplats i PAGEnza, här är vad som händer på under 45 sekunder:
- En ny Docker-container startas från en grundläggande WordPress-image
- WordPress konfigureras med en ny databas på den delade MariaDB-instansen (isolerad till den specifika containerens autentiseringsuppgifter)
- PAGEnza-pluginet installeras och aktiveras automatiskt
- Ett Nginx virtuellt värdnamn konfigureras med klientens underdomän
- SSL utfärdas via Let's Encrypt
- Containern registreras i omvänd proxy med korrekta routingregler
Klienten får en URL som klientnamn.pagenza.com som är live inom 45 sekunder efter att ha klickat på "Skapa webbplats". Ingen manuell serverkonfiguration, ingen SSH, ingen väntetid för DNS (för underdomänen – DNS-propagering för anpassade domäner är separat).
Containerisolering i praktiken
Minnesgränser: varje container har en konfigurerbar minnesgräns. Om ett okontrollerat plugin orsakar en minnesökning på en klients webbplats, kan det inte förbruka minne som allokerats till andra containrar. Webbplatsen kan sakta ner eller returnera en 503 – men det påverkar inte andra klienter.
Filsystemisolering: WordPress-filerna för klient A är helt osynliga för klient B:s container. Ett komprometterat plugin på klient A:s webbplats har ingen väg till klient B:s filer.
Nätverksisolering: containrar kommunicerar endast via definierade nätverksbryggor. Databascontainern för klient A accepterar endast anslutningar från klient A:s WordPress-container – inte från någon annan container på systemet.
PHP per container: eftersom varje container kör sin egen PHP-FPM-instans, kan du köra olika PHP-versioner för olika klienter. Klient A:s äldre plugin som behöver PHP 7.4 körs bra tillsammans med klient B:s moderna stack på PHP 8.2.
Anpassade domäner
Standardinställningen ger varje klient en underdomän *.pagenza.com. För klienter som vill ha sin egen domän är processen:
- Klienten pekar sin domäns A-post till PAGEnza-serverns IP
- I PAGEnza-instrumentpanelen anger du den anpassade domänen
- Omvänd proxy-konfigurationen uppdateras automatiskt
- SSL utfärdas för den anpassade domänen via Let's Encrypt
WordPress siteurl- och home-alternativen uppdateras för att matcha. Ur klientens perspektiv fungerar deras webbplats bara på deras domän – ingen omdirigering, ingen underdomän synlig för besökare.
Vad detta innebär för byråer
Den praktiska fördelen för byråer som driver flera klientwebbplatser:
Snabb onboarding: provisionering av en ny klientwebbplats tar under en minut. Ingen serveruppsättning, ingen cPanel, ingen manuell WordPress-installation.
Klientseparation: varje klients webbplats är genuint isolerad. En klient som installerar ett problematiskt plugin påverkar bara sin egen webbplats.
Skalbarhet: att lägga till en ny klient kräver inte provisionering av en ny server. Containerinfrastrukturen skalar till värdens kapacitet, och att lägga till mer kapacitet är en fråga om att lägga till fler värdnoder.
Katastrofåterställning: eftersom varje webbplats är containeriserad, fungerar säkerhetskopiering och återställning på containernivå. Att återställa en enskild klients webbplats påverkar inte några andra klienter.
Nackdelen är att containerhosting kostar mer per webbplats än delad hosting. Men för byråer där webbplatsens tillförlitlighet och klientseparation är icke-förhandlingsbara, fungerar ekonomin – särskilt när tidsbesparingarna för provisionering beaktas.