Több PHP-s webkiszolgálás felépítése debootstrap segítségével

Nagy vonalakban leírom, én hogyan valósítom meg. Éles rendszeren, nem sandbox módban...

A cél

A webhosting világában matatók jól tudják, hogy egy-egy nagyobb frissítés - leginkább mostanában - hatással lehet a weblapok működésére. Ezért a szolgáltatónak készülnie kell arra is, hogy egy site nem feltétlen működik majd az utolsó verziós PHP-val, ami ugye mondhatjuk: a legnépszerűbb webes programozási nyelv.

A cél tehát az, hogy támogassuk a régebbi PHP verziót használó honlapokat is. Különböző megfontolásokból én a fentebb vázolt megoldást választottam. Az operációs rendszer debian linux.

Megvalósítás

A weblapok üzemeltetésénél alapvető követelmény a fokozott biztonság. Ezért a webszervereket, tehát a weblapok kiszolgálását, minden józan gondolkodású rendszergazda burokba, jailbe, chrootba zárja, ezzel egy külön "kis" kiszolgáló környezetet megteremtve. Erre én a debootstrap programot használom, ami képes a rendszeren belül rendszert telepíteni, akár eltérő verziót is, mint maga a főrendszer. Ezt kihasználva pedig létre tudunk hozni egy olyan burkot, amiben gyári csomagokat tudunk könnyedén telepíteni (pl. apt, dbkg, aptitude segítségével).

Így kaphatunk egy olyan jailt is (nálam szükség is van rá), amiben gyári PHP 5.2-es van, külön apache webszerverrel. Mivel napjainkban a legfrissebb PHP ág az 5.4-es, nekem pedig szükségem van 5.3 és 5.2 verzióra is, összesen három különböző burok van felépítve.

Hogyan kerül egy-egy webcím (domain) a megfelelő kiszolgálási útvonalra? Nos, erről gondoskodik a standard, 80-as porton figyelő nginx proxy, ami hostnév (pl. valami.hu) alapján a megfelelő útra tereli át a kiszolgálást, a beállításai szerint. Kifelé mindez teljesen transzparens, tehát a kliens minden történést úgy lát, mintha a szerver 80-as portjával beszélgetne, pedig minden apache (sőt, ha úgy tetszik nginx + PHP-FPM, vagy akár más webszerver) saját, belső porton csücsül. Természetesen ezek a portok tűzfalazva vannak, nem publikusak az internet felé.

A jailekről...

A burkok szükségszerűen tartalmaznak saját programokat egyébként (cron, belső portos alap postfix, ssh-kiszolgáló), tehát olyanok, mint egy önálló rendszer. Egyikben sincs adatbázis-kiszolgáló (MySQL, PostgreSQL), ezek a külső főburokban működnek (vagy más szerveren). Lemezeket sem tartalmaznak, ezt mount, vagy bindelt mount biztosítja (egyébként LVM alapokon). A weboldalak külön user, group jogosultságokkal futnak jól bekorlátozva. Az FTP is ugyanezeket a jogokat használja a file-műveleteknél. Sőt, szükség esetén még SSH belépés is kiosztható a felhasználóknak.

Az egyedi burkok előnye, hogy esetleges behatolásnál a külső fő rendszert nehezebb megközelíteni. Ám jól kitalálva kell a belső működési feltételeket megteremteni, nehogy az nyújtson gyenge pontot a teljes rendszerre nézve.

Ez a kiépítés nálam évek óta jól teljesít. Elég speciális, már amennyire tudom, illetve nemigen találkoztam még vele máshol, de szívesen venném, ha jelezne valaki, aki ilyet, vagy hasonlót üzemeltet, illetve megoszthatnánk tapasztalatainkat. 🙂

Több PHP-s webkiszolgálás felépítése debootstrap segítségével
0 szavazat, 0.00 átlagos pontszám (0%-ra értékelve)

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.