28. fejezet - Az Apache HTTP-kiszolgáló

Tartalomjegyzék

28.1. Gyorskalauz
28.2. Az Apache beállítása
28.3. Az Apache elindítása és leállítása
28.4. Modulok telepítése, aktiválása és beállítása
28.5. CGI-parancsfájlok használata
28.6. Biztonságos webkiszolgáló beállítása SSL használatával
28.7. Biztonsági problémák elkerülése
28.8. Hibaelhárítás
28.9. További információk

Kivonat

A http://www.netcraft.com/ címen olvasható felmérés szerint, több mint 50 százalékos részesedésével az Apache HTTP-kiszolgáló (Apache) a világ legnépszerűbb webkiszolgálója. Az Apache, amelyet az Apache Software Foundation (http://www.apache.org/) fejleszt, a legtöbb operációs rendszeren elérhető. Az openSUSE az Apache 2.2-es verzióját tartalmazza. A jelen fejezetben bemutatjuk a webkiszolgáló telepítését és beállítását; az SSL, a CGI és más modulok használatát; valamint az Apache webkiszolgálóval kapcsolatos hibaelhárítást.

28.1. Gyorskalauz

A fejezetben leírtak alapján az Apache gyorsan beüzemelhető és használatba vehető. Az Apache telepítésére és beállítására csak a root jogosult.

28.1.1. Követelmények

Az Apache webkiszolgáló telepítése előtt győződjön meg róla, hogy az alábbi követelmények teljesülnek:

  1. A gépen a hálózat helyesen be van állítva. További információ erről a témakörről: 21. fejezet - A hálózatkezelés alapjai.

  2. A gépen az idő pontosságát egy időkiszolgálóval való szinkronizálás biztosítja. Ez azért szükséges, mert a HTTP-protokoll egyes részei függenek a helyes időtől. További ismeretek erről a témakörről a 25. fejezet - Időszinkronizálás NTP-vel részben találhatók.

  3. A legfrissebb biztonsági frissítések telepítve vannak. Ha kétségei lennének, futtassa le a YaST Online frissítést.

  4. A webkiszolgáló alapértelmezett portjának (a 80-as port) nyitva kell lennie a tűzfalon. Ehhez állítsa be a SUSEFirewall2-t úgy, hogy az engedje a HTTP-kiszolgáló szolgáltatást a külső zónában. Ez elvégezhető a YaST segítségével. Ennek részletes leírása: Section “Configuring the Firewall with YaST” (Chapter 14, Masquerading and Firewalls, ↑Security Guide).

28.1.2. Telepítés

Az Apache egy openSUSE rendszeren alapértelmezés szerint nincs telepítve. Az előre beállított változat telepítéséhez , a következőket kell tenni:

Eljárás 28.1. Apache telepítése alapértelmezett beállításokkal

  1. Indítsa el a YaST programot és válassza ki a Szoftver+Szoftver telepítése, eltávolítása modult.

  2. A Szűrő+Minták legördülő menü beállítása után válassza ki a KiszolgálóWeb- és LAMP-kiszolgáló mintát.

  3. A telepítési folyamat befejezéséhez erősítse meg a függő csomagok telepítését.

A telepítés során felkerül a többprocesszoros apache2-prefork modul, valamint a PHP5 modul is. A modulokkal kapcsolatos további információ: 28.4. - Modulok telepítése, aktiválása és beállítása.

28.1.3. Indítás

Az Apache elindítható a rendszer indításakor automatikusan vagy a rendszer indítását követően kézzel.

Eljárás 28.2. Apache elindítása automatikusan

  1. Az Apache a rendszer 3-as, vagy 5-ös futási szinten történő automatikus indításához a következő parancsot kell futtatni:

    chkconfig -a apache2
  2. Másik lehetőség a YaST-ban a Rendszer+Rendszerszolgáltatások modul indítása.

  3. Keresse ki az apache2 pontot, majd engedélyezze a szolgáltatást.

    A webkiszolgáló azonnal elindul.

  4. A módosítások elmentéséhez nyomja meg az OK gombot.

    Mostantól, a rendszer indulásakor az Apache szolgáltatás automatikusan elindul a 3-as és az 5-ös futási szinten

További információ az openSUSE futási szintjeiről és a YaST futásiszint-szerkesztőjének leírása: 16.2.3. - Rendszerszolgáltatások (futási szintek) beállítása a YaST segítségével.

Az Apache parancsértelmezőből történő indításához ar rcapache2 start parancsot kell kiadni.

Eljárás 28.3. Apache futásának ellenőrzése

Ha nem kap hibaüzenetet az Apache indulásakor, akkor az általában azt jelenti, hogy a webkiszolgáló fut. Ennek tesztelése a következőképpen lehetséges:

  1. Indítson el egy böngészőt és írja be, hogy http://localhost/.

    Amennyiben az Apache fut, akkor az It works! felirat jelenik meg a böngészőben.

  2. Ha nem ez az oldal jelenik meg, forduljon az alábbi részhez: 28.8. - Hibaelhárítás.

Most, hogy a webkiszolgáló fut, felveheti saját dokumentumait, módosíthatja a konfigurációt az igényeknek megfelelően, vagy éppen kibővítheti a funkcionalitást további modulok telepítésével.

28.2. Az Apache beállítása

Az openSUSE kétféle beállítási lehetőségre ad módot:

A kézi beállítás részletesebb lehet, de a YaST GUI használata jóval kényelmesebb.

[Important]Beállítások módosítását követő újratöltése vagy újraindítás

A legtöbb beállítási módosítása után újratöltés, néhánynál pedig újraindítás szükséges. Az Apache kézi újratöltéséhez használja az rcapache2 reload parancsot, vagy alkalmazza a 28.3. - Az Apache elindítása és leállítása fejezetben leírtakat.

Amennyiben az Apache beállítása a YaST használatával történt, akkor automatikusan megtörténik, amint a HTTP-szolgáltatást Engedélyezi a 28.2.3.2. - HTTP-kiszolgáló beállítások fejezetben leírt módon.

28.2.1. Apache konfigurációs fájlok

Az alábbi fejezetben az Apache konfigurációs fájljairól esik szó. Ha úgy dönt, hogy a YaST-ot használja konfigurációs eszközként, akkor nem kell a konfigurációs fájlokkal foglalkoznia – azonban ezek az információk fontosak lehetnek, ha későbbiek során kézi beállításra kíván áttérni.

Az Apache konfigurációs fájljai két helyen találhatók:

28.2.1.1. /etc/sysconfig/apache2

Az /etc/sysconfig/apache2 könyvtárban találhatók az Apache egyes globális beállításai, például a betöltendő modulok, további figyelembe veendő konfigurációs fájlok, a kiszolgáló indításakor figyelembe veendő jelzők, illetve a parancssorba beírandó jelzők. A fájl minden beállítási lehetősége alaposan le van írva, ezért itt nem foglalkozunk velük. Egy általános célú webkiszolgálóhoz az /etc/sysconfig/apache2 fájl beállításai mindenféle konfigurációs igényhez meg kell, hogy feleljenek.

28.2.1.2. /etc/apache2/

Az /etc/apache2/ könyvtárban található az Apache összes többi konfigurációs fájlja. Az alábbiakban leírjuk az egyes fájlok szerepeit. Minden egyes fájlban többféle beállítási lehetőség (másik gyakori nevén direktíva) található. Az egyes fájlok minden beállítási lehetősége alaposan le van írva, ezért itt nem foglalkozunk velük.

Az Apache konfigurációs fájlok az alábbi módon szerveződnek:

/etc/apache2/
     |
     |- charset.conv 
     |- conf.d/
     |   |
     |   |- *.conf
     |
     |- default-server.conf
     |- errors.conf
     |- httpd.conf
     |- listen.conf
     |- magic
     |- mime.types
     |- mod_*.conf
     |- server-tuning.conf
     |- ssl.*
     |- ssl-global.conf
     |- sysconfig.d
     |   |
     |   |- global.conf
     |   |- include.conf
     |   |- loadmodule.conf . .
     |
     |- uid.conf
     |- vhosts.d
     |   |- *.conf

Az /etc/apache2/ Apache-konfigurációs fájljai

charset.conv

Az egyes nyelvekhez használt karakterkészleteket adja meg. Ne módosítsa.

conf.d/*.conf

Más modulok által felvett konfigurációs fájlok. Ezek a konfigurációs fájlok szükség esetén a virtuális gépek beállításánál használhatók. Példák a vhosts.d/vhost.template fájlban láthatók. Használatukkal eltérő modulkészletek állíthatók be az egyes virtuális gépekhez.

default-server.conf

Általános beállítások az összes virtuális géphez, ésszerű alapértelmezésekkel. Az értékek módosítása helyett írja felül őket egy virtuálisgép-konfigurációval.

errors.conf

Azt szabályozza, hogyan reagáljon az Apache a hibákra. Az összes virtuális gépre vonatkozóan az üzenetek testreszabásához ezt a fájlt kell módosítani. Egyébként ezeket a direktívákat a virtuálisgép-beállításoknál egyenként lehet felülírni.

httpd.conf

Az Apache kiszolgáló fő konfigurációs fájlja. Kerülje ennek a fájlnak a módosítását. Elsősorban csak beágyazó utasításokat és általános beállításokat tartalmaz. Az általános beállításokat inkább a vonatkozó konfigurációs fájlokban írja felül. A gépspecifikus beállításokat (például a fő dokumentumkönyvtárat) a virtuálisgép-konfigurációkban módosítsa.

listen.conf

Az Apache kiszolgálót meghatározott IP-címekhez és portokhoz rendeli. Szintén itt kell beállítani a név alapú virtuális gépeket. Ennek részletes leírása: 28.2.2.1.1. - Név alapú virtuális gépek.

magic

A mime_magic modul adatai, amely segít az Apache-nak automatikusan meghatározni egy ismeretlen fájl típusát. Ne módosítsa.

mime.types

A rendszer által ismert MIME-típusok (ez valójában csak egy hivatkozás az /etc/mime.types fájlra). Ne módosítsa. Ha további, itt még fel nem sorolt MIME-típusokra van szükség, akkor azokat a mod_mime-defaults.conf fájlba vegye fel.

mod_*.conf

Az alapértelmezés szerint telepített modulok konfigurációs fájljai. Részletek: 28.4. - Modulok telepítése, aktiválása és beállítása. Ne feledje, hogy az opcionális modulok konfigurációs fájljai a conf.d könyvtárban találhatók.

server-tuning.conf

A különféle MPM-ek (lásd: 28.4.4. - Többprocesszoros modulok (MPM)) konfigurációs direktíváit, valamint az Apache teljesítményét szabályozó általános konfigurációs beállításokat tartalmazza. Ha módosítja, feltétlenül alaposan tesztelje le a webkiszolgáló működését.

ssl-global.conf és ssl.*

Globális SSL-konfigurációs és SSL-tanúsítványadatok. Részletek: 28.6. - Biztonságos webkiszolgáló beállítása SSL használatával.

sysconfig.d/*.conf

Az /etc/sysconfig/apache2 fájlból automatikusan előállított konfigurációs fájlok. Ne módosítsa ezeket a fájlokat –helyettük módosítsa az /etc/sysconfig/apache2 fájlt. Ne tegyen más konfigurációs fájlt ebbe a könyvtárba.

uid.conf

Azt határozza meg, mely felhasználó- és csoportazonosító alatt fusson az Apache. Ne módosítsa.

vhosts.d/*.conf

Ide kell kerülnie a virtuális gép beállításának. A könyvtár sablonfájlokat tartalmaz a virtuális gépek SSL-lel vagy anélkül történő beállításához. Minden .conf-ra végződő nevű fájl automatikusan bekerül az Apache konfigurációjába. Részletek: 28.2.2.1. - Virtuális gépek konfigurációja.

28.2.2. Az Apache kézi beállítása

Az Apache kézi beállítása esetén a sima szöveges konfigurációs fájlokat kézzel kell módosítani a root felhasználó nevében.

28.2.2.1. Virtuális gépek konfigurációja

A virtuális gép kifejezés az Apache-nak arra a képességére utal, hogy képes több URI-t (univerzális erőforrás-azonosítót) kiszolgálni ugyanarról a fizikai gépről. Ez azt jelenti, hogy több tartományt, tehát például a www.example.com és www.example.net tartományokat is képes kiszolgálni egyetlen fizikai gépen futó ugyanazon webkiszolgáló.

Bevált gyakorlat a virtuális gépek használata az adminisztráció megkönnyítése (hiszen csak egyetlen webkiszolgálót kell karbantartani) és a hardverköltségek leszorítása érdekében (nincs szükség külön kiszolgálóra minden egyes tartományhoz). A virtuális gépek lehetnek név alapúak, IP alapúak és port alapúak.

Az összes meglévő virtuális gép kilistázásához használja a httpd2 -S parancsot. Ennek kimenete az alapértelmezett kiszolgáló és az összes virtuális gép listája, IP-címeikkel és a portokkal együtt, amelyeken figyelnek. A lista ezenfelül tartalmaz egy bejegyzést mindegyik virtuális géphez, amely a konfigurációs fájlok helyét mutatja.

A virtuális gépek a YaST segítségével is beállíthatók (lásd: 28.2.3.1.4. - Virtuális gépek), de a konfigurációs fájlok kézzel is módosíthatók. Alapértelmezés szerint az openSUSE rendszerben található Apache úgy van előkészítve, hogy egy virtuális géphez az /etc/apache2/vhosts.d/ egy konfigurációs fájlja tartozik. A könyvtár összes .conf kiterjesztésű fájlja automatikusan bekerül a konfigurációba. Ebben a könyvtárban egy egyszerű sablon található a virtuális gépekhez (vhost.template vagy vhost-ssl.template az SSL támogatáshoz).

[Tip]Mindig hozzon létre virtuális gépeket

Célszerű mindig virtuális gépeket készíteni, még akkor is, ha a webkiszolgáló csak egyetlen tartományt szolgál ki. Ebben az esetben ugyanis nemcsak a tartományspecifikus beállítások kerülnek egy fájlba, hanem bármikor egyszerűen vissza lehet állni egy működő alapkonfigurációra a virtuális gép konfigurációs fájljának áthelyezésével, törlésével vagy átnevezésével. Ugyanezen okokból érdemes külön konfigurációs fájlokat készíteni az egyes virtuális gépekhez.

Név alapú virtuális gépek használatakor ajánlott egy alapértelmezett konfiguráció létrehozása, amely akkor kerül használatra, ha tartománynév nem illeszkedik a virtuális gép beállításaira. Az alapértelmezett virtuális gép az, amelyiknek a beállításai először töltődnek be. Mivel a konfigurációs fájlok sorrendjét a fájlnév határozza meg, ezért az alapértelmezett virtuális gép beállítását érdemes aláhúzás (_) jellel kezdeni, hogy biztosan ez töltődjön be először (például _default_vhost.conf).

A <VirtualHost></VirtualHost> szakasz tartalmazza az adott tartományra vonatkozó adatokat. Amikor az Apache egy kérést fogad egy klienstől egy már definiált virtuális gépre vonatkozóan, akkor az ebben a szakaszban található direktívákat fogja használni. Szinte minden direktíva használható virtuálisgép-környezetben. További részletek az Apache beállítási lehetőségeivel kapcsolatban: http://httpd.apache.org/docs/2.2/mod/quickreference.html.

28.2.2.1.1. Név alapú virtuális gépek

Név alapú virtuális gépek használata esetén egy IP-címhez egynél több webhely is tartozhat. Az Apache a kliens által küldött HTTP-fejlécben található ''host'' mező alapján rendeli össze a kérést a virtuálisgép-definíciók között található megfelelő ServerName bejegyzéssel. Ha nincs megfelelő ServerName bejegyzés, akkor viszont az elsőként megadott virtuális gépet fogja használni alapértelmezésként.

A NameVirtualHost direktíva jelzi az Apache számára, hogy mely IP-címeken (és esetleg mely portokon) kell figyelnie a klienskérések HTTP-fejlécében a tartománynevet is. Ezt a lehetőséget az /etc/apache2/listen.conf konfigurációs fájlban kell beállítani.

Az első paraméter lehet egy teljesen megadott tartománynév, de célszerűbb az IP-címet használni. A második paraméter a portszám, amely elhagyható. Alapértelmezés szerint az Apache a 80-as portot használja, amelyet egyébként a Listen direktívával lehet beállítani.

A * helyettesítő karakter használható mind az IP-cím, mind a portszám esetében, és azt jelenti, hogy minden csatolón érkezhetnek kérések. Az IPv6-címeket szögletes zárójelekbe kell tenni.

28.1. példa - A név alapú VirtualHost bejegyzések fajtái

# NameVirtualHost IP-address[:Port]
NameVirtualHost 192.168.3.100:80
NameVirtualHost 192.168.3.100
NameVirtualHost *:80
NameVirtualHost *
NameVirtualHost [2002:c0a8:364::]:80

Név alapú virtuális gép beállításakor a nyitó VirtualHost címke paraméterként kapja a korábban a NameVirtualHost sorban beállított IP-címet vagy teljesen megadott tartománynevet. A NameVirtualHost direktívában korábban megadott portszám elhagyható.

A * helyettesítő karakter szintén használható az IP-cím helyett. Ez a szintaxis csak akkor használható, ha korábban helyettesítő karaktert használt, NameVirtualHost * módon. Ha IPv6-címeket használ, azokat szögletes zárójelekbe kell tenni.

28.2. példa - Név alapú VirtualHost direktívák

<VirtualHost 192.168.3.100:80>
  ...
</VirtualHost>

<VirtualHost 192.168.3.100>
  ...
</VirtualHost>

<VirtualHost *:80>
  ...
</VirtualHost>

<VirtualHost *>
  ...
</VirtualHost>

<VirtualHost [2002:c0a8:364::]>
  ...
</VirtualHost>

28.2.2.1.2. IP alapú virtuális gépek

Ha így állít be virtuális gépeket, akkor egy géphez több IP-címnek is kell tartoznia. Egy Apache-példány több tartományt is kiszolgál, amelyek mindegyikéhez különböző IP-cím tartozik.

A fizikai kiszolgálón minden egyes IP alapú virtuális géphez külön IP-címnek kell tartoznia. Ha a gépben fizikailag nincs több hálózati kártya, akkor virtuális hálózati csatolók (másodlagos IP-címek) is használhatók.

Az alábbi példában bemutatunk egy Apache-rendszert, amelyik az 192.168.3.100 IP-című gépen fut, de két további IP-címen (192.168.3.101 és 192.168.3.102) két tartományt szolgál ki. Egy külön VirtualHost blokkra van szükség mindegyik virtuális kiszolgálóhoz.

28.3. példa - IP alapú VirtualHost direktívák

<VirtualHost 192.168.3.101>
  ...
</VirtualHost>

<VirtualHost 192.168.3.102>
  ...
</VirtualHost>

Itt a VirtualHost direktívák csak a 192.168.3.100 címtől eltérő csatolókhoz vannak megadva. Ha megad egy Listen direktívát a 192.168.3.100 címhez, akkor egy külön IP alapú virtuális gépet létre kell hozni, amelyik válaszol az adott csatolóra érkező HTTP-kérésekre – ellenkező esetben az Apache az (/etc/apache2/default-server.conf) fájlban megadott alapértelmezett direktívákat fogja használni.

28.2.2.1.3. Virtuális gépek alapszintű beállításai

Ahhoz, hogy a virtuális gép működjön, legalább az alábbi direktívákat be kell állítani minden egyes virtuális gép konfigurációjában. További részletek az /etc/apache2/vhosts.d/vhost.template sablonfájlban találhatók.

Kiszolgálónév

A teljesen megadott tartománynév, amelyen a gép megszólítható.

DocumentRoot

Annak a könyvtárnak az elérési útja, ahonnan az Apache-nak ki kell szolgálnia az adott gép fájljait. Biztonsági okokból alapértelmezés szerint tiltott a teljes fájlrendszerhez való hozzáférés, így ezt a könyvtárat külön engedélyezni kell egy Directory szakasszal.

ServerAdmin

A kiszolgáló rendszergazdájának e-mail címe. Ez a cím megjelenik például az Apache által előállított oldalakon.

ErrorLog

A virtuális gép hibanaplófájlja. Bár nem kötelező külön hibanaplót készíteni minden egyes virtuális géphez, mégis ez a szokásos gyakorlat, hiszen lényegesen megkönnyíti a hibakeresését. A /var/log/apache2/ az alapértelmezett könyvtár az Apache naplófájlok számára.

CustomLog

A virtuális gép hozzáférésinapló-fájlja. Bár nem kötelező külön hozzáférési naplót készíteni minden egyes virtuális géphez, ez a szokásos gyakorlat, mert megkönnyíti a gépenkénti hozzáférési statisztikák készítését. A /var/log/apache2/ az alapértelmezett könyvtár az Apache naplófájlok számára.

Amint feljebb már említettük, biztonsági okokból alapértelmezés szerint tiltott a teljes fájlrendszerhez való hozzáférés. Éppen ezért külön kell engedélyezni azokat a könyvtárakat, ahová az Apache által kiszolgálandó fájlok kerültek – például a DocumentRoot könyvtárat.

<Directory "/srv/www/www.example.com/htdocs">
  Order allow,deny
  Allow from all
</Directory>

A teljes konfigurációs fájl így néz ki:

28.4. példa - Alapszintű VirtualHost beállítások

<VirtualHost 192.168.3.100>
  ServerName www.example.com
  DocumentRoot /srv/www/www.example.com/htdocs
  ServerAdmin webmaster@example.com
  ErrorLog /var/log/apache2/www.example.com_log
  CustomLog /var/log/apache2/www.example.com-access_log common
  <Directory "/srv/www/www.example.com/htdocs">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

28.2.3. Az Apache beállítása a YaST segítségével

A webkiszolgáló a YaST-tal történő beállításához indítsa el a YaST-ot és válassza ki a Hálózati szolgáltatások+HTTP-kiszolgáló. A modul első indításakor megjelenik a HTTP-kiszolgáló varázsló, és feltesz néhány alapkérdést a kiszolgáló felügyeletével kapcsolatban. A varázsló befejezése után a HTTP-kiszolgáló beállítások párbeszédablak indul el minden egyes alkalommal, amikor elindítja a HTTP-kiszolgáló modult. További információkért lásd: 28.2.3.2. - HTTP-kiszolgáló beállítások.

28.2.3.1. HTTP-kiszolgáló varázsló

A HTTP-kiszolgáló varázsló öt lépésből áll. A párbeszédablak utolsó lépésében beléphet a szakértői beállítások közé, ha még speciálisabb beállításokra van szükség.

28.2.3.1.1. Hálózati eszköz kiválasztása

Itt kell megadni a hálózati csatolókat és portokat, amelyeken az Apache figyelni fogja a bejövő kéréseket. A meglévő hálózati csatolók és IP-címeik tetszés szerinti kombinációja használható. Mindhárom tartomány (jól ismert portok, bejegyzett portok és dinamikus/privát portok) egyéb szolgáltatások által nem foglalt portjai használhatók. Az alapértelmezett beállítás a minden hálózati csatolón (IP-címen), a 80-as porton történő figyelés.

Jelölje meg a Tűzfalport megnyitása beállítást a webkiszolgáló által figyelt portok megnyitásához a tűzfalon. Erre szükség van ahhoz, hogy a webkiszolgáló valóban elérhető legyen a hálózaton (legyen akár LAN, WAN, akár a nyilvános internet). A port zárva tartásának csak olyan teszthelyzetekben van értelme, ahol senkinek nem kell kívülről elérnie a webkiszolgálót. Ha egynél több hálózati csatoló van a gépben, akkor kattintson a Tűzfalbeállítások pontra és adja meg, mely csatoló(ko)n mely port(ok) legyen(ek) megnyitva.

Nyomja meg a Tovább gombot a beállítások folytatásához.

28.2.3.1.2. Modulok

A Modulok részben lehet be- és kikapcsolni a webkiszolgáló által támogatandó parancsnyelveket. A többi modul be- és kikapcsolásának leírása: 28.2.3.2.2. - Kiszolgálómodulok. Kattintson a Tovább gombra a következő párbeszédablakra lépéshez.

28.2.3.1.3. Alapértelmezett gép

Ezek a beállítások az alapértelmezett webkiszolgálóra vonatkoznak. Amint az a 28.2.2.1. - Virtuális gépek konfigurációja részben is olvasható, az Apache képes egyetlen fizikai gépről több virtuális gépet kiszolgálni. A konfigurációs fájlban elsőként megadott virtuális gépet szokás az alapértelmezett gépnek hívni. Minden egyes virtuális gép megörökli az alapértelmezett gép konfigurációját.

A gép beállításainak (más szavakkal, direktíváinak) módosításához válassza ki a táblázat megfelelő bejegyzését, majd kattintson a Szerkesztés gombra. Új direktívák felvételéhez kattintson a Hozzáadás gombra. Egy direktíva törléséhez válassza ki és kattintson a Törlés gombra.

28.1. ábra - HTTP kiszolgáló varázsló: Alapértelmezett gép

HTTP kiszolgáló varázsló: Alapértelmezett gép

Itt láthatók a kiszolgáló alapértelmezett beállításai.

Document Root

Annak a könyvtárnak az elérési útja, ahonnan az Apache kiszolgálja az adott gép fájljait. Az alapértelmezett hely az /srv/www/htdocs.

Alias

Az Alias direktívák használatával az URL-ek megfeleltethetők a fizikai fájlrendszer egyes helyeinek. Ez azt jelenti, hogy ha egy bizonyos útvonal kívül is esne a Document Root-ban megadott helyet, akkor is elérhető a fájlrendszer ezen része, az URL-t ennek megfeleltetve.

Az openSUSE alapértelmezett Alias /icons beállítása az /usr/share/apache2/icons könyvtárra mutat, innen veszi az Apache ikonjait a könyvtárindex-nézet megjelenítéséhez.

ScriptAlias

Az Alias direktívához hasonlóan, a ScriptAlias direktíva is egy bizonyos URL-t a fájlrendszer egy adott részéhez rendel. A különbség az, hogy a ScriptAlias esetén a célkönyvtár CGI-parancsfájlokat tartalmaz, vagyis a CGI-parancsfájlokat erről a helyről szabad csak végrehajtani.

Directory

A Directory direktívával egy sor olyan beállítást lehet megadni, amelyek csak a megadott könyvtárra vonatkoznak.

Itt vannak beállítva az /srv/www/htdocs/usr/share/apache2/icons és az /srv/www/cgi-bin könyvtárak hozzáférési és megjelenítési jellemzői. Nincs szükség az alapértelmezett értékek megváltoztatására

Include

Az include utasítással további konfigurációs fájlok adhatók meg. Két Include direktíva már előre be van állítva: az /etc/apache2/conf.d/ az a könyvtár, amely a külső modulok konfigurációs fájljait tartalmazza. Ezzel a beállítással a könyvtár minden .conf kiterjesztésű fájlja beágyazásra kerül. A második direktíva az jelenti, hogy az /etc/apache2/conf.d/apache2-manual.conf fájl, az apache2-manual konfigurációs fájl legyen beágyazva.

Kiszolgáló neve

Ez adja meg az alapértelmezett URL-t, amelyen a kliensek elérik a webkiszolgálót. Használja a webkiszolgáló elérésére szolgáló teljesen megadott tartománynevet (http://FQDN/), vagy az IP-címét. Itt nem választhat teljesen önkényesen nevet – a kiszolgálónak ezen a néven kell ismertnek lennie.

Adminisztrátor e-mail címe

A kiszolgáló rendszergazdájának e-mail címe. Ez a cím megjelenik például az Apache által előállított oldalakon.

Az Alapértelmezett gép lépés befejezése után kattintson a Tovább gombra a beállítás folytatásához.

28.2.3.1.4. Virtuális gépek

Ebben a lépésben a varázsló megjeleníti a már beállított virtuális gépek listáját (lásd: 28.2.2.1. - Virtuális gépek konfigurációja). Ha nem végzett kézi módosításokat a YaST HTTP varázslójának elindítása előtt, akkor itt nem látható virtuális gép.

Egy gép hozzáadásához kattintson a Hozzáadás gombra. Megnyílik egy párbeszédablak, amelyben megadhatja a géppel kapcsolatos legfontosabb adatokat, mint például a Kiszolgálónév, a Webes tartalom gyökere (DocumentRoot) és az Adminisztrátor e-mail címe. A Kiszolgáló névfeloldás szolgál annak megadására, hogyan történjen a gép azonosítása (név vagy IP alapján). Adja meg a nevet vagy IP-címet a Virtuális gép ID megváltoztatása mezőben.

Nyomja meg a Tovább gombot a virtuálisgép-konfigurációs párbeszédablak második részére való továbblépéshez.

A virtuálisgép-konfiguráció második részében adhatja meg, hogy kíván-e CGI-parancsfájlokat használni, és ha igen, ezek melyik könyvtárban találhatók. Szintén itt lehet bekapcsolni az SSL használatát. Ha így tesz, akkor meg kell adni a tanúsítvány elérési útját is. Az SSL-lel és a tanúsítványokkal kapcsolatos további részletek: 28.6.2. - Apache beállítása SSL-hez. A Könyvtárindex paraméterben adhatja meg, hogy mely fájlt jelenítse meg a kiszolgáló, ha a kliens csak egy könyvtárat adott meg (az alapértelmezett érték az index.html). Írja be a kívánt fájlneveket (szóközzel elválasztva), ha ezt módosítani kívánja. A Nyilvános HTML engedélyezése mezőben a felhasználók nyilvános könyvtárainak ~user/public_html/) tartalma tehető elérhetővé a kiszolgálón a http://www.example.com/~felhasználó címen.

[Important]Virtuális gépek létrehozása

Virtuális gépeket nem lehet összevissza felvenni. Név alapú virtuális gépek használata esetén minden egyes gépnévnek feloldhatónak kell lennie a hálózaton. IP alapú virtuális gépek használata esetén minden egyes IP-címhez csak egy gépnév rendelhető.

28.2.3.1.5. Összegzés

Ez a varázsló utolsó lépése. Itt adhatja meg, hogy hogyan és mikor induljon az Apache kiszolgáló: rendszerindításkor, vagy kézzel. Szintén itt jelenik meg az eddig elvégzett beállítások rövid összefoglalója. Ha meg van elégedve a beállításokkal, akkor kattintson a Befejezés gombra a beállítások befejezéséhez. Ha módosítani kíván valamit, akkor kattintson a Vissza gombra egészen addig, amíg a kívánt párbeszédablakhoz nem ér. A HTTP-kiszolgáló szakértői beállítások gomb a 28.2.3.2. - HTTP-kiszolgáló beállítások részben leírt párbeszédablakot nyitja meg.

28.2. ábra - HTTP-kiszolgáló varázsló: Összegzés

HTTP-kiszolgáló varázsló: Összegzés

28.2.3.2. HTTP-kiszolgáló beállítások

A HTTP-kiszolgáló beállítások párbeszédablakban a varázslónál még részletesebben adhatók meg a beállítások (a varázsló egyébként is csak akkor fut le, ha az első alkalommal állítja be a webkiszolgálót). Négy lapból áll, amelyeket az alábbiakban mutatunk be. Itt semmilyen beállítás nem lép azonnal érvényre – a módosításokat előbb meg kell erősíteni a Befejezés gombra kattintva. A Megszakítás gombra kattintás esetén kilép a konfigurációs modulból és elveti a változtatásokat.

28.2.3.2.1. Figyelt portok és címek

A HTTP szolgáltatás részben adja meg, hogy az Apache fusson-e (Bekapcsolva) vagy le legyen állítva (Letiltva). A Figyelt portok részben a Hozzáadás, Szerkesztés, és Törlés gombok használatával vegye fel a címeket és portokat, amelyeken a kiszolgálónak elérhetőnek kell lennie. Az alapértelmezés az összes csatolón a 80-as port figyelése. A Tűzfalport megnyitása beállítást mindig engedélyezze meg, különben a webkiszolgálót nem lehet majd elérni kívülről. A port zárva tartásának csak olyan teszthelyzetekben van értelme, ahol senkinek nem kell kívülről elérnie a webkiszolgálót. Ha egynél több hálózati csatoló van a gépben, akkor kattintson a Tűzfalbeállítások pontra és adja meg, mely csatoló(ko)n mely porto(k) legyenek megnyitva.

A Naplófájlok részben tekintheti meg a hozzáférési naplót és a hibanaplót. Ez hasznos, ha tesztelni kívánja a beállításokat. A naplófájl egy külön ablakban nyílik meg, ahonnan újraindíthatja és újratöltheti a webkiszolgálót. Ennek részletes leírása: 28.3. - Az Apache elindítása és leállítása. Ezek a parancsok azonnal érvényre jutnak és naplóüzeneteik is azonnal megjelennek.

28.3. ábra - HTTP-kiszolgáló beállítások: Figyelt portok és címek

HTTP-kiszolgáló beállítások: Figyelt portok és címek

28.2.3.2.2. Kiszolgálómodulok

Az Apache2-modulok (bekapcsolt vagy kikapcsolt) állapotának módosításához kattintson az Állapot átkapcsolása gombra. A Modul hozzáadása gombra kattintva vehet fel egy új, már telepített, de még fel nem sorolt modult. Tudjon meg többet a modulokról a 28.4. - Modulok telepítése, aktiválása és beállítása című fejezetből.

28.4. ábra - HTTP-kiszolgáló beállítások: Kiszolgálómodulok

HTTP-kiszolgáló beállítások: Kiszolgálómodulok

28.2.3.2.3. Helyi gép vagy gépek

Ezek a párbeszédablakok megegyeznek a már leírtakkal. További információ: 28.2.3.1.3. - Alapértelmezett gép és 28.2.3.1.4. - Virtuális gépek.

28.3. Az Apache elindítása és leállítása

Ha a YaST-tal állította be (lásd: 28.2.3. - Az Apache beállítása a YaST segítségével), akkor az Apache a 3-as és 5-ös futási szinteken automatikusan elindul a rendszer indításakor, a 0, 1, 2. és 6. futási szinteken pedig le van állítva. Ez a viselkedés módosítható a YaST futásiszint-szerkesztőjével és a chkconfig parancssori eszközzel is.

Ha egy futó rendszeren kívánja az Apache szolgáltatást elindítani, leállítani vagy módosítani, akkor használja a /usr/sbin/rcapache2 parancsfájlt. Ezekről a parancsfájlokról további információ a következő helyen található16.2.2. - Init parancsfájlok. Az rcapache2 parancsnak a következő paramétereket lehet megadni:

status

Ellenőrzi, hogy az Apache el van-e indítva.

start

Ha még nem lenne elindítva, akkor elindítja az Apache kiszolgálót.

startssl

Ha még nem lenne elindítva, akkor elindítja az Apache kiszolgálót SSL-támogatással. További információ az SSL-támogatásról: 28.6. - Biztonságos webkiszolgáló beállítása SSL használatával.

stop

Leállítja az Apache kiszolgálót (a szülőfolyamat leállításával).

restart

Leállítja, majd újraindítja az Apache kiszolgálót. Ha még nem lett volna elindítva, akkor elindítja a webkiszolgálót.

try-restart

Leállítja az Apache-ot, és amennyiben futott, akkor újra is indítja.

reload vagy graceful

Leállítja a webkiszolgálót úgy, hogy az összes leágazott Apache-folyamatot értesíti, hogy leállás előtt még szolgálják ki a kéréseiket. Ahogy az egyes folyamatok elhalnak, újak indulnak helyettük, így végül az Apache teljesen újraindul.

[Tip]Apache újraindítása üzemi környezetben

Amennyiben módosítani kívánja az Apache beállításokat, anélkül, hogy az kapcsolatvesztéssel járjon, használja rcapache2 reload parancsot.

restart-graceful

Elindít egy második webkiszolgálót, amely azonnal kiszolgálja az összes bejövő kérést. A webkiszolgáló előző példánya még a GracefulShutdownTimeout paraméternél megadott ideig kiszolgálja az összes meglévő kérést.

Az rcapache2 restart-graceful hasznos lehet egy új verzióra frissítésnél, vagy ha olyan beállításokat módosított, amelyek mindenképpen teljes újraindítást igényelnek. E paraméter használatával minimálisra csökkenthető a kiszolgáló leállása.

A GracefulShutdownTimeout paramétert be kell állítani, különben a restart-graceful egy szokásos újraindítást fog eredményezni. Nullára állítás esetén a kiszolgáló egészen addig vár, amíg az összes függőben lévő kérést ki nem szolgálja.

Az ilyen ''kellemes'' (graceful) újraindítás azonban lehet, hogy nem sikerül, ha az eredeti Apache-példánynak nem sikerül felszabadítania az összes szükséges erőforrást. Ebben az esetben a parancs egy "kellemes" leállást fog eredményezni.

stop-graceful

Leállítja a webkiszolgálót a GracefulShutdownTimeout paraméternél megadott idő után, annak érdekében, hogy a meglévő kéréseket még ki lehessen szolgálni.

A GracefulShutdownTimeout paramétert be kell állítani, különben a stop-graceful egy szokásos újraindítást fog eredményezni. Nullára állítás esetén a kiszolgáló egészen addig vár, amíg az összes függőben lévő kérést ki nem szolgálja.

configtest vagy extreme-configtest

A futó webkiszolgáló befolyásolása nélkül ellenőrzi a konfigurációs fájlok szintaxisának helyességét. Mivel ez az ellenőrzés megtörténik a kiszolgáló minden egyes indulásakor, újratöltésekor és újraindításakor, általában nincs szükség a teszt külön futtatására (ha ugyanis konfigurációs hiba van, akkor a webkiszolgáló indítása, újratöltése vagy újraindítása nem fog sikerülni). Az extreme-configtest paraméter a webkiszolgálót a nobody felhasználó nevében elindítja és ténylegesen be is tölti, így több hiba észlelhető. Ügyeljen azonban arra, hogy bár a konfigurációt betölti a program, az SSL-beállításokat nem fogja tudni vizsgálni, mivel a nobody felhasználó nem jogosult elolvasni az SSL-tanúsítványokat.

probe

Ellenőrzi, hogy van-e szükség újratöltésre (azt vizsgálja meg, hogy módosult-e a konfiguráció) és javaslatot tesz az rcapache2 parancs után használandó paraméterre.

server-status és full-server-status

Rövid ill. részletes állapotjelentést ír ki a kiszolgálóról. Használatához telepíteni kell a lynx vagy w3m csomagot, továbbá a mod_status modult is be kell kapcsolni. Ezenfelül az /etc/sysconfig/apache2 fájlban az APACHE_SERVER_FLAGS sorban fel kell venni a status paramétert is.

[Tip]További jelzők

Ha további jelzőket ad meg az rcapache2 parancsnak, akkor ezeket továbbítja a webkiszolgáló felé.

28.4. Modulok telepítése, aktiválása és beállítása

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ölthetők dinamikusan, futás közben is. A modulok dinamikus betöltéséről a 28.4.2. - Aktiválás és deaktiválás rész szól.

Az Apache-modulok négyféle kategóriába tartozhatnak:

Alapmodulok

Az alapmodulok alapértelmezés szerint be vannak fordítva az Apache-ba. Az openSUSE 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 érhető el: ahelyett, hogy a bináris kiszolgálófájlban lennének benne, futás közben tölthetők be.

Bővítőmodulok

Általában a bőví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ölthető objektumokként érhetők el.

Külső modulok

A külsőnek jelölt modulok nem részei a hivatalos Apache-disztribúciónak. Az openSUSE azonban tartalmaz néhányat

Többprocesszoros modulok (MMPs)

Az MPM-ek felelősek a webkiszolgálóhoz érkező kérések fogadásáért és kezeléséért, és ezek alkotják a webkiszolgáló szoftver magját.

28.4.1. Modulok telepítése

Amennyiben az alapértelmezett telepítést követte a 28.1.2. - Telepítés fejezetben leírtak szerint, akkor a következő modulok már telepítve vannak: minden alap (base) és kiterjesztő (externsion) modul, a többprocesszoros modul Prefork MPM és a mod_php5, valamint a mod_python modulok.

További külső modulok telepítéséhez indítsa el a YaST-ot és válassza ki a Szoftver+Szoftverkezelés modult. Válassza ki a Szűrő+Keresés menüpontot, és keresse ki az apache-t. Más egyéb csomagok mellett az eredménylistában megjelenik az összes rendelkezésre álló külső Apache-modul is.

28.4.2. Aktiválás és deaktiválás

Az egyes modulokat aktiválni és deaktiválni lehet kézzel vagy a YaST használatával. A YaST-ban található szkriptnyelv-modulok (PHP5, Perl és Phyton) engedélyezése és letiltása a 28.2.3.1. - HTTP-kiszolgáló varázsló fejezetben leírtaknak megfelelően. Az összes többi modul be- és kikapcsolásának módját a 28.2.3.2.2. - 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.

[Important]Külső modulok konfigurációs fájlainak beágyazása

Ha kézzel aktivált külső 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ülső 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.

28.4.3. Alap- és bővítőmodulok

Az összes alap- és bővítőmodul 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.

mod_actions

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ésű (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.

mod_alias

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 rendelhető (Alias), vagy egy URL átirányítható egy másik helyre. Ez a modul alapértelmezés szerint be van kapcsolva.

mod_auth*

A hitelesítési modulok különféle hitelesítési eljárásákat kínálnak: alapszintű 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 egyelőre kísérletinek tekintendő.

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).

mod_autoindex

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.

mod_cgi

A mod_cgi szükséges CGI-parancsfájlok végrehajtásához. Ez a modul alapértelmezés szerint be van kapcsolva.

mod_deflate

E modul használatával az Apache beállítható, hogy menet közben, még kiszolgálás előtt tömörítsen bizonyos fájltípusokat.

mod_dir

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 megfelelő 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.

mod_env

A CGI-parancsfájloknak vagy SSI-oldalaknak átadott környezetet szabályozza. A httpd folyamatot meghívó parancsértelmezőben 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.

mod_expires

A mod_expires használatával szabályozható, hogy a proxy és böngésző gyorsítótárak milyen sűrűn frissítsék a dokumentumokat egy Expires fejléc küldésével. Ez a modul alapértelmezés szerint be van kapcsolva.

mod_include

A mod_include lehetővé teszi kiszolgálóoldali beágyazások (Server Side Includes, SSI) használatát, amely egy alapszintű megoldás a HTML-oldalak dinamikus előállítására. Ez a modul alapértelmezés szerint be van kapcsolva.

mod_info

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..

mod_log_config

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.

mod_mime

A fájlnevek kiterjesztése alapján a mime modul megbizonyosodik arról, hogy a fájlok a megfelelő (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.

mod_negotiation

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.

mod_rewrite

A mod_alias funkcióit biztosítja, de többféle lehetősé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.

mod_setenvif

A klienstől érkező kérés részletei, például a kliens által elküldött böngészőazonosí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.

mod_speling

A mod_speling megkísérli automatikusan korrigálni az URL-ek elgépeléseit, például a véletlen nagybetűket.

mod_ssl

Titkosított kapcsolatot létesít a webkiszolgáló és a kliensek között. Részletek: 28.6. - Biztonságos webkiszolgáló beállítása SSL használatával. Ez a modul alapértelmezés szerint be van kapcsolva.

mod_status

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.

mod_suexec

A mod_suexec lehetővé teszi a CGI-parancsfájlok egy másik felhasználó és csoport nevében történő futtatását. Ez a modul alapértelmezés szerint be van kapcsolva.

mod_userdir

Lehetővé 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.

28.4.4. Többprocesszoros modulok (MPM)

Az openSUSE kétféle többprocesszoros modul (MPM) használatát biztosítja az Apache-hoz:

28.4.4.1. Prefork MPM

A prefork MPM egy nem szálkezelő, előre 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 őket, 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 rendszererőforrá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.

[Important]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.

28.4.4.2. Worker MPM

A worker MPM egy többszálú webkiszolgálót valósít meg. A szál a folyamatnak egy egyszerűbb fajtája. Ha szálakat használ folyamatok helyett, kevesebb erőforrá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 előre 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-erőforrá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 belső kiszolgálóhibák jelentkezhetnek, mivel a szálak nem tudnak kommunikálni a rendszer erőforrá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.

[Warning]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.

28.4.5. Külső modulok

Alább felsoroljuk az openSUSE összes külső modulját. A modul dokumentációja a jelzett könyvtárban található.

mod-apparmor

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.

Csomagnév: apache2-mod_apparmor
További információ: Part “Confining Privileges with Novell AppArmor” (↑Security Guide)
mod_mono

A mod_mono használatával a kiszolgáló ASP.NET oldalak futtatására is képessé válik.

Csomagnév: apache2-mod_mono
Konfigurációs fájl: /etc/apache2/conf.d/mod_mono.conf
mod_perl

A mod_perl használatával a Perl parancsfájlok egy beépített értelmezővel futtathatók. A kiszolgálóba épített állandó értelmező révén nincs szükség állandóan egy külső értelmező elindítására, és minden alkalommal a Perl indulásának kivárására.

Csomagnév: apache2-mod_perl
Konfigurációs fájl: /etc/apache2/conf.d/mod_perl.conf
További információ: /usr/share/doc/packages/apache2-mod_perl
mod_php5

A PHP egy kiszolgálóoldali, többplatformos, HTML-be ágyazott parancsnyelv.

Csomagnév: apache2-mod_php5
Konfigurációs fájl: /etc/apache2/conf.d/php5.conf
További információ: /usr/share/doc/packages/apache2-mod_php5
mod_python

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.

Csomagnév: apache2-mod_python
További információ: /usr/share/doc/packages/apache2-mod_python
mod_tidy

A mod_tidy minden egyes kimenő HTML-oldalt ellenőriz a TidyLib alapján. Ellenőrzési hiba esetén egy hibalistát tartalmazó oldal jelenik meg. Ellenkező esetben az eredeti HTML oldal kerül kiszolgálásra.

Csomagnév: apache2-mod_tidy
Konfigurációs fájl: /etc/apache2/mod_tidy.conf
További információ: /usr/share/doc/packages/apache2-mod_tidy

28.4.6. Fordítás-összeszerkesztés

Képzett felhasználó ki is bővíthetik az Apache funkcionalitását egyedi modulok írásával. Apache-modulok fejlesztéséhez, illetve külső fejlesztésű modulok lefordításához szükség van az apache2-devel csomagra, valamint a megfelelő fejlesztőeszkö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 lehetővé a forráskódú modulok lefordítását és telepítését (beleértve a konfigurációs fájlok megfelelő módosításait is), az Apache-ba futási időben betölthető, ú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ó bővítőmodulok készíthetők. A telepítési helye az /usr/lib/apache2.

  • Az /usr/sbin/apxs2-prefork segítségével a prefork MPM alatt használható bővítőmodulok készíthetők. 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ó bővítőmodulok készíthetők. A telepítési helye az /usr/lib/apache2-worker.

A modul forráskódból történő telepítéséhez és aktiválásához a következő parancsot kell használni:

cd /path/to/module/source; apxs2 -cia
    mod_foo.c

ahol a -c összefordítja a modult, a -i telepíti a -a pedig aktiválja. Az apxs2 egyéb paramétereit az apxs2(1) kézikönyvoldala írja le.

28.5. CGI-parancsfájlok használata

Az Apache Common Gateway Interface (CGI) csatolójával dinamikus tartalom is előállítható különféle programokkal vagy parancsfájlokkal, amelyeket általában CGI-parancsfájlok néven szokás emlegetni. CGI-parancsfájlok bármilyen programozási nyelven írhatók. Leggyakrabban a Perlhez és PHP-hoz hasonló parancsnyelveket használnak e célra.

Ahhoz, hogy az Apache kiszolgálja a CGI-parancsfájlok által előállított tartalmat, a mod_cgi modult aktiválni kell. Szükség van a mod_alias-ra is. Alapértelmezés szerint mindkét modul be van kapcsolva. A modulok aktiválásának részletei: 28.4.2. - Aktiválás és deaktiválás.

[Warning]CGI-biztonság

A CGI-parancsfájlok végrehajtásának engedélyezése potenciális biztonsági rést jelent a kiszolgálón. További információ: 28.7. - Biztonsági problémák elkerülése.

28.5.1. Az Apache beállítása

openSUSE rendszereken a CGI-parancsfájlok végrehajtása kizárólag a /srv/www/cgi-bin/ könyvtárból engedélyezett. Ez a hely viszont már be is van előre állítva a CGI-parancsfájlok futtatására. Ha virtuális gépeket használ (lásd 28.2.2.1. - Virtuális gépek konfigurációja) és a parancsfájlokat a géphez tartozó könyvtárba kívánja helyezni, akkor ezt a könyvtárat előbb fel kell oldani és be kell állítani.

28.5. példa - Virtuális gépek beállítása CGI-hez

ScriptAlias /cgi-bin/ "/srv/www/www.example.com/cgi-bin/"1

<Directory "/srv/www/www.example.com/cgi-bin/">
 Options +ExecCGI2
 AddHandler cgi-script .cgi .pl3
 Order allow,deny4
 Allow from all
</Directory>

1

Azt jelzi az Apache számára, hogy a könyvtárban található minden fájlt tekintsen CGI-parancsfájlnak.

2

Engedélyezi a CGI-parancsfájlok végrehajtását

3

Azt jelzi a kiszolgáló számára, hogy a .pl és .cgi kiterjesztésű fájlokat tekintse CGI-parancsfájloknak. Módosítsa igényei szerint.

4

Az Order és Allow direktívák szabályozzák az alapértelmezett hozzáférés állapotát, illetve az Allow és Deny direktívák kiértékelésének a sorrendjét. A jelen esetben az allow utasítások a deny utasítások előtt kerülnek kiértékelésre, és az univerzális hozzáférés engedélyezett.


28.5.2. Egy példaparancsfájl futtatása

A CGI-programozás eltér annyiban a "szokásos" programozástól, hogy a CGI-programokat és -parancsfájlokat egy MIME-Type fejlécnek kell megelőznie, például egy ilyennek: Content-type: text/html. A kliens megkapja ezt a fejlécet, hogy tisztában legyen vele, milyen típusú tartalom is érkezik ezután. Másodszor, a parancsfájl kimenete valami olyan kell, hogy legyen, amit a kliens (jellemzően egy webböngésző) megért – vagyis elsősorban HTML, esetleg sima szöveg vagy például egy kép.

Az Apache csomag része egy egyszerű példaparancsfájl, az /usr/share/doc/packages/apache2/test-cgi. Ez néhány környezeti változó tartalmát írja ki egyszerű szövegként. Másolja át ezt a parancsfájlt akár az /srv/www/cgi-bin/ könyvtárba, akár a virtuális gép parancsfájl-könyvtárába (/srv/www/www.example.com/cgi-bin/) és nevezze át test.cgi névre.

A webkiszolgáló számára elérhető fájlok tulajdonosának a root felhazsnálónak kell lennie. Ezzel kapcsolatos további információ a 28.7. - Biztonsági problémák elkerülése fejezetben található . Mivel a webkiszolgáló más felhasználó nevében fut, a CGI-parancsfájloknak mindenki által olvashatónak és végrehajthatónak kell lenniük. Váltson át a CGI-könyvtárba, és adja ki a chmod 755 test.cgi parancsot a megfelelő jogosultságok biztosításához.

Most már beírhatja a böngészőbe a http://localhost/cgi-bin/test.cgi vagy a http://www.example.com/cgi-bin/test.cgi címet. Meg kell, hogy jelenjen a CGI/1.0 test script report oldal.

28.5.3. CGI-hibaelhárítás

Ha nem jelenik meg a tesztprogram kimenete, csak egy hibaüzenet látszik, akkor ellenőrizze az alábbiakat:

CGI-hibaelhárítás

  • Újratöltötte-e a kiszolgálót a konfiguráció módosítása után? Ellenőrizze ezt az rcapache2 probe paranccsal.

  • Ha egyéni CGI-könyvtárat állított be, helyesek-e a beállítások? Ha nem biztos benne, próbálja ki a parancsfájlt az alapértelmezett CGI-könyvtárral (/srv/www/cgi-bin/) és érje el a http://localhost/cgi-bin/test.cgi címen.

  • Rendben vannak-e a fájljogosultságok? Váltson át a CGI-könyvtárba, és adja ki az ls -l test.cgi parancsot. A kimenetnek így kell kezdődnie:

    -rwxr-xr-x  1 root root
  • Győződjön meg róla, hogy a parancsfájl nem tartalmaz programozási hibákat. Ha a test.cgi-t használja, ez nem fordulhat elő, de ha saját programokat ír, mindig győződjön meg róla, hogy azok hibátlanul működnek.

28.6. Biztonságos webkiszolgáló beállítása SSL használatával

Amikor bizalmas adatok, például hitelkártyaszámok kerülnek továbbításra a webkiszolgáló és a kliens között, akkor mindenképpen kívánatos egy biztonságos, titkosított, hitelesített kapcsolat használata. A mod_ssl erős titkosítást biztosít és az SSL (Secure Sockets Layer), illetve TLS (Transport Layer Security) protokollok használatával védi a webkiszolgáló és a kliens közötti HTTP-kommunikációt. Az SSL/TSL használata esetén a webkiszolgáló és a kliens között privát kapcsolat jön létre. Garantált az adatok integritása, és mind a kliens, mind a kiszolgáló képes ellenőrizni a másik hitelességét.

Ehhez a kiszolgáló, még mielőtt bármilyen URL-re válaszolna, egy SSL-tanúsítványt küld, benne a kiszolgáló érvényes azonosságával. Ezzel igazolja, hogy a kiszolgáló valóban a helyes végpontja a kommunikációnak. Ezenfelül a tanúsítvány használatával titkosított kapcsolat jön létre a kliens és a kiszolgáló között, így a nyílt szövegű adatok szabadon továbbíthatók a felfedés kockázata nélkül.

A mod_ssl does nem maga valósítja meg az SSL/TSL protokollokat, csupán közvetítőként működik közre az Apache és egy SSL-programkönyvtár között. Az openSUSE rendszerben ez utóbbi az OpenSSL programkönyvtár. Az OpenSSL az Apache mellett automatikusan telepítésre kerül.

A mod_ssl használatának legészrevehetőbb jellemzője, hogy az URL-ek https://-sel kezdődnek, nem http://-vel.

[Tip]Példatanúsítvány

Egy példatanúsítvány az Snake Oil nevű elképzelt céghez a apache2-example-certificates csomag telepítése esetén érhető el.

28.6.1. SSL-tanúsítvány létrehozása

Az SSL/TSL használatához a webkiszolgálón szükség van egy SSL-tanúsítványra. A tanúsítvány a webkiszolgáló és a kliens közötti hitelesítés során játszik szerepet, ennek alapján azonosíthatók az egyes felek egyértelműen. A tanúsítvány integritásának biztosítása érdekében azt egy olyan félnek kell aláírnia, amelyben minden felhasználó megbízik.

A létrehozható tanúsítványoknak három fajtája van: üres (dummy) tanúsítványok kizárólag teszteléshez, önállóan aláírt tanúsítványok azon felhasználók számára, akik megbíznak Önben, illetve az egy független, széles körben ismert és elfogadott tanúsítványhatóság (CA) által aláírt tanúsítványok.

A tanúsítványok előállítása két lépésből álló folyamat. Először egy saját kulcs készül a tanúsítványhatóság számára; utána a kiszolgálótanúsítvány ezzel a kulccsal lesz aláírva.

[Tip]További információk

Az SSL/TSL fogalmaival és meghatározásaival kapcsolatos további részletek a http://httpd.apache.org/docs/2.2/ssl/ssl_intro.html címen olvashatók.

28.6.1.1. Üres tanúsítvány előállítása

Az üres tanúsítványok előállítása igen egyszerű. Mindössze meg kell hívni az /usr/bin/gensslcert parancsfájlt. Ez létrehozza, vagy felülírja az alábbi fájlokat. A tanúsítvány finomhangolásához a gensslcert beállításai használhatók. További információért írja be a /usr/bin/gensslcert -h parancsot.

  • /etc/apache2/ssl.crt/ca.crt

  • /etc/apache2/ssl.crt/server.crt

  • /etc/apache2/ssl.key/server.key

  • /etc/apache2/ssl.csr/server.csr

  • /root/.mkcert.cfg

A ca.crt egy másolata bekerül az /srv/www/htdocs/CA.crt helyre is, letöltéshez.

[Important]Csak teszteléshez

Éles rendszeren nem szabad üres tanúsítványt használni. Kizárólag tesztelési célokat szolgál.

28.6.1.2. Önállóan aláírt tanúsítvány létrehozása

Ha egy intraneten vagy felhasználók meghatározott köre számára hoz létre biztonságos webkiszolgálót, akkor elegendő lehet, ha csak a saját tanúsítványhatóság (CA) által aláírt tanúsítványt használ.

Az önállóan aláírt tanúsítványok létrehozása egy interaktív, kilenclépéses folyamat. Váltson át az /usr/share/doc/packages/apache2 könyvtárba, és futtassa le az alábbi parancsot: ./mkcert.sh make --no-print-directory /usr/bin/openssl /usr/sbin/ custom. Ne próbálja meg ezt a parancsot más helyről futtatni. A program egy sor kérdést jelenít meg, amelyekre válaszolni kell.

Eljárás 28.4. Önállóan aláírt tanúsítvány előállítása az mkcert.sh használatával

  1. Válassza ki a tanúsítványokhoz használt aláírási algoritmust

    Érdemes az RSA-t (R, ez az alapértelmezés) választani, mert néhány régebbi böngészőnek gondjai vannak a DSA-val.

  2. RSA saját kulcs előállítása a CA számára (1024 bit)

    Nincs szükség egyéb beavatkozásra.

  3. X.509 tanúsítvány aláírási kérés előállítása a CA számára

    Itt kell létrehozni a CA megkülönböztetett nevét. Ehhez meg kell válaszolni néhány kérdést, például meg kell adni az ország és a szervezet nevét. Érvényes adatokat adjon meg, mert mindez később látszani fog a tanúsítványban. Nem muszáj minden kérdésre válaszolni. Ha valamelyik nem alkalmazható, vagy üresen kívánja hagyni, akkor adjon meg egy . karaktert válaszul. Az általános név (common name) a CA-nak magának a neve – célszerűen valami értelmes nevet adjon meg, például azt, hogy Futrimpex Kft. CA (ha például így hívják a céget).

    [Important]A CA közös neve

    A CA közös nevének különböznie kell a kiszolgáló közös nevétől, ezért ebben a lépésben nem jó a teljes gépnevet használni.

  4. X.509 tanúsítvány előállítása a CA számára, saját maga által aláírva

    Válassza a 3-as (az alapértelmezett) tanúsítványverziót.

  5. RSA saját kulcs előállítása a kiszolgáló számára (1024 bit)

    Nincs szükség egyéb beavatkozásra.

  6. X.509 tanúsítvány aláírási kérés előállítása a kiszolgáló számára

    Itt hozza létre a kiszolgáló megkülönböztetett nevét. A kérdések szinte tökéletesen megegyeznek azokkal, amelyeket a CA megkülönböztetett nevénél megválaszolt. Az itt beírt adatok a webkiszolgálóra vonatkoznak, és nem kell feltétlenül megegyezniük a CA adataival (lehet például, hogy a kiszolgáló valahol másutt van fizikailag).

    [Important]Általános név választása

    Az itt megadott általános név a biztonságos kiszolgáló teljesen megadott állomásneve kell, hogy legyen (tehát például www.example.com). Ha nem ezt adja meg, akkor a böngésző a kiszolgáló elérésekor figyelmeztetést fog kiírni, hogy a tanúsítvány nem felel meg a kiszolgálónak.

  7. A saját CA által aláírt X.509 tanúsítvány előállítása

    Válassza a 3-as (az alapértelmezett) tanúsítványverziót.

  8. A CA saját RSA-kulcsának titkosítása egy jelszóval a biztonság érdekében

    Határozottan javasolt a CA saját kulcsát titkosítani egy jelszóval, ezért ebben a lépésben Y-nal válaszoljon és adjon meg egy jelszót.

  9. A kiszolgáló saját saját RSA-kulcsának titkosítása egy jelszóval a biztonság érdekében

    Ha a kiszolgáló kulcsát is titkosítja egy jelszóval, akkor ezt a jelszót minden egyes alkalommal meg kell majd adnia, amikor elindítja a webkiszolgálót. Ez megnehezíti a webkiszolgáló automatikus indítását a rendszer indításakor vagy a webkiszolgáló újraindításakor. Éppen ezért a szokásos válasz erre a kérdésre az N. Ne feledje ugyanakkor, hogy ha nincs jelszóval titkosítva, akkor ez a kulcs védtelen, ezért győződjön meg róla, hogy csak az arra jogosult személyek férhetnek hozzá a kulcshoz.

    [Important]A kiszolgáló kulcsának titkosítása

    Ha úgy döntött, hogy titkosítja jelszóval a kiszolgáló kulcsát, akkor növelje meg az APACHE_TIMEOUT értékét az /etc/sysconfig/apache2 fájlban. Ellenkező esetben nem lesz elegendő ideje beírni a jelszót, mielőtt a kiszolgáló leállna sikertelen indításra hivatkozva.

A parancsfájl eredményoldalán megjelenik az előállított kulcsok és tanúsítványok listája. Szemben azzal, amit a parancsfájl állít, a fájlok nem a helyi conf könyvtárban jöttek létre, hanem a megfelelő helyen, az /etc/apache2/ könyvtárban.

Az utolsó lépés a CA-tanúsítványfájl átmásolása az /etc/apache2/ssl.crt/ca.crt helyről egy olyan helyre, ahol a felhasználók elérhetik és felvehetik az ismert és megbízható CA-k közé webböngészőikben. Ellenkező esetben a böngésző panaszkodni fog, hogy a tanúsítványt egy ismeretlen hatóság állította ki. A tanúsítvány egy évig érvényes.

[Important]Önállóan aláírt tanúsítványok

Csak olyan webkiszolgálón használjon önállóan aláírt tanúsítványt, amelyet olyan emberek érnek el, akik megbíznak Önben és elfogadják tanúsítványhatóságnak. Egy nyilvános webáruházban például nem javasolt ilyen tanúsítványt használni.

28.6.1.3. Hivatalosan aláírt tanúsítvány beszerzése

Számos hivatalos tanúsítványhatóság létezik, amely vállalja a tanúsítványok aláírását. A tanúsítványt egy megbízható harmadik fél írja alá, ettől megbízható. A nyilvánosan működő webkiszolgálók általában ilyen, hivatalos tanúsítványt használnak.

A legismertebb hivatalos CA-k a Thawte (http://www.thawte.com/) és a Verisign (http://www.verisign.com). Ezek és más CA-k be is vannak építve az összes böngészőbe, úgyhogy az általuk aláírt tanúsítványokat a böngészők automatikusan elfogadják.

Egy hivatalosan aláírt tanúsítvány kérésekor az ember nem a tanúsítványt küldi el a CA-nak. Helyette tanúsítvány-aláírási kérést (Certificate Signing Request, CSR) kell küldeni. Egy CSR létrehozásához az /usr/share/ssl/misc/CA.sh -newreq parancsfájlt kell meghívni.

A parancsfájl először bekér egy jelszót, amellyel titkosítani fogja a CSR-t. Ezután bekéri a megkülönböztetett nevet. Ehhez meg kell válaszolni néhány kérdést, például meg kell adni az ország és a szervezet nevét. Érvényes adatokat adjon meg, mert mindez később látszani fog a tanúsítványban és le is ellenőrzik. Nem muszáj minden kérdésre válaszolni. Ha valamelyik nem alkalmazható, vagy üresen kívánja hagyni, akkor adjon meg egy . karaktert válaszul. Az általános név (common name) a CA-nak magának a neve – célszerűen valami értelmes nevet adjon meg, például azt, hogy Futrimpex Kft. CA (ha például így hívják a céget). Utoljára egy ellenőrző jelszót és egy alternatív cégnevet kell megadni.

A CSR ugyanabba a könyvtárba kerül, mint amelyikből a parancsfájlt meghívta. A fájl neve newreq.pem lesz.

28.6.2. Apache beállítása SSL-hez

Az SSL- és TLS-kérések alapértelmezett portszáma a webkiszolgáló oldalán a 443-as. Egy normál, a 80-as porton figyelő Apache és egy, a 443-as porton figyelő SSL/TLS-es Apache között nincs ütközés. Valójában a HTTP és a HTTPS akár ugyanazon az Apache-példányon is futtatható. Általában különböző virtuális gépeket állítanak be a 80-as és a 443-as portokhoz a virtuális kiszolgálók elkülönítéséhez.

[Important]Tűzfal beállítása

Ne felejtse el kinyitni a 443-as portot a tűzfalon az SSL-es Apache számára. Ez elvégezhető a YaST-tal is, a Section “Configuring the Firewall with YaST” (Chapter 14, Masquerading and Firewalls, ↑Security Guide) részben leírt módon.

A globális kiszolgáló beállításban alapértelmezésként az SSL-modul engedélyezve van. Amennyiben az adott gépen le van tiltva, akkor a a2enmod ssl paranccsal lehet engedélyezni. Az SSL teljes aktiválásához a kiszolgálót az SSL beállítással kell indítani. Ehhez az a2enflag SSL parancsot kell használni. Ha úgy döntött, hogy jelszóval védi a kiszolgálótanúsítványt, akkor kellő mértékben növelje meg az APACHE_TIMEOUT értékét a /etc/sysconfig/apache2 fájlban ahhoz, hogy legyen ideje beírni a jelszót az Apache indulásakor. Indítsa újra a kiszolgálót a módosítások érvényre juttatásához. Most nem elegendő az újratöltés.

A virtuálisgép-konfigurációs könyvtárban van egy sablonfájl (/etc/apache2/vhosts.d/vhost-ssl.template) SSL-specifikus direktívákkal, megjegyzésekkel bőségesen ellátva. A virtuális gépek általános beállításaival kapcsolatban forduljon a 28.2.2.1. - Virtuális gépek konfigurációja részhez.

Első lépésként másolja át a sablontfájlt az /etc/apache2/vhosts.d/sajatSSL-host.conf fájlba és módosítsa igény szerint. Általában elegendő az alábbi értékeket módosítani:

  • DocumentRoot

  • ServerName

  • ServerAdmin

  • ErrorLog

  • TransferLog

[Important]Név alapú virtuális gépek és SSL

Csupán egyetlen IP-címmel rendelkező kiszolgálón nem lehet több SSL-es virtuális gépet futtatni. Beállítani ugyan be lehet egy ilyen rendszert, de az ezt meglátogató felhasználók minden egyes alkalommal figyelmeztető üzenetet fognak kapni, hogy a tanúsítvány nem egyezik a kiszolgáló nevével. Minden egyes SSL-re felkészített tartománynak saját IP-címmel kell rendelkeznie ahhoz, hogy érvényes SSL-tanúsítvánnyal tudjon kommunikálni.

28.7. Biztonsági problémák elkerülése

A nyilvános interneten működő webkiszolgálók folyamatos felügyeletet igényelnek. Elkerülhetetlenül fellépnek biztonsági problémát, akár a szoftverből, akár a véletlen félrekonfigurálásból adódóan. Az alábbiakban néhány ötletet szeretnénk adni az elkerülésükhöz.

28.7.1. Naprakész szoftver

Amikor sérülékenységeket találnak az Apache szoftverben, a SUSE biztonsági tanácsot ad ki. Ebben leírja a sérülékenységek kijavításának módját, amelyet a lehető leghamarabb el kell végezni. A SUSE biztonsági bejelentések az alábbi címeken érhetők el:

28.7.2. DocumentRoot-jogosultságok

Alapértelmezés szerint az openSUSE rendszerben a DocumentRoot könyvtár (/srv/www/htdocs) és a CGI-könyvtár (/srv/www/cgi-bin) a root felhasználóhoz és csoporthoz tartoznak. Ezeket a jogosultságokat nem célszerű megváltoztatni. Ha a könyvtárak bárki által írhatók lennének, akkor akármelyik felhasználó rakhatna beléjük fájlokat. Utána pedig előfordulhat, hogy az Apache végrehajtaná ezeket a fájlokat a wwwrun felhasználó jogosultságával, és így a felhasználónak a más szándék ellenére hozzáférést engedne a fájlrendszer erőforrásaihoz. Éppen ezért az /srv/www alkönyvtáraiba helyezze el a virtuális gépek DocumentRoot és CGI-könyvtárait, és gondoskodjon róla, hogy ezek a könyvtárak és fájlok a root felhasználóhoz és csoporthoz tartozzanak.

28.7.3. Fájlrendszer elérése

Alapértelmezés szerint a teljes fájlrendszer elérése le van tiltva az /etc/apache2/httpd.conf fájlban. Ezeket a direktívákat ne írja felül; engedélyezze külön-külön az Apache által elérni szükséges könyvtárakat. Ennek részletes leírása: 28.2.2.1.3. - Virtuális gépek alapszintű beállításai. Ily módon garantálható, hogy semmilyen kritikus fájl (például jelszavakat tároló, vagy rendszerkonfigurációs fájl) nem érhető el kívülről.

28.7.4. CGI-parancsfájlok

A Perl, PHP, SSI és más programozási nyelveken írott interaktív parancsfájlok lényegében tetszés szerinti parancsokat végrehajthatnak, ezért általánosságban biztonsági kockázatot jelentenek. A kiszolgálón végrehajtott parancsfájlokat csak a kiszolgáló rendszergazdája által megbízhatónak tartott forrásokból szabad telepíteni – általában nem túl jó ötlet engedni a felhasználóknak, hogy mindenféle parancsfájlt végrehajthassanak. Szintén célszerű biztonsági szempontból megvizsgálni a parancsfájlokat.

A parancsfájlok felügyeletének megkönnyítése érdekében bevált gyakorlat korlátozni a CGI-parancsfájlok végrehajtását néhány könyvtárra és nem engedélyezni őket globálisan. Ennek beállítására a ScriptAlias és Option ExecCGI direktívák használhatók. Az openSUSE alapértelmezett konfigurációja nem engedi a CGI-parancsfájlok végrehajtását tetszés szerinti helyről.

Minden CGI-parancsfájl ugyanazon felhasználó nevében fut, ezért a különböző parancsfájlok lehetséges, hogy megzavarják egymást. A mod_suEXEC modul lehetővé teszi a CGI-parancsfájlok egy másik felhasználó és csoport nevében történő futtatását.

28.7.5. Felhasználói könyvtárak

A felhasználói könyvtárak (a mod_userdir vagy a mod_rewrite segítségével történő) engedélyezésekor igen komolyan érdemes megfontolni, hogy ne használhassák a .htaccess fájlokat, amelyekkel felülírhatók a biztonsági beállítások. Legalábbis korlátozni kell azt, hogy a felhasználó milyen mértékben befolyásolhatja a beállításokat (az AllowOverRide direktívával). Az openSUSE rendszereken a .htaccess fájlok alapértelmezés szerint engedélyezve vannak ugyan, de a felhasználók nem jogosultak felülírni semmilyen Option direktívát a mod_userdir használatakor (lásd az /etc/apache2/mod_userdir.conf konfigurációs fájlt).

28.8. Hibaelhárítás

Ha az Apache nem indul el, a weboldalak nem érhetők el, vagy a felhasználók nem tudnak csatlakozni a webkiszolgálóhoz, akkor fontos a probléma okának mihamarabbi azonosítása. Alább bemutatunk néhány szokásos helyet, ahol érdemes kutatni hibák után, és néhány fontos ellenőrzendő dolgot:

rcapache2 kimenete

Ahelyett, hogy a webkiszolgálót a /usr/sbin/httpd2 binárissal indítja el és állítja le, inkább használja az rcapache2 parancsfájlt a 28.3. - Az Apache elindítása és leállítása fejezetben leírtak szerint.. Részletes hibajelzést, valamint tanácsokat ad a konfigurációs hibák megoldására.

Naplófájlok és azok részletessége

Kisebb és nagyobb hibák esetén is /var/log/apache2/error_log Amennyiben részletesebb adatokra van szükség a naplófájlokban, ez a LogLevel direktívával szabályozható.

[Tip]Egy egyszerű vizsgálat

Írassa ki az Apache naplóüzeneteit a tail -F /var/log/apache2/my_error_log paranccsal. Ezután adja ki az rcapache2 restart parancsot. Most próbáljon meg csatlakozni egy böngészővel és nézze meg a kimenetet.

Tűzfalak és portok

Szokásos hiba, hogy nem nyitják ki az Apache portjait a kiszolgáló tűzfalán. Ha az Apache beállítását a YaST-tal végezte, akkor egy külön opció szolgál pontosan ennek a végrehajtására (lásd: 28.2.3. - Az Apache beállítása a YaST segítségével). Ha kézzel állította be az Apache webkiszolgálót, használja a YaST tűzfal modulját a HTTP- és a HTTPS-portok megnyitásához.

Ha a hiba okát a fentiek egyikével sem sikerült megtalálni, nézzen körül az Apache online hibaadatbázisában, a http://httpd.apache.org/bug_report.html címen. Végül az Apache felhasználói közösség elérhető egy levelezőlistán is (http://httpd.apache.org/userslist.html). A javasolt hírcsoport az comp.infosystems.www.servers.unix.

28.9. További információk

Az apache2-doc csomag tartalmazza az Apache teljes kézikönyvét különféle nyelveken, a helyi telepítéshez és referenciának. Alapértelmezés szerint nincs telepítve – a leggyorsabb módja a telepítésének a zypper in apache2-doc parancs kiadása. Telepítés után az Apache kézikönyv a http://localhost/manual/ címen érhető el. Elérhető a weben is, a http://httpd.apache.org/docs-2.2/ címen. A SUSE-val kapcsolatos beállítási javaslatok az /usr/share/doc/packages/apache2/README.* könyvtárban olvashatók.

28.9.1. Apache 2.2

Az Apache 2.2 új funkcióinak a listája: http://httpd.apache.org/docs/2.2/new_features_2_2.html. A 2.0-ról 2.2-es verzióra frissítéssel kapcsolatos információ: http://httpd.apache.org/docs-2.2/upgrading.html.

28.9.2. Apache-modulok

A 28.4.5. - Külső modulok fejezetben röviden ismertetett külső Apache modulokkal kapcsolatos további információ a következő helyen érhető el:

28.9.3. Fejlesztés

További információ az Apache-modulok fejlesztésével, illetve az Apache webkiszolgáló projektben részvétellel kapcsolatban az alábbi helyeken található:

Apache fejlesztői információk

http://httpd.apache.org/dev/

Apache fejlesztői dokumentáció

http://httpd.apache.org/docs/2.2/developer/

Apache-modulok írása Perl és C nyelveken

http://www.modperl.com/

28.9.4. Egyéb források

Ha nehézségekbe ütközne az openSUSE rendszeren az Apache használatával, nézzen körül az openSUSE wiki-n a http://old-en.opensuse.org/Apache címen. Az Apache történetének leírása a http://httpd.apache.org/ABOUT_APACHE.html címen olvasható Itt azt is megismerheti, miért Apache névre hallgat a .kiszolgáló.