2012. augusztus 27., hétfő

Webszerver Linux alatt

Ezen információk az interneten megtalálhatók, tanulás céljából lettek összegyűjtve!
 (apache,htaccess,naplózás,virt.domain)

Az internet hálózati protokollja az IP (Internet Protocol). A szállítást két protokoll végzi, az összeköttetés-alapú TCP
(Transmission Control Protocol) és az összeköttetés-mentes UDP (User Datagram Protocol). Mindkét átviteltípusnak
vannak elönyei és hátrányai. A szolgáltatások többsége a TCP-t használja. Egy IP kapcsolatot a forráscímen és a
célcímen kívül a forrás- és cél portok azonosítanak. A portok egyfajta logikai kapuk 0-65535ig. 0-1023-ig ú.
privilegizált portok helyezkednek el, ide csak rendszergazda jogú felhasználó helyezhet el szolgáltatást. A http
(hypertext transfer protocol) felelös a webkiszolgáló program és az ügyfél böngészöje közti adattovábbításért (ez
magasabb szintu, mint a hálózati átvitel). A http oda-vissza irányú, azonosítást is kezel. Legtöbbször mégis névtelenül,
letöltésre vesszük igénybe. 3 metódusa használt, a GET (általában letöltés), a POST (általában kitöltött urlapok
továbbítása a szerverre) és a PUT (rendszerint fájlfeltöltés). Pl. a webböngészö "GET index.html" parancsára
megkezdödik az kért fájl letöltése a kliensre. A webszolgáltatás egyezményes helye a 80-as TCP port. A kiszolgáló itt
várja a kéréseket.
AZ APACHE
Jogosultságok:
Az apache konfigurációja az /etc/apache/httpd.conf fájl szerkesztésével történik. Minden érdemi változtatás után a
szolgáltatás újraindítása szükséges:
/etc/init.d/apache restart
A konfigurációs fájl részletesen dokumentált.
ServerRoot :A szerver konfigfájljainak helye
DocumentRoot :A szerver webtartalmának gyökérmappája
Port : A szerver TCP portjának helye
LoadModule:Tetszöleges apache modul betöltése
Alias: Adott könyvtár elérése más néven
pl: Alias /linux/ /home/web hahatására a http://servernév/linux URL-en a /home/web látszik
ScriptAlias: Az Alias-szal megegyezik, annyi különbséggel, hogy a benne található fájlokat a szerver futtatni próbálja
KeepAlive: A TCP kapcsolat életben tartása a kérés kiszolgálása után is. Ez meggyorsítja a sok kisebb fájl
letöltését, vagy a rövid idön belüli újabb kéréseket.
KeepAliveTimeOut: Az ido, ameddig egy TCP csatornát a szerver életben tart egy kliensgép számára. Ha letelt, a
port újra kiosztható lesz.
TimeOut:A normál webkérések idotúllépése (ha ezután sem válaszol a gép, le lesz választva)
PidFile: Ebben a fájlban tárolja az Apache a saját fofolyamatának folyamatazonosítóját (Process ID). Az újraindításhoz
és a leállításhoz
<Directory /könyvtárnév>
AllowOverride AuthConfig Limit: Az azonosítás és az elérési jogok helyileg felülírhatók a .htaccess-ben)
Options ExecCGI:Engedjük a CGI szkriptek futtatását
Options Indexes: Engedjük a könyvtárlista megtekintését, ha nincs alapértelmezett dokume-tum
Options FollowSymLinks: (Engedjük a symlink-ek követését)
Options SymlinksIfOwnerMatch: Symlink-ek követése, ha a mutatott fájltulajdonosa megegyezik a symlink
létrehozójával
<Limit GET>: (Korlátozzuk a webtartalom elérését, csak az egi.jaisz.hu hostról lehet)
Order Allow,Deny
Allow from egi.jaisz.hu
Deny from All
</Limit>
</Directory>
5/2
http://httpd.apache.org/docs/howto/auth.html#access
A webszerver egy f folyamatként fut, méghozzá a root user jogaival, de a konfigurációs fájlban megadott
MinSpareServers és a MaxSpareServers közötti darabszámú gyerekfolyamatot (child process) tart életben a bejövö
kérések kiszolgálására. A futó folyamatok számát mindig a megadott két érték közt tartja, a szerver terheltségének
megfelelöen. A szerver annyi folyamatot indít, amennyit a "Startservers" opcióban megadunk:
StartServers 10
Ez az indulás után beáll a fentebb részletezett két küszöbérték közé.
A "MaxRequestPerChild" opcióban megadott küszöbérték elérése esetén a gyerekfolyamat megsz nik, és helyette a
szerver újat indít. Erre azért van szükség, mert bizonyos platformokon a hosszú ideig futó gyerekfolyamatok
"elfogyasztják" a memóriát.
Hozzáférés-vezérlés helyileg (nem root, hanem felhasználó által) => .htaccess:
Lehet ség van a hozzáférés-vezérlés helyi megadására. Ilyenkor az apache egy megadott nev fájlt keres a kért
könyvtárban (alapértelmezésként .htaccess), és ha van ilyen, az abban lev engedélyek lesznek érvényesek. A
.htaccess-ek keresését, figyelembe vételét a root az apache konfigjában, az AllowOverride opcióban szabályozhatja.
Az ilyen fájlok neve nem törvényszeruen .htaccess kell legyen, az AccessFileName opcióban megadhatunk alternatív
fájlnevet is:
AccessFileName jogosultsagok.dat
Egy .htaccess fájl lehetséges tartalma:
AuthName "Titkos adatok!"
AuthType Basic
AuthFileName /home/user/jelszavak
Require valid-user
A fenti konfigfájl a htpasswd parancs segítségével kreált "jelszavak" állományban létez usernevet/jelszót vár, ennek
hiányában megtagadja az aktuális könyvtár lekérését.
Kérhetjük még a jelszófájlban létezö, "valós" felhasználóné megadása helyett egy konkrét userrel való belépést is:
Require user valaki, senki (valaki és senki nevu felhasználókkal lehet csak belépni)
A htpasswd használata:
htpasswd [-c] jelszófájl fejlhasználónév
A -c kapcsolóra új fáj létrehozásánál van szükség, második felhasználó hozzáadásakor el kell hagyni, különben felülírja
a régit.
Naplózás:
Az apache logfájljai a /var/log/apache könyvtárban taláhatók :
- access.log (a szerverre érkezo kérések, honnan, mikor, melyik fájlokra)
- error.log (futás közbeni, és sikertelen lekéréssel kapcsolatos hibák)
Naplófájlokat célszerü a tail -f {naplofajl neve} paranccsal folyamatosan figyelni.
A tail parancs a paraméterként adott szöveges fájl végét jeleníti meg, -f kapcsolóval folyamatosan listázza, amennyiben
azok tartalma b vül pl. tail -f access.log <-- a szerverre érkez kérések folyamatos figyelése
Az apache konfigurációs fájljában a HostNameLookups opció bekapcsolásával a szerver a bejöv kérések forrását IP
címek helyett hostnevekként naplózza.
5/3
Minden módosíás után a konfigfájl újraolvasására van szükség: ( etc/init.d/apache reload)
A konfigurációs fájl ErrorLog opciójában megadhatjuk a hibanapló helyét. A naplófájlok formátuma a LogFormat
opcióban adható meg, pl:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
létrehoz egy "common" nev logformátumot, amelyben a kérés idejét, helyét, a kért URL-t, a kliens típusát rögzíti.
Ennél részletesebb is lehetséges:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v" full
Ha a LogFormat-tal megadtunk egy ilyen naplóformátumot, a CustomLog opcióval a kérelzeket tartalmazó fájlt
adhatjuk meg, amelybe a fent megadott formátum szerint kerülnek be az adatok a kapcsolatról.
A HostnameLookups opció bekapcsolt állapotában a naplófájlokban nem IP címek, hanem hostnevekké alakított
formájuk jelenik meg. Kikapcsolva a szerver IP címeket naplóz.
Virtuális webkiszolgáló
A HTTP protokoll lehet séget ad arra, hogy a HTTP kérés hostname mez jében a kliensgép eltárolja, milyen néven
hivatkozott a szerverre.Az 1 db IP címmel, de több ahhoz rendelt domainnévvel rendelkezo szerverek így különbséget
tudnak tenni a kérések közt aszerint, hogy milyen néven hivatkoztak rájuk. Pl.:
www.erdekes.hu --> 1.2.3.4-es IP
www.unalmas.hu --> 1.2.3.4-es IP (szintén)
Attól függ en, hogy milyen hostnévvel hivatkoztak rá, a webszerver képes más-más tartalmat szolgáltatni. Ez az ún.
virtuális webszerver szolgáltatás (több virtuális webszerver egy fizikai hoston)
A fenti példának megfelel konfigfájl-részlet:
<VirtualHost 1.2.3.4>
ServerAdmin egik@egik.hu
DocumentRoot /var/www/erdekes
ServerName www.erdekes.hu
ErrorLog /var/log/apache/erdekes/error.log
CustomLog /var/log/apache/erdekes/access.log common
</VirtualHost>
<VirtualHost 1.2.3.4>
ServerAdmin valaki@mas.hu
DocumentRoot /home/unalmas
ServerName www.unalmas.hu
ErrorLog /var/log/apache/unalmas/error.log
CustomLog /var/log/apache/unalmas/access.log common
</VirtualHost>
A névhozzárendelés-alapú virtuális kiszolgáló fenti konfigurálásához még egy sor szükséges a httpd.conf-ba:
NameVirtualhost {szerver ip címe} Pl: NameVirtualhost 1.2.3.4

Nincsenek megjegyzések:

Megjegyzés küldése