Apache00.qxd
10/13/2008
10:35 AM
Page xiii
Elõszó
Az Apache webkiszolgáló figyelemreméltó szoftver. Az Apache Software Foundation által terjesztett alapcsomag teljeskörû, hatékony szolgáltatásokat nyújt, miközben komoly erõfeszítéseket tettek annak érdekében, hogy ne duzzasszák fel a méretét. A csomagot az egyik tulajdonsága különösen figyelemreméltóvá teszi: úgy tervezték meg, hogy bõvíthetõ legyen. Röviden: ha a polcról leemelt Apache csomag nem tudja azt, amit szeretnénk, általában a kívánságunknak megfelelõen bõvíthetjük a képességeit. Az Apache Software Foundation által terjesztett csomag részeként bõvítmények (úgynevezett modulok) tucatjaihoz jutunk hozzá, és ha mégsem találunk köztük olyat, amely megfelelne az igényeinknek, felhasználók milliói lehetnek a segítségünkre, akik közül nagy az esélye, hogy valaki már megalkotta a kívánt modult, vagy kifõzte a kiszolgáló továbbfejlesztésének azt a receptjét, amely ki fogja elégíteni az igényeinket. Ez a kötet is ilyen receptek gyûjteménye. A receptek forrása a Usenet-hírcsoportokban talált tippek, az Apache FAQ, az Apache-hoz kapcsolódó levelezõlisták, a „hogyan lehet…” típusú levelekre írt válaszok, az IRC-csevegõcsatornákon feltett kérdések és problémaleírások, valamint az önkéntes közremûködõk munkája. A könyvben szereplõ minden recept egy-egy olyan valós problémára ad választ, amellyel vagy mi magunk találkoztunk, vagy mások, akik a mi segítségünket kérték. A témák a legkülönfélébb területeket fedik le, a forráskód alapszintû lefordításától az olyan összetettebb problémákig, mint az SSL-titkosítást igénylõ URL-ek kezelése. Több mint száz különbözõ problémát és megoldást gyûjtöttünk össze, nagyjából aszerint, hogy milyen gyakran merülnek fel, és többé-kevésbé témakörök szerint csoportosítottuk õket, ahogy az 1. receptben láthatjuk.
Apache00.qxd
xiv
10/13/2008
10:35 AM
Page xiv
Apache receptek
Receptjeink elsõsorban azoknak a webmestereknek szólnak, akik egy teljes kiszolgálóért felelnek, de sok közülük ugyanilyen hasznos lehet azoknak a felhasználóknak a számára, akik saját webkönyvtáraik viselkedését szeretnék testreszabni .htaccess fájlokon keresztül. Az Apache receptek-et gyakorlati útmutatónak szántuk, nem elméleti munkának: receptrõl receptre, fejezetrõl fejezetre olvasva nem tárul fel elõttünk egy történet („Roy Fielding a Könyvtárban egy RFC-vel!”*). A kötet célja, hogy használható megoldásokat nyújtson konkrét problémákra, amelyeket a tartalomjegyzékbõl vagy a tárgymutatóból kereshetünk ki.
A könyv tartalma Mivel a könyvünkben szereplõ anyag nagy része kérdésekre adott válaszokból és konzultációkból állt össze, próbáltuk a lehetõ legteljesebbé tenni. Ez természetesen azt jelenti, hogy olyan kérdésekre vonatkozó „recepteket” is belevettünk, amelyekre jelenleg nincsenek kielégítõ megoldások (legalábbis tudomásunk szerint). Ezt nem azért tettük, hogy felcsigázzuk az Olvasó kalandvágyát, vagy hogy idegesítsük, hanem azért, hogy az anyag minél teljesebb legyen, és ne tûnjön úgy, hogy bizonyos kérdéseket figyelmen kívül hagytunk. Nagyon kevés probléma marad örökre megoldatlan: az említett receptek lesznek az elsõk, amelyek figyelmet kapnak a könyv webhelyén, illetve a könyv késõbbi, javított kiadásaiban. Ha tudunk valamilyen megoldást valamire, amit a könyv megemlít, de nem magyaráz el részletesen, vagy ami éppen teljesen kimaradt, nyugodtan kapcsolatba léphetünk a szerzõkkel, illetve a kiadó kutatócsapatával, akik a megoldást felteszik a webhelyre, illetve beleveszik a következõ kiadásokba. Ki tudja, talán éppen mi leszünk azok, akik megoldással szolgálnak egy problémára!
Megjegyzések a célrendszerekkel kapcsolatban A könyvben található receptek két fõbb rendszerre íródtak: Unix-szerû rendszerekre (Linux, FreeBSD és Solaris) és Windowsra. Sok recept rendszerfüggetlen, ezért ezek esetében egyáltalán nem említjük a mögöttes operációs rendszert, illetve hardvert. A szerzõk személyes ízlésébõl és tapasztalataiból kifolyólag a Unix-szerû rendszerekkel kapcsolatos anyag teljesebb, mint a Windows-megoldások, mindazonáltal a Windows rendszerekre vonatkozó receptekhez minden kiegészítést, javaslatot és helyreigazítást örömmel veszünk, és igyekszünk beilleszteni ezeket a késõbbi kiadásokba, illetve közzétenni a webhelyen.
* Homályos hivatkozás a Clue nevû táblás játékra , illetve egy HTTP-fejlesztõre.
Apache00.qxd
10/13/2008
10:35 AM
Page xv
Apache receptek
Egyéb könyvek Számos könyv kapható az Apache webkiszolgálóról és annak mûködésérõl, többek között az alábbiak: • Ben és Peter Laurie: Apache: The Definitive Guide (harmadik kiadás, O ’Reilly) • Peter Wainwright: Pro Apache (harmadik kiadás, Apress) • Rich Bowen és mások: Apache Administrator’s Handbook (Macmillan) Néhány weboldalt is érdemes szemmel tartani, amelyeken az Apache-ról szóló könyvekrõl tájékozódhatunk: • http://Apache-Server.Com/store.html • http://httpd.apache.org/info/apache_books.html
Egyéb források A könyveken kívül az Interneten is rengeteg információt találhatunk: webhelyeket, levelezõlistákat, valamint Usenet-hírcsoportokat, amelyeket az Apache webkiszolgáló használatának és felügyeletének szenteltek. A webhelyek száma végtelen, az aktív információforrások leghasznosabbjai közül azonban felsorolunk néhányat: • A comp.infosystems.www.servers.unix és comp.infosystems.www.servers.ms-windows Usenet-hírcsoportok. Bár ezek nem kifejezetten az Apache-ról szólnak, sok levél foglalkozik vele, és a hírcsoportban tapasztalt Apache-felhasználókkal is eszmét cserélhetünk. Ha nincs hírcsoport-elérésünk, vagy nem tudjuk, hogyan érhetjük el a Usenet-et, látogassunk el a http://groups.google.com/ címre. • Az Apache Today webhely a http://apachetoday.com/ címen, amelyet az Internet.com üzemeltet. Ez a webhely rendszeresen közöl cikkeket az Apache webkiszolgálóról és arról, hogy miként hozhatjuk ki belõle a legtöbbet. • A
[email protected] levelezõlistára olyanok írnak, akik különbözõ mértékû tapasztalatttal rendelkeznek az Apache szoftverrel kapcsolatban, és a lista résztvevõi között megtalálhatjuk az Apache fejlesztõinek némelyikét is. A listára csak a feliratkozott felhasználók írhatnak. Ha csatlakozni szeretnénk a listához, látogassunk el a http://httpd.apache.org/userslist.html címre. • Az #apache IRC-csatorna az irc.freenode.net hálózaton – vagy akár egy másik IRChálózaton a sok közül, bár a szerzõkkel a freenode hálózatán lehet a legjobb eséllyel találkozni. Meg kell jegyeznünk, hogy a fentiek egyike sem „hivatalos” támogatója az Apache webkiszolgálónak. Hivatalos támogató webhely valójában nem is létezik hozzá, mivel a szofver szabadon hozzáférhetõ, és nagyrészt önkéntesek fejlesztik. Mindazonáltal ha a kérdéseinkre az említett fórumokon keresünk választ, jó eséllyel sikerrel járhatunk.
xv
Apache00.qxd
xvi
10/13/2008
10:35 AM
Page xvi
Apache receptek
A könyv felépítése Kötetünk 13 fejezetre és 2 függelékre oszlik: Az 1. fejezet (Telepítés) az alapértelmezett Apache szoftver telepítésének alapjait tárgyalja, mégpedig forráskódból, Unix-szerû rendszeren, illetve Windowson az Apache fejlesztõi által készített Microsoft Software Installer (MSI) csomag segítségével. A 2. fejezet (Gyakran használt modulok telepítése) a legelterjedtebb külsõ gyártó által készített modulok közül mutatja be néhánynak a telepítését, valamint olyan általános útmutatót ad, amely sok más, kevésbé bonyolult telepítésû modulra is alkalmazható. A 3. fejezet (Naplózás) arra vonatkozóan tartalmaz recepteket, hogy miként rögzíthetjük a webhelyünk vagy webhelyeink felhasználóinak a látogatásait, illetve bemutatja az Apache hibanaplózó rendszerét. A 4. fejezet (Virtuális állomások) azt tárgyalja, hogy miként üzemeltethetünk több webhelyet egyetlen Apache kiszolgálóval, illetve beállítófájlokkal. Az 5. fejezet (Álnevek, átirányítás és átírás) azt írja le, hogyan kezelhetjük az URL-eket, hogyan szabályozhatjuk, hogy mely fájlokra hivatkozzanak, és hogyan módosíthatjuk õket, hogy más webhelyekre mutassanak. A 6. fejezet (Biztonság) az Apache kiszolgáló biztonságossá tételének alapjaival foglalkozik, és megtudhatjuk belõle, hogy miként védhetjük meg a kiszolgálót az Internet veszélyeivel és a támadásokkal szemben. A 7. fejezet (SSL) az azzal kapcsolatos kérdéseket tárgyalja, hogy miként tehetjük Apache webkiszolgálónkat képessé arra, hogy kezelje az SSL-képes böngészõkkel folytatott biztonságos tranzakciókat – ami feltétlenül szükséges, ha olyan érzékeny mûveleteket fogunk végezni, mint az egészségügyi adatok vagy a pénzátutalások kezelése. A 8. fejezet (Dinamikus tartalom) arról szól, hogy miként bõvíthetjük kiszolgálónk képességeit futásidejû parancsfájlokkal, és hogyan futtathatjuk azokat egy adott felhasználó nevében. A 9. fejezet (Hibakezelés) azt írja le, hogyan szabhatjuk testre a webkiszolgáló hibaüzeneteit, hogy webhelyünknek sajátos ízt adjunk. A 10. fejezet (Helyettes kiszolgálók) témája, hogy miként állíthatjuk be az Apache kiszolgálónkat úgy, hogy közvetítõként mûködjön a felhasználók és a weboldalak között, és hogyan érhetjük el, hogy a folyamatok annyira észrevétlenül és gördülékenyen menjenek végbe, amennyire csak lehetséges. A 11. fejezet (Teljesítmény) a teljesítmény szûk keresztmetszeteinek kiküszübölésére, illetve az Apache kiszolgáló általános mûködésének javítására tartalmaz recepteket.
Apache00.qxd
10/13/2008
10:35 AM
Page xvii
Apache receptek
A 12. fejezet (Könyvtárlisták) azt írja le, hogy miként szabhatjuk testre a könyvtárlistákat weboldalként megjelenítõ modult. A 13. fejezet (Ami kimaradt...) olyan különféle témákat tárgyal, amelyek a többi fejezetbe nem illettek bele. Az „A” függelék (Szabályos kifejezések az Apache-ban) azt magyarázza el, hogyan végezhetünk mintaillesztést szabályos kifejezések segítségével az Apache-utasításokban. A „B” függelék (Hibaelhárítás) az alapvetõ hibaelhárító eljárások közül mutat be néhányat: milyen üzeneteket keressünk, milyen beállítási problémák merülnek fel a leggyakrabban, és így tovább.
A könyvben használt jelölések A könyvben a különbözõ elemek jelölésére adott stílusokat használunk. Miután hozzászoktunk ezekhez, könnyen megkülönböztethetjük a megjegyzéseket, az általunk beírandó parancsokat, az értékeket, amelyeket nekünk kell megadnunk, és így tovább. Egyes esetekben a folyószövegben és a kódpéldákban található betûstílus különbözik. Az egyes betûstílusok (dõlt, félkövér stb.) jelentését a következõkben részletezzük.
Programkódok A könyvben a legtöbb kódpélda egy-egy parancsfájl részlete, nem pedig tényleges alkalmazáskód. Ha egyes parancsokat a parancssor készenléti jelénél (például egy Unix-szerû rendszer xterm ablakában vagy Windowson a DOS-parancssorba) kell beírnunk, ezek a parancsok valahogy így fognak festeni: % find/usr/local -name apachectl -print # /usr/local/apache/bin/apachectl graceful C:>cd "\Program Files\Apache Group\Apache\bin" C:\Program Files\Apache Group\Apache\bin>apache -k stop
Unix-szerû rendszereken a # készenléti jellel kezdõdõ parancssorok azt jelzik, hogy rendszergazdaként (a root felhasználónévvel) kell bejelentkeznünk, ha pedig a készenléti jel elején % jelet látunk, akkor a parancsot bármelyik felhasználó kiadhatja.
Betûstílusok A könyv tipográfiai jelölései a következõk: Dõlt betû A parancsok, a fájlnevek, a rövidítések, az e-mail címek, az URL-ek, a Usenet-hírcsoportok nevei, valamint a könyvekbõl és cikkekbõl vett idézetek dõlt betûvel szerepelnek.
xvii
Apache00.qxd
xviii
10/13/2008
10:35 AM
Page xviii
Apache receptek
Állandó szélességû betû (írógépbetû) Ezt a betûtípust a függvénynevek, a parancssori kapcsolók, a kimenetek, a környezeti változók nevei, a literális karakterláncok, és a kódpéldák használják. Félkövér, állandó szélességû betû A párbeszédablakokban, illetve a kódpéldákban a felhasználó által beírandó utasításokat jelöli. Dõlt, állandó szélességû betû Azokat az elemeket (paramétereket, elérési útvonalakat és változóneveket) szedtük így, amelyek helyére a megfelelõ értékeknek kell kerülniük. Megjegyzés Tipp Figyelem!
Ez az ikon jelzi az általános megjegyzéseket. Ez az ikon jelzi a tippeket, javaslatokat. Ez a jelzés a lehetséges veszélyekre hívja fel a figyelmet.
Dokumentáció Mivel kötetünk általános jellegû, nem pedig egy adott témakörrel foglalkozik (például a Perl nyelvvel), további információforrásokra is hivatkozni fogunk a könyv során. A leggyakrabban hivatkozott forrásokat az alábbiakban soroljuk fel.
Az Unix-szerû rendszerek elektronikus súgóoldalai (man) A man súgórendszer oldalaira való hivatkozások valahogy így festenek: „További információért lásd a kill(1) man oldalt.” A zárójelben látható szám a vonatkozó kézikönyvoldal, amelyet az alábbihoz hasonló paranccsal érhetünk el: %man 1 kill
Az Apache webkiszolgáló dokumentációja Az ilyen hivatkozások a következõ alakban jelennek meg: „A részleteket lásd a mod_auth leírásában”. Ez például a következõ weboldalra hivatkozik: http://httpd.apache.org/docs/mod/mod_auth.html
Apache00.qxd
10/13/2008
10:35 AM
Page xix
Apache receptek
Egyes esetekben a hivatkozás egy adott Apache-utasításra vonatkozik, nem pedig egy konkrét modulra; ilyenkor a megfelelõ weboldalt a parancs nevével megadva kereshetjük meg: http://httpd.apache.org/docs/mod/directives.html Ez az oldal az Apache alapcsomagban elérhetõ összes utasítást (direktívát) felsorolja. Egyes esetekben az utasítás egy nem szabványos vagy külsõ gyártású modul sajátja, amikor is a leírásának ott kell lennie, ahol maga a modul is található. A fenti hivatkozások a szoftver 1.3-as változatára érvényesek. Ha a 2.0-s változat dokumentációját szeretnénk elérni, a docs/ részt cseréljük docs2.0/-ra az URL-ekben.
A kódpéldák használata Ezt a könyvet azért készítettük, hogy segítsen a munkánk elvégzésében. A benne szereplõ kódok általában felhasználhatók a programjainkban és dokumentációinkban, tehát nem kell engedélyért folyamodni a kiadóhoz, hacsak nem jelentõs mennyiségû kódot kívánunk lemásolni. Például ha olyan programot írunk, amely több kisebb kódrészletet használ fel a könyvbõl, nincs szükség engedélyre, de ha terjeszteni vagy eladni szeretnénk egy O’Reilly-könyvbõl származó példákat tartalmazó CD-ROM-ot, akkor igen. Ha a könyvet, illetve egy benne szereplõ példakódot idézve válaszolunk egy kérdésre, ugyancsak nem kell engedélyt kérnünk, de ha termékünk dokumentációja jelentõs mennyiségû példakódot emel át ebbõl a könyvbõl, már engedélyre lesz szükségünk. Örülünk neki, de nem követeljük meg, ha valaki feltünteti a forrást. A forrás feltüntetése általában a szerzõ, a cím, a kiadó és az ISBN-szám jelzését jelenti, például így: „Ken Coar és Rich Bowen: Apache Cookbook, második kiadás, Copyright 2008, Ken Coar és Rich Bowen, 978-0596-52994-9”. Ha a kódpéldákat olyan formában szeretnénk felhasználni, ami érzésünk szerint a fent említett szabad felhasználási körökön kívül esik, lépjünk kapcsolatba a kiadóval a következõ címen:
[email protected].
Elérhetõségeink A könyv tartalmát a legjobb tudásunk szerint ellenõriztük, de esetleg találhatunk benne olyan szolgáltatásokat, amelyek idõközben megváltoztak (és ezért úgy tûnik, mintha hibásan mûködnének). Ha az Olvasó hibára bukkanna a könyvben, kérjük, jelezze nekünk, valamint ha javaslatai vannak a jövõbeli kiadásokkal kapcsolatban, azt is szívesen vesszük. A következõ címre lehet írni nekünk: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472
xix
Apache00.qxd
xx
10/13/2008
10:35 AM
Page xx
Apache receptek
Telefon- és faxszámaink: (800) 998-9938 (az Egyesült Államokban, illetve Kanadában) (707) 829-0515 (nemzetközi/helyi) (707) 829-0104 (fax) Könyvünkhez egy webhely is kapcsolódik, ahol megtalálhatjuk a kötet hibajegyzékét, a példafájlokat, valamint további információkat. Az oldal a következõ címen érhetõ el: http://www.oreilly.com/catalog/9780596529949 Ha a könyvvel kapcsolatban technikai kérdéseink vagy észrevételeink vannak, erre a címre küldhetünk e-mailt:
[email protected] Könyveinkrõl, konferenciáinkról, szoftvereinkrõl, forrásközpontjainkról és az O’Reilly hálózatáról az alábbi webhelyen kaphatunk tájékoztatást: http://www.oreilly.com A kötethez egy külön webhely is kapcsolódik, ahol ugyancsak megtalálhatjuk a kötet hibajegyzékét, valamint a terveinket a jövõbeli kiadásokkal kapcsolatban, és letölthetõ forráskódokat a könyvbõl, hogy ne magunknak kelljen begépelnünk minden kódot. A webhely címe: http://apache-cookbook.com
Safari® Enabled Ha kedvenc szakkönyvünk borítóján felfedezzük a Safari® Enabled ikont, az arra utal, hogy a könyv elérhetõ az O'Reilly Network Safari Bookshelf nevû elektronikus könyvtárban. A Safari az e-könyveknél színvonalasabb szolgáltatás: olyan virtuális könyvtár, amelyben több ezer kiváló, mûszaki témájú könyvben kereshetünk, összeollózhatjuk a példakódokat, letölthetjük az egyes fejezeteket, és ha a legfrissebb, legprecízebb információra van szükségünk, hamar választ kaphatunk a kérdéseinkre. A szolgáltatás ingyenesen kipróbálható a http://safari.oreilly.com címen.
Apache00.qxd
10/13/2008
10:35 AM
Page xxi
Apache receptek
Köszönetnyilvánítás Eredetileg minden receptnél egyenként szerettük volna feltüntetni a közremûködõket, de ez logisztikailag lehetetlennek bizonyult. A könyv megírásában sokan segítettek, vagy úgy, hogy felvetettek egy problémát, vagy úgy, hogy megoldást kínáltak rá, lektorálták, szerkesztették vagy kritizálták a szöveget, vagy éppen szellemi támogatást nyújtottak (ami szintén nem csekélység!). Mindnyájuknak mély hálával tartozunk, de külön is ki kell emelnünk Nat Torkington (angyali türelmû projektvezetõnk), az irc.freenode.net #apache-csatornájáról Sharco és Guy, valamint Mads Toftum, (az FBI számára Kevin Hemenway álnéven ismert) Morbus Iff és Andy Holman munkáját.
Ken Coar Ezt a könyvet (sokkal) jobbik felemnek, Cathy Coarnak ajánlom, aki végtelen szeretettel és türelemmel támogatja a munkámat immár több mint két évtizede Köszönettel tartozom az O’Reilly csapatának angyali türelmükért és megértésükért. Köszönet illeti a WriterBase Authors Support Group és a Cabal levelezõlisták résztvevõit is, ahonnan nagyon sok jó tanácsot kaptam. Mûszaki lektoraink ugyancsak kiváló munkát végeztek, és visszajelzéseiknek köszönhetõen jobb könyvet készíthettünk. Nagyon hálásak vagyunk azoknak is, akik az Apache webkiszolgáló dokumentációján, illetve magának a szoftvernek a fejlesztésén dolgoztak; az elõbbiek nélkül a könyvben szereplõ hatalmas mennyiségû információt sokkal nehezebb lett volna összegyûjteni, az utóbbiak nélkül pedig meg sem írhattuk volna ezt a könyvet. Köszönet jár a szoftver felhasználóinak is, akik gyakran fogas kérdéseket tesznek fel a levelezõlistákon, az IRC-csatornákon, illetve a postaládánkba érkezõ leveleken keresztül, és akik tudtukon kívül a könyv számos receptjéhez adtak hasznos ötleteket. Azok sorában azonban, akiknek hálával tartozom, az elsõ helyen jobbik felem, Cathy áll, akinek a türelme, támogatása és konstruktív kritikája nélkül soha nem jutottam volna el oda, ahol most vagyok.
Rich Bowen Ezt a könyvet az #apache szakértõinek ajánlom, akik oly sok kérdést válaszolnak meg mindennap, és a kezdõknek, akik felteszik ezeket a kérdéseket, hogy maguk is szakértõvé váljanak. Köszönet illeti azt a sok-sok embert, akinek köszönhetõen ez a kötet valósággá vált. Tatiana, köszönöm a türelmedet és a könyv írása során nyújtott folyamatos segítséget. Végül, köszönet jár nagyszerû családomnak: Sarah-nak, aki mindig az én könyveimet keresi a könyvesboltokban, Isaiah-nak a kifogyhatatlan energiájáért és szoros öleléseiért, és a legjobban szeretettnek, amiért oly sok céltalan szépséget segített felfedeznem.
xxi
Apache00.qxd
xxii
10/13/2008
10:35 AM
Page xxii
Apache receptek
A szerzõkrõl Ken Coar az Apache fejlesztését felügyelõ szervezet, az Apache Software Foundation tagja. Õ írta az Apache Server for Dummies (Wiley) címû könyvet, és társszerzõje volt az Apache Server Unleashed (Sams) címû kötetnek. Ken kezeli az Apache projekt elektronikus levelezését – ez a kötet a levelezõlistán szerzett tapasztalataira épül. Rich Bowen szintén az Apache Software Foundation tagja; elsõsorban az Apache Web Server dokumentációján dolgozik, és társszerzõje volt az Apache Administrator’s Handbook címû mûnek. Rich a Kentucky állambeli Lexingtonban él, ahol szabadidejét a GeoCaching-nek szenteli, papírsárkányokat röptet, vagy Charles Dickens és kortársai mûveit olvasgatja. Rich – vagy ahogy az IRC-n ismerik, DrBacchus – az #apache csatornán is rengeteg idõt tölt. A Weben a http://www.drbacchus.com/journal címen érhetjük el.