2018/12/08 02:00 1/14 Apache webszerver < Web Apache webszerver Szerző: Sallai András Copyright Sallai András, 2011, 2012, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu Apache beszerzése http://httpd.apache.org Telepítés Debian GNU/Linux saját csomagjaiból apt-get install apache2 Telepítés után Főbb könyvtárak, fájlok /etc/apache2/ /etc/init.d/apache2 /usr/sbin/apache2 /var/www /etc/apache2 conf.d/ (Kisebb scriptek, Alkalmazások állományait Ide tesszük) mods-available/ (Elérhető modulok) mods-enabled/ (Betöltendő modulok) sites-available/ (Elérhető sitok) sites-enabled/ (Elérhető modulok) apache2.conf (Rendszer által beállított) envvars (Környezeti változók) httpd.conf (Saját beállításaink) ports.conf (Portok) Indítás, leállítás, státusz Apache kezelés SzitWiki - http://szit.hu/
Last update: 2017/10/02 20:22 oktatas:web:webszerver http://szit.hu/doku.php?id=oktatas:web:webszerver Leállítás: /etc/init.d/apache2 stop Indítás: /etc/init.d/apache2 start Újraindítás: /etc/init.d/apache2 restart Újratöltés: /etc/init.d/apache2 reload Apache állapot lekérdezése Státusz lekérdezése: /etc/init.d/apache2 status Apache is running (pid 4385).. Ha webszerver nem fut, egyszerűen visszakapjuk a promptot. Bővebb állapot-lekérdezés: apache2ctl status Még bővebb állapot-lekérdezése: apache2ctl fullstatus Debian démon indító, leállító script: invoke-rc.d apache2 start invoke-rc.d apache2 stop... Konfigurációs állományok Minden konfigurációs fájl plain text fájl. Forrásból való telepítés után a konfigurációs fájl általában egyetlen állomány: httpd.conf A helye fordítási időben beállított, de a -f kapcsolóval más konfigurációs állomány is megadható. Ha http://szit.hu/ Printed on 2018/12/08 02:00
2018/12/08 02:00 3/14 Apache webszerver más konfigurációs fájlokat is szeretnék belefoglalni az fő konfigurációs fájlba a Include kulcsszóval tehető meg. A konfigurációs állomány nem kis és nagybetű érzékeny (nem Case Sensitive). A nagy és kisbetűk használata az átláthatóságot szolgálja. Minden újabb beállítás után újratöltjük a konfigurációs fájlt /etc/init.d/apache2 reload Konfigurációk Porthoz és IP-hez kötés A szerver a 80-as és 8000-es porton is hallgasson: Listen 80 Listen 8000 A szerver két interfészen fogadjon el kéréseket: Listen 192.170.2.1:80 Listen 192.170.3.1:8000 IPV6 esetén: Listen [2001:db8::a00:20ff:fea7:ccea]:80 A konfigurációs állományban több Listen parancs is elhelyezhető, az apache az összes beállított porton fogadja a kéréseket. Modulok használata Az apache moduláris felépítésű szerver. Telepítés után csak az alapfunkciók vannak betöltve alapból. A modulok betöltése a LoadModule direktívával történik. Például a php5 modul betöltése: LoadModule php5_module /usr/lib/apache2/modules/libphp5.so A php5_mudule a mudul neve. A /usr/lib/apache2/modules/libphp5.so a fájlnév elérési úttal együtt. Debian GNU/Linux alatt nem szükséges szerkesztenünk a modulokat tartalmazó részeket, mivel a modul kezelésre külön scripteket hoztak létere. Ezek: a2enmod a2dismod SzitWiki - http://szit.hu/
Last update: 2017/10/02 20:22 oktatas:web:webszerver http://szit.hu/doku.php?id=oktatas:web:webszerver Az a2enmod engedélyezi egy modul használatát, az a2dismod letiltja egy modul használatát. A telepítés után hiányzó modulokat külön telepíteni kell, pl. egy apt-get install paranccsal. Hogy éppen milyen modulok érhetők el, tölthetők be a következő könyvtár listázásával deríthető ki: ls /etc/apache2/mods-available A kimenetben ehhez hasonló állományokat láthatunk: auth_basic.load auth_digest.load... PHP5 engedélyezése parancssorból: e2enmod php5 Ellenőrizhetjük, hogy a php5 modul engedélyezve lett-e: ls /etc/apache2/mods-enabled/php5.load Site-ok kezelése A site-ok kezelésére két script áll rendelkezésünkre: a2ensite a2dissite Hozzáférhető site-ok helye: /etc/apache2/sites-available A hozzáférhető sitok könyvtárában telepítés után találunk egy default állomány, amely a host alapbeállításait tartalmazza. /etc/apache2/sites-available/default A host alkönyvtáraira vonatkozó beállítások Hatáskörök A hatáskörök megmondják a beállítások hol érvényesüljenek. Megadható hatáskörök: Könyvtár Fájl http://szit.hu/ Printed on 2018/12/08 02:00
2018/12/08 02:00 5/14 Apache webszerver Webhely Direktívák A hatóköröket úgynevezett direktívákkal adjuk meg: <Directory> <DirectoryMatch> <Files> <FilesMatch> <Location> <LocationMatch> <VirtualHost> Minden direktíva nevét a kisebb mint és a nagyobb mint jelek között adjuk meg. A direktíváknak mindig van egy lezáró részük. A lezárórész úgy néz ki mint a nyitó, de kisebb mint jel után egy perjelet is teszünk: <direktíva_név>... </direktíva_név> Az így megadott nyitó és záródirektíva egy-egy szekciót határoz meg. Általában a konfigurációs fájlban egy szekció egy webhelyet ír le. Könyvtárra vonatkozó beállítások <Directory /var/web/dir1> beállítások Melyik html fájlt szolgáljuk ki elsőnek <Directory /var/web/dir1> DirectoryIndex elso.html Nem az index.html lesz az elsőként betöltött fájl! Helyette az elso.html állományt töltjük be. Könyvtár listázása <Directory /var/web/dir1> Options Indexes DirectoryIndex index.html beállítása mellett, ha nincs a könyvtárban index.html, akkor listázzuk a SzitWiki - http://szit.hu/
Last update: 2017/10/02 20:22 oktatas:web:webszerver http://szit.hu/doku.php?id=oktatas:web:webszerver könyvtár tartalmát. + és - karakterek használata <Directory /var/web/dir1> Options +Indexes Vegyük észre a + karaktert! Ugyanaz mint ha nem lenne +, a beállítást engedélyezi. <Directory /var/web/dir1> Options -Indexes Vegyük észre a - karaktert! Nem engedélyezzük a beállítást. Hozzáférés IP alapján <Directory /var/web/dir1> Order deny,allow Allow from 195.85.156.2 Deny from all Az Order utasítás megmondja milyen sorrendben értelmezzük az Allow és Deny beállításokat. A 195.85.156.2 IP-ről megnézhetik, mindenhonnan tiltunk mindent erre a könyvtárra. Fájlokra vonatkozó beállítások <Files private.html> Order allow,deny Allow from 192.168.5.4 </Files> Ez a fájl csak a 192.168.5.4 címről érhető el. Files direktíva Directoryba ágyazása <Directory /var/web/dir1> <Files private.html> Order allow,deny Allow from 192.168.5.4 </Files> http://szit.hu/ Printed on 2018/12/08 02:00
2018/12/08 02:00 7/14 Apache webszerver A dir1 könyvtáron belül csak a private.html fájlra vonatkozik a beállítás. Webhely megadása Egész hálózat engedélyezése: <Location /private> Order Allow,Deny Allow from 192.168.5.0/24 </Location> Reguláris kifejezések A felhasználók saját könyvtára: <Directory /home/*/public_html> Options Indexes Match = illeszkedés Ha magas szintű reguláris kifejezésekkel akarunk illeszkedést meghatározni <FilesMatch \.(gif jpg png)$> Order allow,deny Deny from all </FilesMatch> A.gif.jpg és.png fájlok letöltése tilos Alias A host (site) dokumentumai a következő helyen találhatók: /var/www Tehetünk más helyre is megjelenítendő könyvtárakat. Például újabb könyvtárakat hozhatunk létre a következő helyen: /usr/local/ Azért tesszük ide, mert rendszer frissítéskor ehhez a könyvtárhoz nem nyúl a rendszerfrissítő. Például legyen Ets nevű projekt amelyet az /usr/local könyvtárba szeretnénk tenni: /usr/local/ets Ahhoz, hogy a szerveren ip_cim/ets vagy domainnev/ets néven el tudjuk érni a /etc/apahe2/https.conf állományban a következő beállításokra van szükség: SzitWiki - http://szit.hu/
Last update: 2017/10/02 20:22 oktatas:web:webszerver http://szit.hu/doku.php?id=oktatas:web:webszerver Alias /ets /usr/local/ets Naplózási szint LogLevel warn A LogLevel kapcsolóval állítjuk be, például warn. Lehestésges értékek: debug info notice warn error crit alert emerg Hova naplózzunk Hibajelzések helyét az ErrorLog kapcsolóval állítjuk be: ErrorLog /var/log/apache2/error.log Ki fért hozzá valamelyik weblaphoz: CustomLog /var/log/apache2/access.log combined Naplózás figyelése A 10 utolsó naplóbejegyzés megtekintése az access.log: tail /var/log/apache2/access.log A tail -f kapcsolója azt mondja, ha az apache ír az access.log fájlba, azonnal jelenítése meg számunkra: tail -f /var/log/access.log CGI engedélyezése <Directory /usr/local/apache2/htdocs/somedir> Options +ExecCGI Ekkor a somedir könyvtárban tehetünk CGI scriptet http://szit.hu/ Printed on 2018/12/08 02:00
2018/12/08 02:00 9/14 Apache webszerver Milyen kiterjesztése lehet a cgi scripteknek AddHandler cgi-script.cgi.pl A.cgi és.pl kiterjesztések használhatók Például a felhasználók a saját home könyvtárban futtathassanak.cgi könyvtárakat: <Directory /home/*/public_html> Options +ExecCGI AddHandler cgi-script.cgi A felhasználók egy cgi-bin nevű könyvtárban használhatnak cgi scripteket: <Directory /home/*/public_html/cgi-bin> Options ExecCGI SetHandler cgi-script Egy egyszerű Helló Világ típusú CGI: #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello Vilag"; Egy teljesebb ékezeteket is kezelő script: #!/usr/bin/perl print "Content-type: text/html\n\n"; print <<"EOF"; <html> <head> <meta http-equiv="content-type: text/html; charset=utf-8"> <title>teszt</title> </head> <body> <h1>helló Világ!</h1> </body> </html> EOF PHP engedélyezése, beállítása SzitWiki - http://szit.hu/
Last update: 2017/10/02 20:22 oktatas:web:webszerver http://szit.hu/doku.php?id=oktatas:web:webszerver PHP engedélyezése: a2enmod php5 Az index.php fusson le alapból: <Directory /valahol/dir> DirectoryIndex index.php Apache azonosítás Beállítások lehetnek központilag és helyileg egy könyvtárban. Az apache decentralizált, helyi könyvtárban elhelyezett fájlban:.htaccess Centralizáltan: httpd.conf A központilag beállítva az adott könyvtárszekcióba szükség van az azonosításhoz a következő beállításra: AllowOverride AuthConfig Felhasználó és jelszófájl létrehozása htpasswd -c /usr/local/apache/passwd/passwords jozsi Ehhez hasonlót látunk: New password: sajatjelszo Re-type new password: sajatjelszo Adding password for user jozsi A -c kapcsoló létrehozza az állományt. További felhasználók: htpasswd /usr/local/apache/passwd/passwords mari Vegyük észre! Már nincs -c kapcsoló! A könyvtárszekcióba vagy.htaccess fájlba: AuthType Basic http://szit.hu/ Printed on 2018/12/08 02:00
2018/12/08 02:00 11/14 Apache webszerver AuthName "Azonosítás" Require valid-user AuthBasicProvider file AuthUserFile /usr/local/apache/passwd/passwords Az AuthType megmondja az azonosítás típusát. Két gyakran használt érték: digest és a basic. A fenti példában Basic azonostást használunk. Az AuthName az azonosítást kérő ablak címkéjének feliratát határozza meg. A Require megmodja milyen felhasználót vagy csoportot követelünk meg. Ha az értéke valid-user akkor bármely felhasználó beléphet akinek van felhasználóneve jelszava beállítva. Lehet konkrét felhasználót is megadni. Például csak a jozsi nevű felhasználó léphessen be: Require user jozsi Csoportok alkalmazása Csoportszintű szabályozához szükséges két sor a következő: AuthGroupFile /usr/local/apache/passwd/groups Require group GroupName Csoport fájl tartalma általánosan: csoportnev: csop1 csop2 csop3 csop4 konkrét példa: human: jozsi mari kati szerelok: kati janos geza Cím átírás - URL Rewriting a2enmod rewrite RewriteEngine on RewriteRule ^/$ /e/www/ [R] A példában minden a webszerverre irányuló kérés át lesz irányítva a /e/www alkönyvtárba Virtuális hostok Adott egy gordon nevű gépünk, egy eros.hu domannel. Szerverünk ezen a két címen elérhető: gordon.eros.hu SzitWiki - http://szit.hu/
Last update: 2017/10/02 20:22 oktatas:web:webszerver http://szit.hu/doku.php?id=oktatas:web:webszerver eros.hu Szeretnék mások is, ha az ő domainük a mi szerverünkön lenne tárolva, mert ők ezért nem szeretnének külön gépet fent tartani. Például János barátom meg kér, hogy a piros.hu domain is kezeljük neki. A mi gépünkön a piros.hu domain ekkor virtuális, azaz VirtulaHost lesz. Tehát egy host kiszolgálhat olyan hostokat is ami mögött nincs külön számítógép. Ekkor virtuálishotról beszélünk. Virtualhostok helye /home/virtual-www vagy /data/virtual-www esetleg /home/vhosts A virtualhostok beállításainak helye: /etc/apach2/sites-available Minden virtualhost egy állomány Például a zold.hu virtuális domaint szeretnénk kiszolgálni, akkor a következő állományt késztjük el: /etc/apache2/sites-available/piros.hu Az állományban egy a következő elemeket írom: <VirtualHost *:80> </VirtualHost> Ezen két elem közzé kerülnek a virtualhost beállításai. A szerver nevének beállítása: ServerName piros.hu Álnevek beállítása: ServerAlias www.piros.hu red.hu Figyeljük, meg, hogy az egyes állneveket szóközzel válasszuk el egymástól. http://szit.hu/ Printed on 2018/12/08 02:00
2018/12/08 02:00 13/14 Apache webszerver Dokumentumok helye: DocumentRoot /home/virtual-www/piros.hu/docroot Elsőnek betöltendő állomány: DirectoryIndex index.html index.php Naplózás: ErrorLog /home/virtual-www/piros.hu/log/error.log CustomLog /home/virtual-www/piros.hu/log/access.log common A második sor vége esetleg common helyett combined: CustomLog /home/virtual-www/piros.hu/log/access.log combined Például az awstat statisztikai program combined típusú naplófájlt igényel. Ezek után a virtualhost teljes szekciója így nézhet ki: <VirtualHost *:80> ServerName piros.hu ServerAlias www.piros.hu red.hu DocumentRoot /home/virtual-www/piros.hu/docroot DirectoryIndex index.html index.php ErrorLog /home/virtual-www/piros.hu/log/error.log CustomLog /home/virtual-www/piros.hu/log/access.log combined </VirtualHost> </apache> Ha a virtualhostnak könyvtárra vonatkozó beállításokat szeretnénk, akkor a VirtualHost elemek között megtehetjük. Például: <code apache> <VirtualHost *:80> ServerName piros.hu ServerAlias www.piros.hu red.hu DocumentRoot /home/virtual-www/piros.hu/docroot DirectoryIndex index.html index.php ErrorLog /home/virtual-www/piros.hu/log/error.log CustomLog /home/virtual-www/piros.hu/log/access.log combined <Directory /home/virtual-www/piros.hu/docroot/titkos> AllowOverride AuthConfig Order Deny, Allow Allow from 192.168.3.0/24 Deny From all </VirtualHost> SzitWiki - http://szit.hu/
Last update: 2017/10/02 20:22 oktatas:web:webszerver http://szit.hu/doku.php?id=oktatas:web:webszerver MySQL A webmesterek sokszor szeretnének a MySQL hozzáférést a szerveren. Ekkor létre kell hozni egy felhasználót, amely a jogosult az adott adatbázis létrehozására: GRANT ALL PRIVILEGES ON databasenev.* TO 'valaki'@'localhost' IDENTIFIED BY 'titkosjelszo'; Példuául GRANT ALL PRIVILEGES ON adozas.* TO 'ado'@'localhost' IDENTIFIED BY 'titkosjelszo'; A jogok érvénybeléptetéséhez futtassuk a flush privileges parancsot: FLUSH PRIVILEGES; Statisztika webszerverhasználatról http://w3techs.com/technologies/overview/web_server/all http://news.netcraft.com/archives/category/web-server-survey/ From: http://szit.hu/ - SzitWiki Permanent link: http://szit.hu/doku.php?id=oktatas:web:webszerver Last update: 2017/10/02 20:22 http://szit.hu/ Printed on 2018/12/08 02:00