ugrás a tartalomhoz

Különítsd el webalkalmazásod publikus részét

Török Gábor · 2008. Május. 16. (P), 06.57
A PHP fejlesztőket megcélzó Rails blogot már többször is elővettük a Weblabor hasábjain, nemrég PHP to Ruby Reference ötletüket blogmarkoltuk, ahol több tucat PHP-ben megismert függvény Rails alatti használatát mutatják be a készítők. A Rails for PHP programmers legutóbbi bejegyzésében – melynek tartalma a vele egybecsengő nevű könyvben kerül bővebb kifejtésre – arra hívja fel a figyelmet, hogy webalkalmazás fejlesztés során csak azokat az állományokat tegyük a webszerveren keresztül láthatóvá, amelyeket tényleg szükséges, hogy a kliens elérhessen; konfigurációs fájlokat, önállóan nem meghívott kódkomponenseket stb. helyezzük a wwwroot fölé.

Noha a tanács banálisnak tűnhet, rendre lehet találkozni olyan megvalósításokkal, amelyek ennek a megfontolásnak nem tesznek eleget. Ezzel pedig elkerülhetők lennének olyan baklövések, amelyek egyike friss élményem. Az érintett személy PHP fájlok szerkesztésére használt (szerver oldali) editora .php~ kiterjesztéssel szorgosan biztonsági másolatot készített a megváltoztatott állományokról – persze ugyanabban a könyvtárban. A .php~ fájlokat a webszerver – egyéb intézkedés híján – sima szövegként kiszolgálta, így a config.php módosításakor jó eséllyel annak tartalma config.php~-ként elérhető volt az érdeklődők számára. Természetesen megfelelő kiszolgáló oldali beállításokkal, helyes biztonsági mentés módszertannal stb. ez nem fordulhatott volna elő, de – akár ezek hiányában is – ha a konfiguráció nem lett volna nyilvános útvonalon, most nem lenne apropója ennek a bejegyzésnek.
 
1

kedvencem

Hodicska Gergely · 2008. Május. 16. (P), 15.15
Ennél már csak azt szeretem jobban, amikor minden a webroot alatt van, és szanaszét .htaccess fájlokkal van kidédve, hogy ne lehessen elérni az adott fájlokat. Ez egyrészt ugye elég sérülékeny, elég ha kimegy egy hibás apache konfig (AllowOverride None), plusz vicces, hogy egy teljesítményt csökkentő eszközt vetek be arra, hogy védjem azokat a fájlokat, amelyeknek nem is kéne ott lenniük. :)


Üdv,
Felhő
2

enyim

ksgy · 2008. Május. 16. (P), 16.57
az enyem: index.php?url=../lapelemek/szavazobox.php :)
3

Vannak durvábbak

janoszen · 2008. Május. 17. (Szo), 18.14
Ennél vannak durvábbak. index.php?url=/etc/passwd és a shadow file a haverja. :)
4

egy htaccess

winston · 2008. Május. 17. (Szo), 18.28
előre jelezném, hogy nem a webroot-ba való pakolás mellett kampányolok, félreértés ne essék, véletlenül se. szóval: tudtommal a htaccess teljesítménybeli problémáinak nagy része abból adódik, hogy a minden mappában próbál htaccess file-t keresni. de ez kikapcsolható, ha minden igaz. így viszont, ha egy egyszerű, jól megfogalmazott htaccess-ünk van a webrootban, illetve kipakoljuk webrooton kívül, amit lehet, akkor elég jó teljesítmény-biztonság arányt kapunk, és lesz szép url-ünk is
5

Japp

janoszen · 2008. Május. 17. (Szo), 19.20
Ott a pont. Nyilvános webhostok esetén nincs lehetőség a vhost fájlhoz való hozzáférésre, itt az általad mondott módszer a megoldás.
6

terhelés

winston · 2008. Május. 17. (Szo), 19.30
illetve nyilván egy nyilvános webhostra normális ember nem tesz nagyterhelésű weboldalt
7

OFF: Nómális?

janoszen · 2008. Május. 17. (Szo), 19.44
Hát... azért láttunk már erre is példát... XD
8

minden kéréskor fel kell dolgozni

Hodicska Gergely · 2008. Május. 17. (Szo), 21.53
Ha szempont a terhelés, akkor kerülendő a .htaccess, még ha csak egy van belőle, akkor is minden egyes kéréskor be kell olvasni, fel kell dolgozni feleslegesen. Adott eseteben szépen látszik pl. muninon IO-ban, hogy mikor van .htaccess be-kikapcsolva.

Nyilván ha nincs más választásod, akkor használod, de ha teheted, akkor célszerű vhost konfigba áttenni a dolgokat és kikapcsolni. Apró szopás van vele, mert a mod_rewrite rule-ok kicsit másképp működnek (belefutottunk egy apache bugba, azt hiszem ilyenkor nem a docroothoz képest kezelte a hivatkozásainkat, hanem a filerendszer rootjához képest), meg van egy PHP bug is: a $_SERVER['SCRIPT_NAME'] nem jól állítódik be (http://bugs.php.net/bug.php?id=38141).


Üdv,
Felhő
9

nyilván ez a...

winston · 2008. Május. 18. (V), 08.56
...legtisztább megoldás, itt én most kompromisszumos megoldást próbáltam mondani. :) de értelemszerűen az oldal terheltségétől/céljaitól/lehetőségeitől függ az optimális megoldás.
10

Szolgáltató, Apache

saxus · 2008. Május. 19. (H), 16.39
Ehhez hozzátenném, hogy ha tényleg számít a terhelés és a szolgáltató nem engedi a vhost fájlba helyezését a confignak, akkor elgondolkoznék én egy szolgáltató váltáson (ingyenes izéket most hagyjuk). Egyrészt magával, másrészt az ügyfelével tol ki.

Másrészt ahol tényleg számít a terhelés, ott szerintem már kezdik hanyagolni az apache-t.
11

Apache - terhelés

Hodicska Gergely · 2008. Május. 19. (H), 18.02
Másrészt ahol tényleg számít a terhelés, ott szerintem már kezdik hanyagolni az apache-t.
Dinamikus tartalom kiszolgálásra még mindig Apache-ot szoktak a legtöbben használni, elég ritka a erre a lighttpd + FastCGI páros. Szerintem azzal kevered, hogy statikus tartalmat nem illik ilyen környezetben Apache-csal kiszoláglni. Ha megnézed Facebook, Yahoo stb. is Apache-ot használnak, náluknál jobban nem számíthat a terhelés. :)


Üdv,
Felhő
12

Korábban volt

saxus · 2008. Május. 20. (K), 03.37
Apachenak is az a nagy előnye, hogy előbb volt, LAMP nagyon bejáratott kulcsszó. Sokan félnek az újítástól és/vagy kényelmes nekik az, amit már ismernek, mert nem kell mást is megnézni.

A Facebook vagy Yahoo meg elég sarkított példa, hozhatnék példának több nagyobb oldalt, ahol lighttpd-ről megy a dinamikus tartalmak kiszolgálása. Mi is azért tértünk át sok helyen Lightyre, mert gyorsabb. Hozhatnék példának egy olyan 3 Ghz-s P4-s gépet, ami pont azért nem lett még cserélve, mert elbírja a nagyobb tüskéket a kérések számában (rajta hostolt oldal jellegéből adódóan vannak ilyenek). Apache-l már a normál terhelést se biztos, hogy megbízhatóan kiszolgálná.

Na de ezzel befejezem az offtopicot.
13

facebook relatíve új dolog

Hodicska Gergely · 2008. Május. 20. (K), 05.08
Pont a facebook relatíve új dolog, meg egy Yahoo esetében sem hinném, hogy olyan emberek vannak ott, akik félnek a váltástól.

meg elég sarkított példa, hozhatnék példának több nagyobb oldalt, ahol lighttpd-ről megy a dinamikus tartalmak kiszolgálása. Mi is azért tértünk át sok helyen Lightyre, mert gyorsabb. Hozhatnék példának egy olyan 3 Ghz-s P4-s gépet, ami pont azért nem lett még cserélve, mert elbírja a nagyobb tüskéket a kérések számában (rajta hostolt oldal jellegéből adódóan vannak ilyenek). Apache-l már a normál terhelést se biztos, hogy megbízhatóan kiszolgálná.
Ezek szerint együtt volt kiszolgálva a statikus és a dinamikus tartalom is. Erre utaltam fent, statikus tartalomra túlzó Apache-ot használni, ráadásul ha még azt is használna, akkor is eltérő beállításokkal lenne érdemes futtatni (lásd keepalive).

hozhatnék példának több nagyobb oldalt, ahol lighttpd-ről megy a dinamikus tartalmak kiszolgálása.
Édekelnek ilyen példák. Én ritkán látok ilyesmit, meg körülöttem lévő rendszergazdák is általában az Apache-ot preferálják erre a célra. Nyilván ez még nem érv semmire, de mellett meg ott futott pl. egy szétoptimalizált lighttpd statikus tartlmakra, vagy szintén lighttpdvel volt megoldva flv seekelhető lejátszása is, tehát elég jól képben voltak ezzel az eszközzel.

Én nem vagyok rendszergazda, így ilyen témában teljes biztonsággal nem mernék állítani semmit, viszont a fentit tapasztalom általában. Szerintem itt arról lehet szó, hogy dinamikus tartalom esetén már nincs akkora előnye a lighttpdnek, viszont pl. apache meg funkció gazdagabb. Igazából nem is a gyorsaságra reflektáltam, hanem arra, hogy "kezdenek leszokni az apache-ról".


Üdv,
Felhő
14

Pontosítok

saxus · 2008. Május. 20. (K), 14.06
Pont a facebook relatíve új dolog,


Látom, félreértettük egymást. Arra gondoltam, hogy az Apache egy régi jól bejáratott fogalom, sokaknak a webszerver egyenlő a LAMP-al. Szerintem nyílt forráskódú körökben is jellemző valamennyire ez a "bebetonozódás".

Ezek szerint együtt volt kiszolgálva a statikus és a dinamikus tartalom is.


Igen, de két dolgot jegyeznék meg: egyik, hogy nem írtam, hogy milyen tartalom kiszolgálásáról volt szó (gondolom nem véletlen, hogy a Youtube és a Wikipedia is használja). Másik, hogy nálunk - főleg, mikor tüske van a kérésben - legelőször az index.php kapja a terhelést, csak utána szedi a statikus részét az oldalnak - ha még nincs cachelve.

Édekelnek ilyen példák. Én ritkán látok ilyesmit,


Torrent oldalak jelentős része valamilyen alternatív böngészőről megy. Hozhatnám példának az egyik legnagyobbat, a The Pirate Bayt is. Ezek közül nem egy használ PHP alapú backendet, ott viszont csak dinamikus tartalom van. De például az egész Sourceforge.net is Lighttpd-ről megy.

Szerintem itt arról lehet szó, hogy dinamikus tartalom esetén már nincs akkora előnye a lighttpdnek, viszont pl. apache meg funkció gazdagabb.


Persze, maga a web-szerver nem teszi gyorsabbá a PHP értelmező futását, ez tény. Ha azt nézzük a FastCGI még valamivel lassabb is, mint a mod_php, előnye is abból adódik a Lightynek, hogy egyszerűbb böngésző (persze a FastCGI-nek vannak egyéb előnyei is, de ez most más kérdés). Funkciógazdagság meg megint egy olyan téma, hogy van-e rá igény. Ha viszont nincs igény a plusz funkciókra (sokan pl. ezért maradtal 1.3-s Apache-nál is), akkor szerintem egyszerűbb egy szoftverre bízni az egész oldalt, mint több különbözőre (feltéve, ha nincs rá valami külön indok).

hanem arra, hogy "kezdenek leszokni az apache-ról".


Persze, én se azt írta, högy tömegesen migrálnak az Apache-ról, hanem arra, hogy ahol van igény a nagyobb teljesítményre, ott egyre inkább előjön az, hogy valami alternatívát keresnek.
15

Szezon vs...

Kaszás Balázs · 2008. Május. 20. (K), 20.43
Konzekvensen kevered a böngészőt a http szerver fogalmával.
16

Tényleg..

saxus · 2008. Május. 21. (Sze), 04.32
Igen, nem figyeltem eléggé, gyorsan akartam válaszolni. De azért remélem az egyértelmű, hogy webszervert akartam írni.
17

Az Apache 2.2 dinamikus teljesítményben a Lighttpd felett van.

Adam · 2008. Május. 27. (K), 22.25
Persze, én se azt írta, högy tömegesen migrálnak az Apache-ról, hanem arra, hogy ahol van igény a nagyobb teljesítményre, ott egyre inkább előjön az, hogy valami alternatívát keresnek.


Ezen fórum bejegyzésben is láthatod, hogy a legújabb Apache 2.2 már rég túlteljesít mod_php használata esetén a Lighttpd FastCGI megoldásán. Igen, régen még ez vésődött belénk, hogy az Apache 1.3 az gyorsabb, mint a 2.0, és aztán a Lighty meg méginkább, csak aztán dolgoztak a fiúk. Célszerű megnézni mindíg a legújabb stabil verziókat, hogy mit tudnak, mi változott. Látható volt ez a PHP4 vs PHP5.0 vs PHP5.2 nyomon is.

Nálunk bent is a teljesítmény számít, és bizony a rendszergazdák statikus tartalom kiszolgálására Lighty-t, PHP-k számára pedig Apache 2.2-t javasoltak.
18

aktualitás

Hodicska Gergely · 2008. Május. 27. (K), 22.56
Na ugye. :) Bár ez is van vagy két éves teszt, jó lenne egy aktuális infó, melyikből mennyit lehet kifacsarni. Bár az is látszik, hogy elég közel vannak egymáshoz. Ádám: nálatok úgyis unatkoznak a rendszergazdák ;), nyomathatnának egy tesztet. :P


Üdv,
Felhő