Daniel Lopez APACHE ZSEBKÖNYV



Hasonló dokumentumok

A JAVA FUTTATÁSAKOR ELŐFORDULÓ HIBA-

NOD32 Antivirus 3.0. Felhasználói útmutató. Beépített összetevők: ESET NOD32 Antivirus ESET NOD32 Antispyware. we protect your digital worlds

VirtualBox, Debian telepítés

1. oldal, összesen: 29 oldal

Felhasználói kézikönyv

Informatika szintmérő-érettségi tételek február

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

NetIQ imanager Telepítési útmutató január

IBM Data Server ügyfelek telepítése

Tarantella Secure Global Desktop Enterprise Edition

Gyorskalauz a Machez készült asztali Novell Filr alkalmazáshoz

Bevezetés. A WebAccess használatának bemutatása előtt néhány új funkció felsorolása következik:

Dr. Pétery Kristóf: Excel 2007 feladatok és megoldások 2.

AIX 6.1. IBM Systems Director Console for AIX

Novell Teaming A termék áttekintése. Novell február 16.

AXEL PRO Számlázó és Készletnyilvántartó Program

Operációs rendszerek Windows Xp

A SZOFTVER TELEPÍTÉSE ELŐTT TELEPÍTÉS WINDOWS KÖRNYEZETBEN TELEPÍTÉS MACINTOSH KÖRNYEZETBEN HIBAKERESÉS

Felhasználói kézikönyv

Gyorskalauz a Windowshoz készült asztali Novell Filr alkalmazáshoz

A Gyorstelepítés rövid leírását lásd a hátsó borítón.

A fenti meghatározást kiegészítendõ, a könyv során az alábbiakat boncolgatjuk, amelyek mindegyike egy-egy, az SSH által biztosított megoldás:

Felhasználói kézikönyv

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0

A tömörítési eljárás megkezdéséhez jelöljük ki a tömöríteni kívánt fájlokat vagy mappát.

A Gyorstelepítés rövid leírását lásd a hátsó borítón.

Az Egálnet Honlapvarázsló használati útmutatója

A Polycom RealPresence Group Series készülékek és tartozékok szoftverének és opcióinak telepítése. Áttekintés

Szoftvertelepítési útmutató

Documentation. OTRS Business Solution 4 kézikönyv

CCS Hungary - Integrált Speditőri Rendszer

Kaspersky Internet Security Felhasználói útmutató

Felhasználói Kézikönyv

AC1600 intelligens WiFi router

Az Orbis adatbáziskezelő

Ûrlapkitöltés használata során megjegyzi az oldalakhoz tartozó beviteli mezõk értékeit, mellyel nagyban meggyorsítja

DWL-G520 AirPlus Xtreme G 2,4GHz Vezeték nélküli PCI Adapter

DWL-510 2,4GHz Vezeték nélküli PCI adapter

Windows 8 Consumer Preview

HP ProtectTools Felhasználói útmutató

Novell VibeTM OnPrem. Felhasználói kézikönyv. 3 Public Beta. novdocx (hu) 16 April november 09.

TELEPÍTSÜNK GYORSAN ÉS EGYSZERŰEN SULIX PROFESSIONALT

DI a/11g Kétsávos 108Mbps Vezeték nélküli Router

Informatikai tevékenység 2234 Maglód, Széchenyi u Mérnöki, tanácsadói tevékenység Iroda: Mobil: Telefon:

hp Intelligens bővítőmodul

HP beágyazott webszerver

Hálózati használati útmutató

GuideReg demó program telepítési útmutató

Windows hálózati adminisztráció

NEPTUN_TÖRZS. (Funkcionális leírás)

Vezeték nélküli eszközök (csak egyes típusokon) Felhasználói útmutató

A telepítésre vonatkozó teljes körű útmutatás: Novell Vibe 4.0 Installation Guide (Novell Vibe 3.4 telepítési kézikönyv).

Dr. Pétery Kristóf: Excel 2003 magyar nyelvű változat

Év zárása és nyitása 2015-ről 2016-ra

Feltételes formázás az Excel 2007-ben

Útmutató a hálózati és internetes kommunikációhoz

FELHASZNÁLÓI KÉZIKÖNYV ÜGYFELEK SZÁMÁRA

Printed in Korea Code No.:GH A Hungarian. 04/2008. Rev World Wide Web

Documentation. OTRS Business Solution 5 kézikönyv

MS Access Feladatgyűjtemény

1. BEVEZETÉS A RENDSZER ELEMEI, ARCHITEKTÚRÁJA... 5

Gate Control okostelefon-alkalmazás

Online Használati Útmutató

Használati útmutató a Semmelweis Egyetem Központi Könyvtár távoli adatbázis elérés szolgáltatásáról

Az Ön kézikönyve LEXMARK X2670

CellCom. Szoftver leírás

Az Ön kézikönyve NOKIA

TELEPÍTSÜNK GYORSAN ÉS EGYSZERŰEN SULIX PROFESSIONALT

DWL-2000AP+ Vezeték nélküli Hozzáférési pont. Ethernet kábel (CAT5 UTP) 5V 2,5A váltóáram adapter

A PC Suite telepítési útmutatója

Cisco Unified Communications Manager Assistant Felhasználói kézikönyv a Cisco Unified Communications Manager 6.0 rendszerhez

Közzététel és Adatszolgáltatás IT tudatosság projekt

Bevezetés a BlackBerry használatába BlackBerry Curve 8310 Smartphone

Felhasználói útmutató Nokia kiadás

Series használati útmutató

Nokia Felhasználói kézikönyv

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

Hálózati útmutató. A biztonságos és megfelelõ kezelés érdekében használat elõtt olvassa el az Általános Beállítási Útmutató biztonsági információit.

FAX Option Type Fax kézikönyv (kiegészítõ) <Alapvetõ funkciók> Felhasználói kézikönyv.

Gyors üzembe helyezés

Novell GroupWise levelező rendszer alapok Kiadványunk célja, hogy a Nemzeti Közszolgálati Egyetemen használt Novell GroupWise (a továbbiakban GW)

BBS-INFO Kiadó, 2016.

Csoport neve: Kisiskolások Feladat sorszáma: 2. Feladat címe: Oktatási intézmény honlapja, oktatási naplóval. E-Project.

Központi proxy szolgáltatás

IBM Business Monitor 7. változat 5. alváltozat. IBM Business Monitor telepítési kézikönyv

Dr. Pétery Kristóf: AutoCAD LT 2007 Fóliák, tulajdonságok

AXEL Számlázó és készletnyilvántartó program

QEMU beüzemelése és részletes ismertető

MUNKAANYAG. Angyal Krisztián. Szövegszerkesztés. A követelménymodul megnevezése: Korszerű munkaszervezés

Procontrol. Kezelői és telepítői kézikönyv. Internetről kapcsolható dugaljzat _R9C revízió

2014 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

HP Scanjet 3770 digitális, síkágyas lapolvasó

A Citadel csoportmunka-kiszolgáló

A TechSon Prémium kategóriás DVR-ek beállítása távoli betekintéshez

Dr. Pétery Kristóf: Windows XP Professional

ipod nano Használati útmutató

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

14.2. OpenGL 3D: Mozgás a modellben

Átírás:

Daniel Lopez APACHE ZSEBKÖNYV Guy Montag

Daniel Lopez Jesus Blanco Apache zsebkönyv Budapest, 2007 SAMS KISKAPU Guy Montag

A fordítás a következő angol eredeti alapján készült: Daniel Lopez, Jesus Blanco: Apache Phrasebook Authorized translation from the English language edition, entitled APACHE PHRASEBOOK, 1st Edition, ISBN 0672328364, by LOPEZ, DANIEL; BLANCO JESUS, published by Pearson Education, Inc, publishing as Sams. Copyright 2006 by Sams Publishing. Translation and Hungarian edition 2007 Kiskapu Kft. All rights reserved. No part of this book, including interior design, cover design, and icons, may be reproduced or transmitted in any form, by any means (electroníc, photocopying, recording, or otherwise) without the prior written permission of the publisher. Fordítás és magyar változat 2007 Kiskapu Kft. Minden jog fenntartva! A szerzők és a kiadó a lehető legnagyobb körültekintéssel járt el e kiadvány elkészítésekor. Sem a szerző, sem a kiadó nem vállal semminemű felelősséget vagy garanciát a könyv tartalmával, teljességével kapcsolatban. Sem a szerző, sem a kiadó nem vonható felelősségre bármilyen baleset vagy káresemény miatt, mely közvetve vagy közvetlenül kapcsolatba hozható e kiadvánnyal. Lektor: Rézműves László Fordítás: Gilicze Bálint Műszaki szerkesztés: Csutak Hoffmann Levente Tördelés: Kis Péter Borító: Bognár Tamás Felelős kiadó a Kiskapu Kft. ügyvezető igazgatója 2007 Kiskapu Kft. 1134 Budapest, Csángó u. 8. Telefon: (+36-1) 477-0443 Fax: (+36-1) 303-1619 www.kiskapukiado.hu e-mail: kiado@kiskapu.hu ISBN: 978 963 9637 32 0 Készült az Aduprint Nyomdában. Felelős vezető: Tóth Béláné

Tartalomjegyzék Előszó........................................................ 1 Bevezetés..................................................... 3 1 Az Apache alapjai............................................. 5 Az Apache felfedezése............................................... 5 Az Apache jelenlétének vizsgálata...................................... 6 Az Apache 1.3 telepítése Linux és Unix rendszereken...................... 6 Az Apache 2.0 telepítése Linux és Unix rendszereken...................... 7 Az Apache telepítése Windows rendszereken............................. 7 Telepíthetjük-e egyszerre az Apache különböző változatait egyetlen gépre?..... 8 A beállítófájlokról.................................................. 8 Több beállítófájl használata........................................... 9 Az Apache indítása, leállítása és újraindítása............................. 9 Az Apache IP címének és portjának megváltoztatása...................... 10 Az Apache-ot futtató felhasználó megváltoztatása........................ 11 A kiszolgáló nevének megadása...................................... 11 lkon hozzárendelése weblapokhoz..................................... 11 A kiszolgálón elérhető modulok felfedezése............................. 12 Modulok be- és kikapcsolása......................................... 12 Modulok hozzáadása fordítás után újrafordítás nélkül..................... 13 Tartalom közzététele............................................... 13 Utasítástárolók.................................................... 14 Az Apache alapértelmezett utasítástárolói............................... 14 Feltételesen kiértékelt utasítástárolók.................................. 15 2 Hibaelhárítás................................................ 17 Segítség! Nem működik az Apache kiszolgáló!.......................... 17 A hibanapló...................................................... 17 A rendszernaplózó démon használata.................................. 17 A naplóban rögzített adatok mennyiségének szabályozása.................. 18 Az Apache beállításainak vizsgálata................................... 19 Az Apache tesztelése a parancssorból.................................. 19 Az Apache futásának ellenőrzése...................................... 20 Az Apache leállításának lehetőségei................................... 21 Hibakeresés az Apache-ban az Apache segítségével....................... 21 Az indítás során felmerülő hibák...................................... 22 Névfeloldási problémák............................................. 23 Gondok a napló- és beállítófájlok elérésével............................. 23 V

Elérés megtagadva................................................. 23 Belső kiszolgálóhibák.............................................. 24 További hibanaplók................................................ 25 Nem működő átirányítás............................................ 25 Hibaelhárítási teendők.............................................. 25 3 Naplózás és megfigyelés...................................... 29 Bevezetés a naplózásba............................................. 29 Az Apache alapértelmezett naplófájljai................................. 29 Naplóformátumok létrehozása........................................ 29 Egyéni naplófájl létrehozása......................................... 30 Naplók átirányítása külső programokhoz............................... 30 Kérelmek feltételes naplózása........................................ 31 A webhelyre mutató hivatkozások figyelése............................. 31 Az Apache figyelése a mod_status modullal............................. 31 Az Apache megfigyelése az SNMP-vel................................. 32 Naplók elemzése nyílt forrású segédprogramokkal........................ 32 Naplók valósidejű megfigyelése...................................... 33 Naplók forgatása és tárolása......................................... 33 Az IP címek feloldásának szabályozása................................. 34 A naplózott IP címek feldolgozása..................................... 34 Az Apache automatikus újraindítása lefagyás esetén...................... 35 Naplófájlok egyesítése és szétválasztása................................ 35 Külön naplók a virtuális kiszolgálók számára............................ 36 Jellemző naplóbejegyzések.......................................... 36 4 URL-megfeleltetés és dinamikus tartalom........................ 39 URL-megfeleltetés................................................. 39 URL-ek megfeleltetése fájloknak az Alias utasítással...................... 39 URL-minták megfeleltetése fájloknak az AliasMatch utasítással............. 39 Oldalak átirányítása................................................ 40 Átirányítás a fájl legfrissebb változatához............................... 40 Hibás vagy nem engedélyezett kérelmek átirányítása...................... 40 Tartalomkezelők meghatározása...................................... 41 A MIME típusokról................................................ 41 A MIME típusok beállítása.......................................... 41 A CGI parancsfájlok futtatásának alapjai............................... 42 Erőforrások megjelölése futtatható CGI parancsfájlként.................... 42 Parancsfájlok hozzárendelése HTTPfüggvényekhez és MIME típusokhoz..... 42 A CGI parancsfájlok teljesítményének növelése.......................... 43 Az SSI használata................................................. 44 Az SSI beállítása.................................................. 44 Környezeti változók beállítása........................................ 44 VI

Környezeti változók dinamikus beállítása............................... 45 Különleges környezeti változók....................................... 46 A tartalomegyeztetés beállításai....................................... 46 Karakterkészletek és nyelvi beállítások megadása........................ 47 URL-megfeleltetés magasabb szinten a mod_rewrite modullal.............. 48 A záró perjelek problémája........................................ 48 A gépelési hibák kijavítása........................................... 48 Gondok a kis- és nagybetűkkel....................................... 49 5 Virtuális kiszolgálók.......................................... 51 A virtuális kiszolgálókról............................................ 51 Az IP alapú virtuális kiszolgálókról.................................... 51 Az IP alapú virtuális kiszolgálók beállítása.............................. 51 A név alapú virtuális kiszolgálókról................................... 52 A név alapú virtuális kiszolgálók beállítása.............................. 52 Mi történik, ha a kérelem nem felel meg egyetlen virtuális kiszolgálónak sem?. 53 Alapértelmezett név alapú virtuális kiszolgáló beállítása................... 53 Alapértelmezett IP alapú virtuális kiszolgáló beállítása.................... 54 A név és IP cím alapú virtuális kiszolgálók együttes használata.............. 54 Hibakeresés a virtuális kiszolgálók beállításaiban......................... 55 Az SSL és a név alapú virtuális kiszolgálók............................. 55 A virtuális kiszolgálók kezelésének további módjai....................... 56 Egyéb modulok a virtuális kiszolgálók kezelésére........................ 56 Könyvtárankénti beállítófájlok....................................... 57 A könyvtárankénti beállítófájlok hatókörének szabályozása................. 57 A könyvtárankénti beállítófájlok használatának kikapcsolása................ 58 6 Biztonság és hozzáférés-szabályozás............................ 59 Különbségek az Apache változatai között............................... 59 Egyszerű és kivonatos hitelesítés...................................... 59 Az Apache hozzáférés-szabályozása................................... 60 Az Apache hitelesítési és engedélyezési beállításai........................ 60 Felhasználó-adatbázis létrehozása..................................... 61 Felhasználók és csoportok hitelesítése a Require utasítással................. 61 Jelentős számú felhasználó kezelése................................... 62 A hozzáférés meghatározott IP címekre korlátozása....................... 63 A hozzáférés tiltása egyes IP címekről................................. 63 A hozzáférés-szabályozási módszerek együttes használata.................. 64 Az Elérés megtagadva oldal testreszabása............................. 64 Felhasználói szabályozás............................................ 65 A rendszerfájlok és érzékeny fájlok elérésének megtagadása................ 66 Programfuttatási korlátozások........................................ 66 Mit tehetünk a visszaélések ellen?..................................... 66 VII

A könyvtártartalom kiíratásának letiltása................................ 67 A Server: fejléc módosítása.......................................... 67 A képekre mutató közvetlen hivatkozások letiltása........................ 67 A HTTP-függvények korlátozása..................................... 68 A hozzáférés korlátozása a böngésző alapján............................ 69 A <Location> és a <Directory> szakaszok használata..................... 69 További hitelesítési modulok......................................... 69 A mod_security modul.............................................. 70 Apache 2.2....................................................... 70 Naprakész biztonsági beállítások...................................... 70 Biztonsági teendők................................................. 71 7 SSL/TLS.................................................... 75 Mi is az SSL?..................................................... 75 Hogyan működik az SSL?........................................... 75 Az OpenSSL fordítása.............................................. 76 Titkosítási kulcsok................................................. 76 Kulcspár készítése................................................. 77 Jelszóval védett kulcspár készítése.................................... 77 A kulcs jelszavas védelmének feloldása................................ 77 Tanúsítványok.................................................... 77 Tanúsítványkérelem létrehozása...................................... 78 A tanúsítványkérelem tartalmának megjelenítése......................... 79 Saját tanúsítvány létrehozása......................................... 79 Az SSL-támogatás biztosítása az Apache 1.3-ban......................... 80 Az SSL-támogatás biztosítása az Apache 2.x-ben......................... 80 Az Apache minimális beállításai...................................... 80 Az Apache indítása SSL-támogatással.................................. 81 SSLPassPhraseDialog.............................................. 81 Az SSL teljesítményének fokozása.................................... 82 Átirányítás SSL-kapcsolatra......................................... 82 Név alapú virtuális kiszolgálók és az SSL............................... 83 Az Apache hitelesítési moduljai és az SSL.............................. 83 Figyelmeztető üzenetek SSL-képes webhelyek elérésénél.................. 83 Ügyféltanúsítványok készítése........................................ 83 Hitelesítés ügyféltanúsítványokkal.................................... 84 A mod_ssl-en túl.................................................. 84 Az SSL-képes webhelyek parancssori ellenőrzése........................ 85 Az SSL-megvalósítások hibáinak kezelése.............................. 85 Összetett hozzáférés-szabályozás a mod_ssl modullal..................... 85 Kapcsolódó fejezetek............................................... 86 VIII

8 Tartalom közzététele a DAV segítségével......................... 87 Tartalom közzététele az Apache segítségével............................ 87 Ismerkedés a WebDAV-val.......................................... 87 A mod_dav használatának előnyei..................................... 88 A WebDAV és a HTTP protokoll...................................... 88 A mod_dav telepítése Apache 2.0 kiszolgálókon......................... 88 A mod_dav telepítése Apache 1.3 kiszolgálókon......................... 89 A WebDAV alapbeállításai........................................... 89 A WebDAV biztonsági beállításai..................................... 89 DAV-erőforrások elérése a Microsoft Office-ból.......................... 90 DAV-erőforrások elérése a Microsoft Windowsból........................ 90 DAV-erőforrások elérése a Firefoxból.................................. 91 DAV-erőforrások elérése a parancssorból............................... 91 Hibás ügyfelek kezelése............................................. 93 A mod_speling és a DAV............................................ 93 A dinamikus tartalomkezelés és a DAV................................. 93 Felhasználói oldalak engedélyezése................................... 94 Egyéb módszerek a felhasználói könyvtárak kezelésére.................... 94 A DAVLockDB segít a bajban........................................ 95 9 Teljesítmény és méretezhetőség................................ 97 Az Apache finomhangolása.......................................... 97 A teljesítményről és a méretezhetőségről............................... 97 A hardver finomhangolása........................................... 97 Az operációs rendszer korlátainak tágítása.............................. 98 Az operációs rendszer folyamatokkal szembeni korlátozásainak lazítása....... 98 A fájlleírók számának növelése....................................... 98 Külső folyamatok szabályozása....................................... 99 A fájlrendszer teljesítményének növelése............................... 99 A hálózati és állapotbeállítások finomhangolása......................... 101 A visszaélések elkerülése........................................... 102 A kapcsolatok és a sávszélesség korlátozása............................ 102 Mit kezdjünk a robotokkal?......................................... 103 Fordított helyettes kiszolgálók és terheléselosztók....................... 104 Átmeneti tárolás és tömörítés........................................ 104 Optimalizálás modulokkal.......................................... 105 Az Apache alternatívái............................................. 105 10 Helyettes kiszolgálók és gyorsítótárak......................... 107 Miért van szükség gyorsítótárakra és helyettes kiszolgálókra?.............. 107 Egyszerű és fordított helyettes kiszolgálók............................. 107 Az Apache 1.3, 2.0 és 2.2 közti különbségek........................... 107 A mod_proxy támogatásának bekapcsolása............................. 108 IX

A hagyományos helyettesek támogatásának beállítása.................... 108 Az URL-tér egységesítése fordított helyettes alkalmazásával............... 109 A háttérkiszolgálók elrejtése........................................ 109 Fordított helyettesek alkalmazásának tiltása egyes URL-eken...............110 A teljesítmény növelése.............................................110 Az SSL-kérelmek terhelésének áthelyezése.............................111 Helyettesek adatainak átadása fejlécekben..............................111 Fejlécek kezelése..................................................111 Gyorsítótárazó helyettes kiszolgálók...................................112 Gyorsítótárak az Apache 2-ben.......................................112 Terheléselosztás...................................................113 Kapcsolódás a Tomcathez...........................................113 Egyéb helyettesek.................................................114 Láthatatlan HTTP-helyettesek........................................114 11 Protokollmodulok és MPM-ek................................. 115 Az Apache felépítésének fejlődéstörténete..............................115 A megfelelő MPM kiválasztása.......................................115 Folyamat alapú MPM-ek............................................115 A Prefork MPM beállításai..........................................116 Szálas és kevert MPM-ek............................................116 A Worker MPM beállításai..........................................117 További MPM-ek..................................................117 Az Apache 2 szűrői................................................118 Az Apache mint FTP-kiszolgáló......................................118 Az Apache mint P0P3-kiszolgáló.....................................119 Dinamikus tartalomtömörítés.........................................119 X

Előszó A szerzőkről Daniel Lopez a BitRock alapítója és műszaki vezetője. Cége kereskedelmi és nyílt forrású programokhoz fejleszt több felületen működő telepítési és felügyeleti segédeszközöket. Korábban a Covalent Technologies, Inc. Mérnökcsapatában dolgozott, amely jelenleg cége számára biztosítja az Apache-programozási hátteret. Számos népszerű Apache- és Linux-útmutató szerzője, továbbá az ő nevéhez fűződik az Apache és a.net környezet együttműködését szolgáló mod_mono modul, valamint a Comanche, amely grafikus felületet biztosít az Apache beállításához. Daniel rendszeresen felszólal a nyílt forrás közösségének konferenciáin, így neve ismerősen csenghet a LinuxWorld, az ApacheCon, valamint az O ReílIy Open Source Conventíon résztvevői számára. MSc fokozatot szerzett a távközlés területén az Escuela Superior de Ingenieros de Sevilla és a Danmarks Tekniske Universitet képzésének keretein belül, és nem mellékesen az Apache Software Foundation tagja. Jesus Blanco a BitRock projektvezetője, aki korábban a Spanish Institute of Foreign Commerce megbízásából bejárta Brazíliát, Franciaországot, Németországot, Portugáliát és Délkelet-Ázsia nagy részét. Jesus részt vállal az Apache Documentation Project munkájában, és nagyrészt az ő nevéhez köthető az Apache leírásának spanyol fordítása. A Sevillai Egyetemen közgazdasági, az UNED képzésén pedig informatikai diplomát szerzett. 1

Ajánlás Ericának és Marisolnak, akik oly sok szeretetet és támaszt adtak. Köszönetnyilvánítás Mindenekelőtt szeretnék köszönetet mondani a szerkesztőnek, Shelley Johnstonnak, aki élő példáját adta annak, hogy az emberi türelem nem ismer határokat. Lelkesedése és lendülete nem engedte, hogy elhagyjam magam, akármilyen sűrű napirenddel és szoros határidőkkel is küzdöttem a mindennapokban. Hálás vagyok társszerzőmnek, Jesusnak, és üzlettársamnak, Ericának, akik időt és fáradságot nem sajnálva segédkeztek abban, hogy végül megszülessen ez a könyv. Főmunkaidőben végzett programfejlesztés mellett könyvet írni nem mentes a feszültségtől. Köszönettel tartozom barátnőmnek és családomnak, hogy mellettem voltak a nehéz időszakokban is. Végül pedig, hatalmas Hola és köszönet munkatársaimnak, akik miatt mindig élvezet a BitRocknál dolgozni! Olvasói visszajelzések A könyv olvasóinak észrevételei a legfontosabbak a számunkra. Adunk a véleményükre, és szívesen vesszük mind a pozitív, mind a negatív kritikát, illetve tippeket, hogy mi az, amit szívesen látnának még a könyvben, és más kikívánkozó hozzászólásokat. E-mailben vagy levélben várjuk, hogy mi tetszett a könyvben és mi nem, és szívesen látunk a könyv jobbá tételére vonatkozó tanácsokat is. A könyv témájához kapcsolódó technikai tanácsadással nem szolgálhatunk, és tekintettel a beérkező e-mailek igen nagy számára, előfordulhat, hogy nem tudunk minden üzenetre válaszolni. Kérjük, levelükben mindenképpen jelezzék a könyv címét és szerzőjét csakúgy, mint a hozzászóló nevét és elérhetőségét. A kiadó gondosan át fogja nézni a hozzászólásokat, és továbbítja azokat a zsebkönyv szerzőinek és szerkesztőinek. E-mail: webdev@samspublishing.com Levelezési cím: Mark Taber Associate Publisher Sams Publishing 800 East 96th Street Indianapolis, IN 46240 USA Ügyfélszolgálat A www.samspublishing.com/register címen bejegyeztethetjük példányunkat, így frissítésekhez és letölthető anyagokhoz juthatunk a könyvvel kapcsolatban, valamint elérhetjük a kötet hibajegyzékét. 2

Bevezetés Az Apache mindig ott volt, ahol a Világháló szíve dobogott - a kezdetektől, amikor az NCSA kiszolgáló szerény oldalhajtásaként megjelent, egészen napjainkig, amikor csak kapkodjuk a fejünket gazdag lehetőségei láttán. Az idők során az Apache képességei számottevően megnőttek, és a programcsomag igencsak összetetté vált - olyannyira, hogy manapság már-már félelmet keltően tornyosul a kezdő felhasználók fölé. Könyvünk célja, hogy rendet vágjon az Apache seregnyi beállítása között, bevezessen a kiszolgáló használatába, és példakódokkal segítse a gyakrabban felmerülő feladatok elvégzését. Ha idegen országba utazunk, egy útiszótár életmentő lehet - elég ha csak megéhezünk, vagy elvétjük a helyes irányt. Reményeink szerint az Apache zsebkönyv hasonlóan nagy segítséget nyújt majd a webkiszolgálók beállításainak érdekes és izgalmas világában. Az Apache zsebkönyv útmutatásokkal és kódrészletekkel segíti, hogy saját igényeinkhez igazítsuk webkiszolgálónk jellemzőit. Persze egy ilyen rövidke könyv elolvasása után még nem mondhatjuk el, hogy mindent tudunk az Apache-ról, ezért érdemes bejelentkeznünk a www.samspublishing.com/register oldalon, így további olvasnivalóhoz juthatunk, amely megmutatja a kiszolgáló gyakrabban használt lehetőségeit és a ritkábban felszínre kerülő (jóllehet szintén hasznos) tulajdonságait is. 3

4

1 Az Apache alapjai Az Apache felfedezése Fejezetünkben rövid bevezetést kapunk az Apache webkiszolgáló használatába, megismerjük a felépítését, valamint a fő változatok (1.3 és 2.x) közti különbségeket. Megtanuljuk, hogyan töltsük és fordítsuk le az Apache forráskódját, illetve hogyan telepítsük a rendszert a bináris fájlok segítségével. Szó esik az ismertebb modulok ki- és bekapcsolásáról, a kiszolgálófájlokról, valamint a kiszolgáló beállítófájljainak felépítéséről és használatuk módjáról. Megtanuljuk azt is, miként indíthatjuk el, állíthatjuk meg, majd indíthatjuk újra Apache kiszolgálónkat, és melyek azok a minimális beállítási módosítások, amelyek a kiszolgáló gördülékeny futásához elengedhetetlenül szükségesek. Az Apache jelenleg a legnépszerűbb webkiszolgáló az Interneten; a Netcraft (http://www.netcraft. com) elemzése szerint a piac 68 százalékát tudhatja a magáénak. Az Apache a következő előnyös tulajdonságokkal bír: Hordozható Képes működni Linux, Windows, Mac OS X és sok más operációs rendszeren. Rugalmas - Moduláris, bővíthető szerkezettel rendelkezik, és számos módon beállítható. Nyílt forrású - Az Apache ingyenesen letölthető és használható, a forráskód nyíltsága emellett ráadásul azt is jelenti, hogy saját Apache-változatot is készíthetünk. Napjainkban az Apache 1.3 és 2.x változata használatos szélesebb körben. Az Apache 2.0 számos újdonságot tartalmaz az 1.3-as változathoz képest, hátránya azonban, hogy nem működik együtt az 1.3 változathoz készített modulokkal. Egy szó mint száz, az Apache 2.x-et az alábbi esetekben érdemes használnunk: Ha Windows operációs rendszert használunk Ha nagy mennyiségű statikus tartalmat kell mozgatnunk, és itt kihasználhatjuk a Unix szál alapú moduljainak lehetőségeit Ha olyan lehetőségekre van szükségünk, amelyek csak az Apache 2.0-ban állnak a rendelkezésünkre Ha csak most kezdünk ismerkedni az Apache rendszerrel Az 1.3-as változatot a következő esetekben használjuk: Ha olyan belső fejlesztésű vagy kereskedelemben beszerezhető modulokat szeretnénk használni, amelyeket még nem írtak át az új változathoz Olyan programot, például a PHP-t kell futtatnunk, amelynek bővítései nem szálbiztosak (jóllehet a kód a prefork MPM segítségével minden valószínűség szerint működhet az Apache 2.0-val is) Ha már otthonosan mozgunk az Apache 1.3 környezetében, és nincs szükségünk az új változat lehetőségeire 5

Az Apache jelenlétének vizsgálata rpm -q httpd rpm -q apache rpm -q apache2 Ha Linux rendszert használunk, az Apache minden valószínűség szerint jelen van a gépünkön. Amennyiben Linuxváltozatunk az rpm csomagkezelő rendszert alkalmazza, a fenti parancsokkal nyomban ellenőrizhetjük is az Apache jelenlétét. Példánkban azért szerepel több parancs, mert a rendszerek más és más néven nevezik a keresett programcsomagot. A legtöbb Unixhoz hasonló rendszerben, így a Mac OS X-en is ellenőrizhetjük az Apache bináris fájljainak jelenlétét az alábbi parancsok valamelyikével: httpd -v /usr/sbin/httpd -v Ha eredményes volt a keresés, ilyesmit kapunk eredményül: Server version: Apache/2.0.54 Server built: Apr 16 2005 14:25:31 Még részletesebb válaszra számíthatunk a következő paranccsal: httpd -V Windows rendszereken az Apache jelenlétét a Vezérlőpult, Programok hozzáadása/eltávolítása pontra kattintva ellenőrizhetjük. A telepített program elérési útja a C:\Program Files\Apache Group. Hol juthatunk hozzá az Apache-hoz? A legtöbb Linux-változattal, valamint a Mac OS X-szel automatikusan megkapjuk az Apache-ot is. Windows, illetve más rendszerek használata esetén pedig - mind a forráskód, mind a bináris fájlok tekintetében - keressük fel bátran az Apache webhelyét a http://www.apache.org címen. Az Apache 1.3 telepítése Linux és Unix rendszereken tar xvfz apache_1.3.33.tar.gz cd apache_1.3.33./configure --prefix=/usr/local/apache --enable-shared=max make make install Operációs rendszerünk csomagkezelő eszközeinek segítségével a kiszolgáló előre lefordított változatait telepíthetjük. Gyakran érdemes ezt a megoldást választanunk, mivel így könnyebb együttműködni a meglevő fájlszerkezettel, valamint más cégek programcsomagjaival. Fontos azonban azzal is tisztában lennünk, miként építhetjük fel saját Apache-változatunkat a forráskódból. Így a kiszolgálót saját igényeink szerint alakíthatjuk, valamint a biztonsági javítócsomagokat ( foltokat ) közvetlenül a megjelenésüket követően beépíthetjük a rendszerbe. 6

Mindenekelőtt látogassunk el a http://httpd.apache.org címre, és töltsük le a kívánt forráskódot tartalmazó tar állományt. Az 1.3-as változat lehetőségeinek tárgyalásánál könyvünkben feltételezzük, hogy az Apache 1.3.33-at telepítettük ez volt a könyv írásának idején a legfrissebb változat. A letöltendő fájl ennek megfelelően az apache_l.3.33.tar.gz nevet viseli. Ez után bontsuk ki, állítsuk be, fordítsuk le, majd telepítsük a kiszolgálót a fenti parancsokkal. A --prefix a kiszolgáló elérési útját határozza meg, az --enable-shared=max pedig lehetővé teszi a betölthető modulok használatát. Ezekre okvetlenül szükség van ahhoz, hogy a kiszolgáló lehetőségeit anélkül szabhassuk testre, illetve bővíthessük, hogy újra le kellene fordítanunk a forráskódot. Megjegyzés Előfordulhat, hogy Apache-kiadásunk fájlneve a.tar.bz2 végződéssel rendelkezik, ami azt jelenti, hogy a bzip2-vel tömörítették. Ez esetben mind a tömörítés, mind a kicsomagolás lassabb, de az eredményként kapott fájl mérete kisebb, emiatt számos nyílt forrású projektben szívesen használják ezt a formátumot. Az ilyen fájlok kicsomagolása napjaink legtöbb Linux rendszerében az alábbi paranccsal lehetséges: bunzip2 < apache_l.3.33.tar.bz2 tar xfv tar xfvj apache_1.3.33.tar.bz2 Az Apache 2.0 telepítése Linux és Unix rendszereken tar xvfz apache_2.0.54.tar.gz cd apache_2.0.54./configure --prefix=/usr/local/apache --enable-so - -enable-mods-shared=most make make install Az itt alkalmazott eljárás meglehetősen hasonlít az előzőekben bemutatotthoz, a betölthető modulok támogatásának beállításától eltekintve. Az Apache telepítése Windows rendszereken Az Apache telepítése ez esetben még egyszerűbb, mint Unix rendszereken. Az 1.3 és a 2.x változatok telepítése hasonló mindössze le kell töltenünk a futtatható telepítőcsomagot a http://httpd.apache.org címről, és elindítanunk. A megjelenő varázsló érdeklődik a telepítés helyéről, továbbá rákérdez az alábbiakra: A hálózati tartomány neve A kiszolgáló teljes tartományneve A rendszergazda elektronikus levélcíme A kiszolgáló nevét használhatják majd ügyfeleink a kiszolgáló elérésére, az elektronikus levélcímet pedig akkor jeleníti meg számukra a rendszer, ha valamilyen hibaüzenetet ír ki, így a felhasználók kapcsolatba léphetnek velünk a gondok megoldása érdekében. A varázsló felajánlja továbbá, hogy futtathatjuk a kiszolgálót szolgáltatásként. Erre akkor lehet szükség, ha például azt szeretnénk, hogy az Apache a kiszolgáló indításakor is fusson. Ha erre nincs szükségünk, egyszerűen elindíthatjuk az Apache-ot a parancssorból is. 7

Telepíthetjük-e egyszerre az Apache különböző változatait egyetlen gépre? Igen, ez lehetséges, sőt sok esetben szükség is van rá. Megvalósításához mindössze különböző telepítési előtagokat kell használnunk. Így például telepíthetjük az 1.3-as változatot a /usr/local/apache, a 2.0-t pedig a /usr/local/apache2 könyvtárba. Ha párhuzamosan szeretnénk működtetni a két kiszolgálót, csak arra kell ügyelnünk, hogy az IP cím-port kombinációjuk eltérő legyen. Ne feledjük, hogy nem kell több Apache kiszolgálót telepítenünk csak azért, hogy egyszerre több webhelyet üzemeltessünk. Ilyenkor is tökéletesen elboldogulunk egyetlen kiszolgálóval, ha virtuális kiszolgálókat alkalmazunk, amelyekről bővebben az 5. fejezetben szólunk. Használhatunk ugyanakkor egyszerre több kiszolgálót is, amelyek a webhely egyes részeiért felelősek. Így például üzembe állíthatunk egy Apache 2.0 kiszolgálót a www.example. com webhely főrészének kezelésére, ugyanakkor a www.example.com/signup/ részt rábízhatjuk egy Apache 1.3 kiszolgálóra, amely egy örökölt mod_perl alkalmazást futtat. Minderre a fordított helyettes kiszolgálók (reverse proxy) adnak lehetőséget, amelyekről a 10. fejezetben tudhatunk meg többet. A beállítófájlokról Az alábbi táblázatban bemutatjuk, hol található az Apache fő beállítófájlja a különböző operációs rendszereken. Ne feledjük, hogy a kiszolgáló 1.3-as és 2-es változata egyszerre is jelen lehet, így a fájl neve eltérhet az egyes változatok esetében. 1.1 táblázat A httpd.conf fájl helye a különböző operációs rendszereken Beállítófájl helye /etc/httpd/httpd.conf /etc/httpd/httpd2.conf /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd2.conf /usr/local/apache2/conf /usr/local/apache/conf c:\program Files\Apache Group \Apache2\conf\httpd.conf c:\program Files\Apache Group \Apache\conf\httpd.conf /private/etc/httpd/httpd.conf Operációs rendszer Suse, Mandrake és régebbi Red Hat rendszerek Újabb Red rendszerek, Fedora Core A forráskód fordítása esetén, a korábbiakban leírtak szerint Windows Mac OS X Az Apache fő beállítófájljának neve httpd.conf, helye pedig változó, attól függően, hogy Windows vagy Linux rendszert használunk, illetve hogy a forráskódból fordítjuk le a kiszolgálót, vagy a futtatható telepítőt választjuk. A lehetőségeket az előzőekben bemutatott táblázat foglalja össze. Az Apache beállításait egyszerű szövegfájlokban tárolja, amelyek utasításokat (direktívákat) és tárolókat (más néven szakaszokat ) tartalmaznak. Az adatok mellett megjegyzéseket is elhelyezhetünk: ha a sort egy # jellel kezdjük, annak tartalmát az Apache figyelmen kívül hagyja. Az utasítások többsorosak is lehetnek, ha a sorok végén a \ karakterrel jelöljük az összetartozásukat. 8

Az utasításokkal a kiszolgáló működésének minden apró részletét szabályozhatjuk. Elhelyezhetjük őket tárolókban is, így elérhetjük, hogy csak akkor fejtsék ki a hatásukat, ha egy meghatározott könyvtárból, illetve helyről szolgáltatunk tartalmat, vagy ha egy adott virtuális kiszolgáló szolgálja ki a kérelmet. Ha egy utasítás paramétereként relatív útvonalat adunk meg, ezt mindig a kiszolgáló telepítési könyvtárához (a telepítés gyökeréhez) viszonyítva értjük. Így ha a korábban bemutatott módon forráskódból telepítjük az Apache-ot, a kiszolgáló gyökérkönyvtára a /usr/local/apache, illetve a /usr/llocal/apache2 lesz. Az alapértelmezett értéket a ServerRoot utasítással változtathatjuk meg. Több beállítófájl használata Include /etc/httpd/conf/perl.conf Include conf.d/*.conf Include siteconf/ Adódhatnak olyan helyzetek, amikor érdemes a beállítási adatokat több fájlba szétosztani. Az Include utasítás segítségével - a fenti példáknak megfelelően - hivatkozhatunk egyes beállítófájlokra, egy könyvtár összes fájljára, illetve olyan fájlokra, amelyek egy bizonyos keresőkifejezést tartalmaznak. Amennyiben relatív útvonalat adunk meg, a rendszer azt automatikusan a ServerRoot utasítással megadott könyvtárhoz viszonyítja. Ezt a módszert leggyakrabban azoknál a Linux-változatoknál alkalmazzák, amelyek az Apache-modulokat RPMekben teszik elérhetővé. E programcsomagok mindegyike elhelyezi a saját beállítófájlját egy meghatározott könyvtárban, az Apache pedig automatikusan felcsipegeti az adatmorzsákat. Az Apache indítása, leállítása és újraindítása apachectl start apachectl stop apachectl restart apachectl graceful Az Apache indításához, leállításához, valamint újraindításához a fenti parancsokat használhatjuk. A telepítéstől függően előfordulhat, hogy meg kell adnunk az apachectl abszolút útvonalát, ami lehet például /usr/sbin/apachectl/ vagy /usr/local/apache/bin/apachectl. Lehetőségünk van ugyan arra is, hogy Unix rendszereken közvetlenül a httpd futtatható fájllal vezéreljük az Apache-ot, de ajánlatos inkább az apachectl eszközt használnunk, amely a gyakoribb lehetőségek kezelését egy könnyen áttekinthető parancsfájlban foglalja össze, és rendelkezésünkre áll az Apache részeként. Unix rendszereken, ha az Apache egy kitüntetett portot (1 és 1024 között) használ, a kiszolgáló indításához rendszergazdai jogosultságokra lesz szükségünk. Ha módosítjuk a beállítófájlokat, és szeretnénk, hogy módosításaink hatással is legyenek a rendszerre, valahogy jelezni kell ezt a helyzetet az Apache-nak. Ezt megtehetjük úgy, hogy leállítjuk és elindítjuk a kiszolgálót, újraindítási jelet küldünk, illetve elegáns újraindítást végzünk. Ilyenkor az Apache újra kiolvassa a tárolt beállításokat. A hagyományos és az elegáns újraindítás különbözősége némi magyarázatra szorul a következőkben erről is szólunk. 9

Az apachectl parancsfájl mellett a kill paranccsal közvetlenül is küldhetünk jelzéseket a szülőfolyamatoknak. Erről bővebben a második fejezetben olvashatunk. Windows rendszereken közvetlenül az apache.exe segítségével adhatunk jelzéseket: apache.exe -k restart apache.exe -k graceful apache.exe -k stop Ezek a parancsok ikonokon keresztül is elérhetők, amelyeket az Apache telepítője hoz létre a Start menüben. Ha az Apache-ot szolgáltatásként telepítettük, indítására és leállítására a következők szerint használhatjuk a Windows szolgáltatáskezelő eszközeit: Válasszuk a Vezérlőpult Felügyeleti eszközök lehetőségét, majd kattintsunk a Szolgáltatások ikonra. Az Apache 2.0 mindemellett egy Apache Monitor nevű programmal is a segítségünkre siet, amelyet a Tálcán érhetünk el. Ez egy egyszerű grafikus felület, amelyen közvetlenül, illetve szolgáltatásként is elindíthatjuk vagy leállíthatjuk a kiszolgálót. Ez a programocska elhelyezhető a rendszer indításakor elinduló programok között, de magunk is elindíthatjuk a Start menü Apache almenüjéből. Elegáns újraindítás A hagyományos újraindítás során egyszerűen leállítjuk az Apache kiszolgálót, majd újra elindítjuk. Ennek következtében a rendszer elveti az érvényben levő kérelmeket, és addig nem is fogad újakat, amíg a kiszolgáló ismét el nem indul. Így tehát a hagyományos újraindítás okvetlenül a szolgáltatás szüneteltetésével jár. Az elegáns újraindítás egész máshogy közelíti meg a helyzetet. Az egyes szálak, illetve folyamatok továbbra is feldolgozzák a kérelmeket, de ha elkészülnek, a program egy-egy olyan szállal, illetve folyamattal helyettesíti őket, amelyre már az új beállítások érvényesek. Ez lehetővé teszi a kiszolgáló szünet nélküli, gördülékeny működését. Unix rendszereken az elegáns újraindítást legegyszerűbben az alábbi paranccsal érhetjük el: # apachectl graceful Windowson alkalmazzuk a következő parancsot: Apache.exe -k graceful Az Apache IP címének és portjának megváltoztatása Listen 192.168.200.4:80 Listen 8080 Az Apache-nak tudnia kell, hogy milyen IP címeken és portokon (kapu) várja a beérkező kérelmeket - erről a Listen utasítással tájékoztathatjuk. Az utasításnak értelemszerűen egy portot kell megadnunk, amelyen az Apache figyelhet, valamint (ez nem kötelező) egy IP címet. Amennyiben ez utóbbit nem adjuk meg, az Apache minden elérhető IP címet figyel. Példánk kódjának hatására az Apache a 80-as porton, a 192.168.200.4 IP címről érkező kérelmeket, valamint a 8080-as porton az összes elérhető IP címről érkező kérelmet figyeli. Több Listen utasítással több portot és IP címet is figyelhetünk egyszerre. 10

A portot önmagában is megadhatjuk a Port utasítással, de ha már a Listen-t használjuk, a rendszer figyelmen kívül hagyja a Port beállítását. A 4. fejezetben megtudhatjuk, miként hozhatunk létre a Port utasítással önhivatkozó URL-eket. Amennyiben név alapú virtuális kiszolgálókat használunk, további beállításokra is szükség lesz, amelyekről az 5. fejezetben olvashatunk bővebben. A Listen mellett az Apache 1.3 rendelkezésünkre bocsát egy hasonló, BindAddress nevű utasítást is, ez azonban elavult, ezért használata ellenjavallt. Az Apache-ot futtató felhasználó megváltoztatása User nobody Group nobody A User és a Group utasításokkal megadhatjuk, milyen felhasználó, illetve csoport nevében fusson az Apache kiszolgálónk. Biztonsági okokból nem szabad rendszergazdai jogokat adnunk neki, hiszen így egy apró programozási hiba az egész kiszolgálót védtelenné teheti. Az Apache rendszergazdai jogosultságok birtokában elvégezheti azokat a teendőket, amelyekhez ez a jogosultság kell (ilyen például a kapcsolódás a 80-as porthoz), majd az egyes kérelmeket a beállítások közt megadott felhasználó és csoport nevében szolgálja ki. Az itt szereplő felhasználói azonosító többnyire korlátozott jogokkal és lehetőségekkel rendelkezik. A kiszolgáló nevének megadása ServerName www.example.com Az Apache-nak néha szüksége van önhivatkozó URL-ek létrehozására vagyis olyan URL-ekre, amelyek magára a kiszolgálóra hivatkoznak. Erre akkor lehet szükség, ha például egy másik oldalra szeretnénk átirányítani a felhasználót, vagy saját webhelyünk címét kívánjuk kiírni egy hibaüzenetben. Alapértelmezés szerint az itt szereplő tartományt a ServerName utasítás adja meg, a 2. fejezetben azonban megtanuljuk, miként használhatjuk ennek a viselkedésnek a szabályozására a UseCanonicalName és a Port utasításokat. Ha nem talál kiszolgálónevet, az Apache megpróbál szerezni egyet ehhez fordított DNS-keresést végez a kiszolgáló IP címén. Amennyiben a DNS-kiszolgáló beállítása nem megfelelő, ez meglehetősen hosszadalmas folyamat lehet, így a kérelmező várakozásra kényszerül. lkon hozzárendelése weblapokhoz AliasMatch /favicon.ico /usr/local/apache2/icons/site.ico Napjaink számos böngészője így az Internet Explorer, a Mozilla, vagy a Konqueror lehetővé teszi, hogy kedvenceinkhez ikont rendeljünk. Ha felveszünk egy oldalt a kedvenceink közé, a böngésző elkéri az oldallal azonos könyvtárban található favicon.ico fájlt, amely egy Windows-ikont tartalmaz. Az AliasMatch utasítással a fent bemutatott példához hasonlóan ezeket a kérelmeket egy közös területre irányíthatjuk át, amely a webhely összes ikonját tartalmazza. 11

A kiszolgálón elérhető modulok felfedezése # httpd -l Ezzel a paranccsal megkaphatjuk azoknak a moduloknak a listáját, amelyek beépültek kiszolgálónk futtatható kódjába. Az eredmény valahogy így fest: Compiled in modules: core.c prefork.c http_core.c mod_so.c Ha Apache-telepítésünk támogatja a betölthető modulokat, ezek megosztott könyvtárakba kerülnek, amelyek alapállapotban a modules/ (Apache 2.x), illetve a libexec/ (Apache 1.3) könyvtárban találhatók. Ha azt szeretnénk megvizsgálni, hogy futáskor milyen modulok kerülnek a kiszolgálóba, nyissuk meg a httpd.conf fájlt, és keressük meg a megfelelő LoadModule utasításokat. Az Apache 2.1/2.2-ben még ennyit sem kell tennünk a httpd -M parancs kiírja az összes alkalmazott modult, köztük azokat is, amelyek futásidőben kerültek a rendszerbe. Modulok be- és kikapcsolása./configure (...) --enable-status./configure (...) --disable-status A modulokat a fordítás során a configure parancs --enable-modul és --disable-modul kapcsolóival kapcsolhatjuk be, illetve ki. A fenti példában láthatjuk, miként tehetjük meg ezt az Apache részeként kapott mod_status modullal. Ha a kiszolgálót úgy fordítottuk le, hogy nem támogatja a betölthető modulok használatát, moduljainkat egyszerűen kikapcsolhatjuk, ha megjegyzéssé tesszük a betöltésükért felelős sorokat: #LoadModule mod_status_modules/mod_status.so Az Apache 1.3-ban a ClearModuleList utasítással törölhetjük az aktív modulok listáját (ide tartoznak a befordított modulok is). Ezt követően az AddModule utasítással adhatjuk meg azokat a modulokat, amelyeket valóban használni szeretnénk. A ClearModuleList a 2.x változatokban már nem érhető el. Ha kikapcsolunk egy modult, ügyeljünk arra, hogy eltávolítsuk a nevét a httpd.conf fájl hozzá kapcsolódó utasításaiból, vagy helyezzük át ezeket az utasításokat egy <ifmodule> blokkba (lásd alább). Ha ezt nem tesszük meg, előfordulhat, hogy a kiszolgáló el sem indul. <ifmodule mod_status.c> ExtendedStatus On </ifmodule> 12

Modulok hozzáadása fordítás után újrafordítás nélkül # apxs -cia mod_usertrack.c Lehetőségünk van arra is, hogy az Apache újrafordítása nélkül vegyünk használatba új modulokat ennek azonban az a feltétele, hogy a szóban forgó modul (legyen ez most a mod_so) már be legyen fordítva a kiszolgálóba. Ennek vizsgálatát elvégezhetjük a korábbiakban tanultak szerint (lásd A kiszolgálón elérhető modulok felfedezése című részben). Modulunkat a forráskódból az apxs nevű segédeszközzel építhetjük fel, amely a modulok felépítésére és telepítésére hivatott, és amelyet megkapunk az Apache-csal. Ahhoz, hogy egy modult az apxs segítségével lefordítsunk és telepítsünk, előbb be kell lépnünk abba a könyvtárba, amelyik a modult tartalmazza, majd be kell írnunk a következőket: # apxs -c mod_usertrack.c Ezzel a modul fordítását elvégeztük. Az eredményt másoljuk be az Apache modulkönyvtárába, és módosítsuk a beállítófájlt. Az alábbi paranccsal ezt az apxs elvégzi helyettünk: # apxs -cia mod_usertrack.c Ez az eljárás nagyszerűen működik egyszerű modulokkal, így például azokkal, amelyekhez hozzájutunk az Apache programcsomagjában, a bonyolultabb, külső gyártók által készített modulok, mint a PHP vagy a mod_python esetében azonban többnyire a --with-apxs vagy a --with-apxs2 kapcsolót kell átadnunk a beállító parancsfájlnak. Ha rendelkezésre áll a modul bináris változata, egyáltalán nincs szükség ilyen, az apxs-hez kapcsolódó lépésekre. Ilyesmi akkor fordulhat elő, ha a kiszolgáló felépítésekor nem csak az alapértelmezett modulokat fordítottuk le, illetve ha a kérdéses modul szerepel az adott Linux- vagy Windows-telepítőcsomagban. Ha az Apache 1.3-at használjuk, a modul hozzáadásához az alábbi sorokat kell beírnunk a httpd.conf fájlba: LoadModule usertrack_module libexec/mod_usertrack.so AddModule mod_usertrack.c Ha a rendszeren az Apache 2.2-es változata fut, csak a LoadModule utasítást kell használnunk, alapértelmezett modulkönyvtárként a /libexec helyett a /modules könyvtárat megadva. Tartalom közzététele DocumentRoot /usr/local/apache/htdocs Az Apache alapértelmezés szerint a telepítési könyvtár htdocs/ alkönyvtárából szolgáltatja a tartalmat (amelynek neve a HTML dokumentumokra utal). Az itt elhelyezett dokumentumok automatikusan megjelennek a megfelelő URL-nél. Így például, ha létrehozunk egy foo nevű könyvtárat a htdocs-on belül, és ebben elhelyezünk egy bar.html nevű fájlt, ezt kívülről az alábbi címen érhetjük el: http://www.example.com/foo/bar.html 13

A dokumentumkönyvtárat a DocumentRoot utasítással módosíthatjuk, ahogy a fenti példában látható. Ha relatív útvonalat adunk meg, a kiszolgáló ezt a ServerRoot utasítással megadott könyvtárhoz viszonyítva értelmezi. A tartalmat azonban nem kell feltétlenül a dokumentumkönyvtárba helyeznünk. Az Apache egyik erőssége, hogy igen hatékony és rugalmas módszereket biztosít arra, hogy olyan fájloknak feleltessük meg az ügyfelek által kért URLeket, amelyek modulok által megadott lemezeken, illetve erőforrásokban találhatók. Minderről részletesebben a 4. fejezetben olvashatunk. Utasítástárolók Az utasítástárolók vagy szakaszok határozzák meg az utasítások hatókörét. Amennyiben egy utasítás nem sorolható egyetlen tárolóba sem, úgy a hatóköre kiszolgálószintű, vagyis a teljes kiszolgálóra hatással van. <Directory /usr/local/apache/htdocs >... </Directory> <Location /downloads/*.html >... </Location> <FilesMatch \.(gif jpg) >... </FilesMatch> Az Apache alapértelmezett utasítástárolói A következőkben felsoroljuk az Apache beállítófájljaiban használt alapértelmezett tárolókat. <VirtualHost> A VirtualHost utasítás egy virtuális kiszolgálót ad meg. Az Apache ugyanis lehetővé teszi, hogy egy telepítéssel több webhelyet is fenntartsunk. Erről bővebben az 5. fejezetben olvashatunk. <Directory> és <DirectoryMatch> Ezekkel a tárolókkal az utasítások hatását egy meghatározott könyvtárra vagy könyvtárcsoportra korlátozhatjuk. A DirectoryMatch még azt is lehetővé teszi, hogy a könyvtár megadásánál szabályos kifejezéseket használjunk. <Location> és <LocationMatch> Az utasítások hatását meghatározott URL-re vagy URL-ek csoportjára korlátozzák. Működésük hasonló a Directory utasításoknál látottakhoz. <Files> és <FilesMatch> Itt az utasítások hatását fájlokra, illetve fájlok csoportjaira korlátozhatjuk, hasonlóan a Directory és a Location utasításokhoz. Fontos megjegyeznünk, hogy a fentieken kívül vannak egyéb utasítástárolók is, hiszen a modulok amilyen például a mod_proxy saját tárolókat használhatnak (lásd a 10. fejezetben). A 8. fejezetben olvashatunk olyan tárolókról is, amelyek a HTTP-függvények alapján korlátozzák az elérést. Megjegyzés A Directory, a Files, valamint a Location utasítások szabályos kifejezéseket is fogadhatnak paraméterként, amennyiben a kifejezés elejére egy ~ ka- 14

raktert teszünk. A szabályos kifejezések karakterláncok meghatározott csoportját írják le, adott szabályok szerint. Így például a következő szabályos kifejezés magába foglal minden olyan fájlt, amelynek a kiterjesztése.jpg vagy.gif: <Files ~ \.gif jpg >. Mindazonáltal ilyen célokra a jobb áttekinthetőség érdekében használjuk inkább a DirectoryMatch, LocationMatch és FilesMatch utasításokat. A szabályos kifejezésekről bővebben olvashatunk a http://en.wikipedia.org/ wiki/regular_expression címen. Feltételesen kiértékelt utasítástárolók Az Apache lehetővé teszi feltételes tárolók használatát is, amelyeknek a tartalma csak akkor érvényesül, ha bizonyos feltételek teljesülnek. <IfDefine> Az Apache csak akkor hajtja végre az ebben a tárolóban elhelyezett utasításokat, ha megadjuk a megfelelő parancssori kapcsolót. A következő példában ez a kapcsoló a DSSL lesz. A paramétert negálhatjuk is a! karakterrel (mint az <IfDefine!SSL> esetében); ilyenkor a utasítások csak akkor lesznek hatással a kiszolgálóra, ha nem adtuk meg a kérdéses kapcsolót a parancssorban. <IfModule> Az Apache csak akkor hajtja végre az IfModule tárolóban található utasításokat, ha a paraméterként átadott modul jelen van a kiszolgálóban. Ennek a módszernek az alkalmazására számos példát találhatunk az Apache alapértelmezett beállítófájljában az MPM modulok kapcsán. Tegyük fel például, hogy a httpd.conf fájlban az alábbi kódot látjuk: <IfDefine SSL> LoadModule ssl_module modules/mod_ssl.so </IfDefine> A tárolóban található utasítás életre hívására következőt írhatjuk a parancssorba: # httpd DSSL 15

16

2 Hibaelhárítás Fejezetünkben az Apache használata során leggyakrabban előforduló problémákkal és kezelésükkel foglalkozunk köztük a fájlműveleteket és a portokhoz való kapcsolódást érintő hibalehetőségekkel. Mindemellett bemutatunk néhány segédprogramot is, amelyekkel nyomára juthatunk a legtöbb hiba eredetének. Segítség! Nem működik az Apache kiszolgáló! Nincs annál dühítőbb, mint úgy olvasni egy informatikai könyvet, hogy közben újra és újra meg kell állnunk, mert a program, amelyről a könyv szól, nem hajlandó az elvárt módon működni. Nos, nem szeretnénk, ha ez is ilyen könyv lenne, ezért ebben a fejezetben sorra vesszük az Apache hibaelhárítási lehetőségeit, az egyszerűektől az összetettekig. Ha még nem vagyunk járatosak az Apache használatában, vagy egyes módszerekre jelenleg nincs szükségünk, nyugodtan ugorjuk át a leírásukat; ide később is visszatérhetünk. A hibanapló ErrorLog logs/error_log A hibanaplófájl nyomon követi a kiszolgáló életének fordulatait: az indításokat, az újraindításokat, a kiszolgáló működésével kapcsolatos figyelmeztetéseket és hibaüzeneteket, valamint a letiltott vagy érvénytelen kérelmeket. Ha gondjaink akadnak a kiszolgálóval, először ide érdemes ellátogatnunk. Unix rendszereken a hibanaplót tároló error_log fájl alapállapotban az Apache-telepítés logs/ könyvtárába kerül. Ha Apache kiszolgálónkat programcsomagban kaptuk meg, kicsit más a helyzet. Ilyenkor többnyire a /var/log/httpd könyvtárban érdemes keresgélnünk. A Windows hibanaplója az error.log névre hallgat, és a logs könyvtárban található. A hibanapló könyvtárát magunk is meghatározhatjuk az ErrorLog utasítással. A megadott útvonal elé egy cső karaktert írva a hibaüzeneteket egy másik program szabványos bemenetére küldhetjük. Erről a gyakran használt módszerről bővebben a 3. fejezetben olvashatunk. Érdemes megjegyeznünk, hogy a hibanapló fájlja csak az Apache első indítását követően jelenik meg. A rendszernaplózó démon használata ErrorLog syslog ErrorLog syslog:local7 Unix rendszereken, ha az ErrorLog utasítást a syslog paraméterrel használjuk, a rendszernaplózó démonnal rögzíthetjük a kiszolgáló hibaüzeneteit - ezt láthatjuk a fenti példában is. A kódban láthatjuk, hogy lehetőségünk van csatolni egy információs mezőt is (alapértelmezés szerint ez a local7). Ezek a mezők 17