A webszerver a mai világ legfontosabb része. Egyre több és több működik a weben, amihez jól skálázható, megbízható kiszolgálókra van szükség. Nem mindegy, hogy a webszervered az első nagyobb terheléstől bedől, te pedig csak állsz és tehetetlen vagy, vagy amikor látod, hogy a terhelés nagyobb, mint amire számítottál, könnyedén tudod növelni a kapacitást.
A nagy teherbírás kétféle úton érhető el. Az első, hogy optimalizálod a szerveredet: az egyes feladatokat különbontod. Egyszerű példával élve, sose fusson a PHP alkalmazás a webszerveredben. Felesleges és nehezen skálázható. A webszerver legyen egy önálló rendszer, ami ha kell, elküldi a kérést a backendnek, ami lehet egy PHP FPM szerver a fenti példánál maradva.
A végletekig leegyszerűsített webszerver funkció nagy előnye, hogy állapotfüggetlen, így könnyen skálázható mind vertikális, mind horizontális irányban. Az Apache jól skálázható mindkét módon. Tehetsz alá erősebb/több CPU-t, több memóriát vagy több gépet. Az előbbi (több CPU/RAM) erősen korlátozott, míg az utóbbi (több gép) gyakorlatilag korlátlan lehetőséget nyújt.
Ahhoz, hogy ezeket könnyen kihasználhasd, kell egy profin összeállított Apache image, amiből akár egy, akár ezer konténert kell indítani, nincs lényeges különbség. Én ezt az image-et Alpine alapon készítem, mert annak nem csak a diszk, de memória igénye is lényegesen kisebb, így jobban teljesít ugyan azon a vason. Bár van a neten sok kész, jól működő Apache Docker image, én itt is a sajátomat szeretem.
A saját image-ben annyi van benne, amire nekem van szükségem. Ráadásul az Alpine gyári csomagjaiból feltett Apache-nak köszönhetően egyszerűen és gyorsan tudom frissíteni.
A webszerver másik része a HTTPS. Komolyabb rendszereknél ezt megint külön proxy intézi, de kisebbnél ez sokszor felesleges. Így olyan image-et készítettem, mely ha kell, tud SSL-t is. Ha nem, egyszerűen nem kapcsolom be amikor futtatom. Ha viszont bekapcsolom, akkor kell egy megbízható tanúsítvány is hozzá. A saját magával aláírtat gyorsan felejtsd el. Az EFF Letsencrypt szolgáltatásának köszönhetően egyszerűen (automatikusan) és ingyen tudsz teljesen hiteles tanúsítványhoz jutni.
A képzésen megtanulod, hogyan készítsd el a saját Apache image-edet Dockerhez, miközben megmutatom, hogy én mit és miért teszek bele, hogyan állítom be (a DevOpsAkademia.hu alatt is futó szervert). A képzésen elkészülő image utána kiváló alap a sajátodhoz. Szintén megtanulod a Letsencrypt tanúsítvány készítését és automatikus megújítását is. Az eredmény itt is egy egyszerű, cron-ból futtatható image lesz, ami frissíti a webszervered tanúsítványát, amikor kell. A cél itt is a teljes automatizálás.
Az ideális PHP környezet csak egy weboldalt futtat, független a webszervertől, jól skálázható. Ennek elérésére az egyik legjobb módszer, ha a PHP FastCGI (FPM) szerverét futtatod egy önálló Docker konténerben, a session adatokat Redis adatbázisban tartod cluster-szinten elosztva. Ha mindehhez a minimalista Alpine Linuxot használod, akkor máris megvan a kisebb memória-igényű, skálázható rendszer. Ismerd meg a DevOpsAkademia.hu alatt is működő környezet PHP részét és tanuld meg magad elkészíteni és a saját igényeidhez testre szabni!