Az Apache szoftver modulárisan lett kialakítva: néhány alapfeladat kivételével mindent modulok végeznek. Ez egészen odáig megy, hogy még a HTTP-t is egy modul (http_core) dolgozza fel.
Az Apache-modulok befordíthatók a bináris Apache-fájlba összeszerkesztéskor, de betölthetok dinamikusan, futás közben is. A modulok dinamikus betöltésérol a Szakasz 28.4.2, Aktiválás és deaktiválás rész szól.
Az Apache-modulok négyféle kategóriába tartozhatnak:
Az alapmodulok alapértelmezés szerint be vannak fordítva az Apache-ba. A SUSE Linux Apache kiszolgálójába csak a (többi modul betöltéséhez szükséges) mod_so és a http_core van befordítva. Minden más megosztott objektumként érheto el: ahelyett, hogy a bináris kiszolgálófájlban lennének benne, futás közben tölthetok be.
Általában a bovítésként megjelölt modulok benne találhatók az Apache-szoftvercsomagban, de nincsenek statikusan belefordítva a kiszolgálóba. openSUSE rendszereken ezek megosztott, az Apache-ba futás közben betöltheto objektumokként érhetok el.
A külsonek jelölt modulok nem részei a hivatalos Apache-disztribúciónak. A openSUSE számos ilyen modult tartalmaz, azonnal használható formában.
Az MPM-ek felelosek a webkiszolgálóhoz érkezo kérések fogadásáért és kezeléséért, és ezek alkotják a webkiszolgáló szoftver magját.
Ha az Apache telepítésének (a Szakasz 28.1.2, Telepítés részben leírt) alapértelmezett módját követte, akkor telepítve lett az összes alap- és bovítomodul, a Prefork többprocesszoros modul (MPM), valamint a mod_php5 és mod_python külso modulok.
További külso modulok telepítéséhez indítsa el a YaST-ot és válassza ki a apache-t. Más egyéb csomagok mellett az eredménylistában megjelenik az összes rendelkezésre álló külso Apache-modul is.
szakaszt. Válassza ki a menüpontot, és keresse ki azA YaST segítségével kényelmesen aktiválhatja és deaktiválhatja a parancsnyelv-kezelo modulokat (PHP5, Perl, Python és Ruby) a A HTTP-kiszolgáló varázsló részben leírt modulkonfiguráció lépéseit követve. Az összes többi modul be- és kikapcsolásának módját a Kiszolgálómodulok rész írja le.
Ha inkább kézzel kívánja be- és kikapcsolni a modulokat, használja az a2enmod mod_foo vagy a2dismod mod_foo, parancsokat (ahol mod_foo a modul neve). Az a2enmod -l parancs kilistázza az összes éppen aktív modult.
FONTOS: Külso modulok konfigurációs fájlainak beágyazása
Ha kézzel aktivált külso modulokat, akkor ügyeljen rá, hogy a konfigurációs fájljaik be legyenek töltve az összes virtuálisgép-konfigurációba. A külso modulok konfigurációs fájljai az /etc/apache2/conf.d/ könyvtárban találhatók, és alapértelmezés szerint nincsenek betöltve. Ha ugyanazokra a modulokra van szükség mindegyik virtuális gépben, akkor a beágyazásnál megadhatja a *.conf értéket erre a könyvtárra vonatkozóan. Ha nem, akkor ágyazza be az egyes fájlokat külön-külön. Példák az /etc/apache2/vhost.d/vhost.template sablonfájlban találhatók.
Az összes alap- és bovítomodul részletesen le van írva az Apache dokumentációjában. Itt csak a legfontosabb modulok rövid leírását szerepeltetjük. Az egyes modulok részleteivel kapcsolatban tekintse meg a http://httpd.apache.org/docs/2.2/mod/ webhelyet.
Módszereket kínál parancsfájlok végrehajtására, amikor egy meghatározott MIME-típusú (például application/pdf) vagy meghatározott kiterjesztésu (például .rpm) fájlt, vagy meghatározott kérési móddal (például GET) kérnek. Ez a modul alapértelmezés szerint be van kapcsolva.
Alias (másodlagos név) és Redirect (átirányítás) direktívákat biztosít, amelyekkel egy adott URI egy adott könyvtárhoz rendelheto (Alias), vagy egy URL átirányítható egy másik helyre. Ez a modul alapértelmezés szerint be van kapcsolva.
A hitelesítési modulok különféle hitelesítési eljárásákat kínálnak: alapszintu hitelesítést a mod_auth_basic, vagy kivonat alapú hitelesítést a mod_auth_digest segítségével. Az Apache 2.2-ben a kivonat alapú hitelesítés egyelore kísérletinek tekintendo.
A mod_auth_basic és mod_auth_digest kombinálható egy hitelesítésszolgáltató (mod_authn_*) modullal (például a mod_authn_file szövegfájl alapú hitelesítést biztosít) és egy engedélyezési (mod_authz_*) modullal (a mod_authz_user például a felhasználók engedélyeit szabályozza).
Ezzel kapcsolatban további információ a Hitelesítési HOWTO
-ban olvasható (a http://httpd.apache.org/docs/2.2/howto/auth.html címen).
Az autoindex könyvtárlistákat készít, ha nem található külön indexfájl (például index.html). Az indexek megjelenése állítható. Ez a modul alapértelmezés szerint be van kapcsolva. A könyvtárak tényleges kilistázása azonban le van tiltva az Options direktíváal – írja felül ezt a beállítást a virtuálisgép-konfigurációban. A modul alapértelmezett konfigurációs fájlja az /etc/apache2/mod_autoindex-defaults.conf.
A mod_cgi szükséges CGI-parancsfájlok végrehajtásához. Ez a modul alapértelmezés szerint be van kapcsolva.
E modul használatával az Apache beállítható, hogy menet közben, még kiszolgálás elott tömörítsen bizonyos fájltípusokat.
A mod_dir biztosítja a DirectoryIndex direktívát, amellyel beállítható, hogy egy könyvtár lekérésekor mely fájlok kerüljenek automatikusan kiszolgálásra (az alapértelmezés az index.html). Szintén ez biztosít automatikus átirányítást a megfelelo URl-ra, ha a lekért könyvtár végén nem szerepel a lezáró törtvonal. Ez a modul alapértelmezés szerint be van kapcsolva.
A CGI-parancsfájloknak vagy SSI-oldalaknak átadott környezetet szabályozza. A httpd folyamatot meghívó parancsértelmezoben beállíthatók és kikapcsolhatók, illetve onnan átadhatók környezeti változók. Ez a modul alapértelmezés szerint be van kapcsolva.
A mod_expires használatával szabályozható, hogy a proxy és böngészo gyorsítótárak milyen surun frissítsék a dokumentumokat egy Expires fejléc küldésével. Ez a modul alapértelmezés szerint be van kapcsolva.
A mod_include lehetové teszi kiszolgálóoldali beágyazások (Server Side Includes, SSI) használatát, amely egy alapszintu megoldás a HTML-oldalak dinamikus eloállítására. Ez a modul alapértelmezés szerint be van kapcsolva.
Részletes áttekintést ír ki a kiszolgáló konfigurációjáról a http://localhost/server-info/ speciális címen. Biztonsági okokból ennek az URL-nek az elérését feltétlenül korlátozni kell. Alapértelmezés szerint egyedül a localhost jogosult elérni ezt az URL-t. A mod_info beállításai az /etc/apache2/mod_info.conf fájlban találhatók.
Ezzel a modullal lehet beállítani az Apache naplófájljainak a külalakját. Ez a modul alapértelmezés szerint be van kapcsolva.
A fájlnevek kiterjesztése alapján a mime modul gondoskodik arról, hogy a fájlok a megfelelo (tehát például HTML dokumentumok esetében text/html) MIME-fejléccel legyenek elküldve . Ez a modul alapértelmezés szerint be van kapcsolva.
A tartalom egyeztetéséhez szükséges. További információ a http://httpd.apache.org/docs/2.2/content-negotiation.html oldalon olvasható. Ez a modul alapértelmezés szerint be van kapcsolva.
A mod_alias funkcióit biztosítja, de többféle lehetoséggel és nagyobb rugalmassággal. A mod_rewrite használatával többféle szabály, kérési fejlécek és még sokminden más alapján lehet átirányítani az URL-eket.
A klienstol érkezo kérés részletei, például a kliens által elküldött böngészoazonosító vagy a kliens IP-címe alapján állít be környezeti változókat. Ez a modul alapértelmezés szerint be van kapcsolva.
A mod_speling megkísérli automatikusan korrigálni az URL-ek elgépeléseit, például a véletlen nagybetuket.
Titkosított kapcsolatot létesít a webkiszolgáló és a kliensek között. Részletek: Szakasz 28.6, Biztonságos webkiszolgáló beállítása SSL használatával. Ez a modul alapértelmezés szerint be van kapcsolva.
A kiszolgáló tevékenységével és teljesítményével kapcsolatos adatokat jelenít meg a http://localhost/server-status/ speciális címen. Biztonsági okokból ennek az URL-nek az elérését feltétlenül korlátozni kell. Alapértelmezés szerint egyedül a localhost jogosult elérni ezt az URL-t. A mod_status beállításai az /etc/apache2/mod_status.conf fájlban találhatók.
A mod_suexec lehetové teszi a CGI-parancsfájlok egy másik felhasználó és csoport nevében történo futtatását. Ez a modul alapértelmezés szerint be van kapcsolva.
Lehetové teszi a ~user/ alatti felhasználóspecifikus könyvtárak használatát. Az UserDir direktívát meg kell adni a konfigurációban. Ez a modul alapértelmezés szerint be van kapcsolva.
A openSUSE kétféle többprocesszoros modul (MPM) használatát biztosítja az Apache-hoz.
A prefork MPM egy nem szálkezelo, elore elágaztatott .webkiszolgálót valósít meg. Ennek hatására a webkiszolgáló úgy viselkedik, mint az Apache 1.x verziója: elszigetel minden egyes kérést és úgy kezeli oket, hogy külön leszármazott folyamatot indít a kiszolgálásukra. Ily módon az esetleg problémát okozó kérések nincsenek hatással a többire és megakadályozzák a webkiszolgáló lefagyását.
Miközben azonban jobb stabilitást biztosít a folyamat alapú megközelítés révén, a prefork MPM jóval több rendszereroforrást használ el, mint párja, a worker MPM. UNIX alapú operációs rendszereken a prefork MPM számít az alapértelmezett MPM-nek.
FONTOS: A jelen dokumentumban tárgyalt MPM-ek
A jelen dokumentumban feltételezzük, hogy az Apache kiszolgálót a prefork MPM-mel használják.
A worker MPM egy többszálú webkiszolgálót valósít meg. A szál a folyamatnak egy egyszerubb
fajtája. Ha szálakat használ folyamatok helyett, kevesebb eroforrást emészt fel a rendszer. Ahelyett, hogy leszármazott folyamatokat indítana, a worker MPM a kiszolgálófolyamatok szálait használva szolgálja ki a kéréseket. Az elore elágaztatott leszármazott folyamatok többszálúak. E megközelítés használatával az Apache jobb teljesítményt ér el, mivel kevesebb rendszer-eroforrást használ, mint a prefork MPM.
A legnagyobb hátrányok egyike azonban a worker MPM stabilitása: ha egy szállal baj történik, az a folyamat összes szálát befolyásolja. A legrosszabb esetben a teljes kiszolgáló összeomolhat. Különösen akkor, ha CGI-t használnak Apache alatt és nagy a terhelés, különféle belso kiszolgálóhibák jelentkezhetnek, mivel a szálak nem tudnak kommunikálni a rendszer eroforrásaival. Másik érv a worker MPM használata ellen, hogy nem minden Apache-modul képes szálkezelésre, és emiatt nem használható együtt a worker MPM-mel.
FIGYELMEZTETÉS: PHP-modulok használata az MPM-ekkel
Nem minden PHP-modul képes szálkezelésre. A worker MPM használata a mod_php modullal együtt határozottan ellenjavallt.
Alább felsoroljuk a openSUSE összes külso modulját. A modul dokumentációja a jelzett könyvtárban található.
Képessé teszi az Apache kiszolgálótt, hogy a mod_php5 és mod_perl modulok által kezelt CGI-parancsfájlokat a Novell AppArmor segítségével elszigetelje.
Novell AppArmor Administration Guide,(↑ Novell AppArmor Administration Guide )
A mod_mono használatával a kiszolgáló ASP.NET oldalak futtatására is képessé válik.
A mod_perl használatával a Perl parancsfájlok egy beépített értelmezovel futtathatók. A kiszolgálóba épített állandó értelmezo révén nincs szükség állandóan egy külso értelmezo elindítására, és minden alkalommal a Perl indulásának kivárására.
A PHP egy kiszolgálóoldali, többplatformos, HTML-be ágyazott parancsnyelv.
A mod_python segítségével lényegesen jobb teljesítménnyel ágyazható be a Python az Apache HTTP kiszolgálóba, és rugalmasabban alakíthatók ki a webes alkalmazások.
A mod_tidy minden egyes kimeno HTML-oldalt ellenoriz a TidyLib alapján. Ellenorzési hiba esetén egy hibalistát tartalmazó oldal jelenik meg. Ellenkezo esetben az eredeti HTML oldal kerül kiszolgálásra.
Képzett felhasználó ki is bovíthetik az Apache funkcionalitását egyedi modulok írásával. Apache-modulok fejlesztéséhez, illetve külso fejlesztésu modulok lefordításához szükség van az apache2-devel csomagra, valamint a megfelelo fejlesztoeszközökre. Az apache2-devel tartalmazza az apxs2 eszközöket is, amelyekre szükség van,ha további modulokat akar készíteni az Apache-hoz.
Az apxs2 teszi lehetové a forráskódú modulok lefordítását és telepítését (beleértve a konfigurációs fájlok megfelelo módosításait is), az Apache-ba futási idoben betöltheto, ún. dinamikus megosztott objektumok (DSO-k) készítését.
Az apxs2 bináris fájljai az /usr/sbin könyvtárban találhatók.
Az /usr/sbin/apxs2 segítségével bármely MPM alatt használható bovítomodulok készíthetok. A telepítési helye az /usr/lib/apache2.
Az /usr/sbin/apxs2-prefork segítségével a prefork MPM alatt használható bovítomodulok készíthetok. A telepítési helye az /usr/lib/apache2-prefork.
Az /usr/sbin/apxs2-worker segítségével a worker MPM alatt használható bovítomodulok készíthetok. A telepítési helye az /usr/lib/apache2-worker.
A forráskódú modulok telepítéséhez és aktiválásához használja a következo parancsokat: cd /modul/forrása; apxs2 -cia mod_foo.c (A -c hatására lefordul a modul, az -i határása telepítésre kerül, az -a pedig aktiválja). Az apxs2 egyéb paramétereit az apxs2(1) kézikönyvoldala írja le.