III. rész – Perl-ben írt “like” webalkalmazás – a HTTP protokoll és az Apache webszerver

Az Apache(2) webszerverünk a 80-as http porton “csücsül” alapból a rendszerünkben. Nézzünk picit bele a start-stop script-ek segítségével!

root@gergo1:~# /etc/init.d/apache2 
Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload}
root@gergo1:~# /etc/init.d/apache2 reload
[ ok ] Reloading apache2 configuration (via systemctl): apache2.service.

Látható, hogy van pár opciónk. Megjegyzem, ez a Debian vagy Ubuntu struktúra. Root-ként az apache webszerverünket elindíthatjuk, leállíthatjk, újraindíthatjuk vagy a konfigurációt “menet közben” újratölthetjük. 🙂

Nézzük a processz (folyamat) listát!

root@gergo1:~# ps axu | grep apache2
root     12030  0.0  0.3 199612 24228 ?        Ss   Apr07   0:22 /usr/sbin/apache2 -k start
www-data 29171  0.0  0.1 199920  8276 ?        S    03:36   0:00 /usr/sbin/apache2 -k start
www-data 29172  0.0  0.0 199920  7892 ?        S    03:36   0:00 /usr/sbin/apache2 -k start
www-data 29173  0.0  0.0 199920  7892 ?        S    03:36   0:00 /usr/sbin/apache2 -k start
www-data 29174  0.0  0.0 199920  7892 ?        S    03:36   0:00 /usr/sbin/apache2 -k start
www-data 29175  0.0  0.0 199920  7892 ?        S    03:36   0:00 /usr/sbin/apache2 -k start
www-data 29176  0.0  0.0 199920  7892 ?        S    03:36   0:00 /usr/sbin/apache2 -k start

Látható, hogy az apache2 folyamataink www-data felhasználó alatt futnak, kivéve a starter folyamatot, ami root-ként fut. Abból “forkol” ki a többi folyamat. Ez a rendszerünk biztonságát szolgálja, hiszen a www-data user nem interaktív és különleges jogok nélküli felhasználó a linuxunkon.

Részletesebben a folyamatokról a https://gvamosi.wordpress.com/2019/09/13/linux-parancsok-iii-folyamat-processz-vagyis-process-kezeles/ címen olvashatunk.

Láthatjuk tehát, hogy alapból ez a 6+1 folyamat szolgálja ki a rendszerünkön a HTTP kéréseket.

Magát a HTTP protokoll-t nagyon nem is részletezném, egy elég jó leírás található a https://hu.wikipedia.org/wiki/HTTP webcímen magyar nyelven.

Hoznék viszont pár gyakorlati megfontolást és példát. Jelenleg a HTTP 1.1 szabvány van érvényben. Ez remekül ki tud szolgálni akár egy facebook (https://www.facebook.com/) alkalmazást, ahol kis piros ikonok jelzik a folyamatos tartalomfrissülést, sőt még tájékoztatást is kapunk arról, akár a Yahoo! (https://mail.yahoo.com/) levelező alkalmazásában, hogy van-e aktuálisan webes (internet) kapcsolatunk. Továbbá egy YouYube https://www.youtube.com/ video stream is, de akár egy on-line rádió is (https://www.kissfm.pt/) kiválóan “elketyeg” ezen a protokoll változaton keresztül. 🙂

Egyébként az előző részben bemutatott AJAX tudás szükséges a folyamatos weblapfrissítéshez illetve a kapcsolatfigyeléshez.

Minden további magyarázat helyett nézzünk bele a HEAD és a GET HTTP parancsok kimenetébe a localhost-ra. Részletek erről a https://gvamosi.wordpress.com/2019/09/18/telnet-http-80-as-port/ webcímen találhatóak.

Tehát a HEAD parancs.

gvamosi@gergo1:/var/www/html$ telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.1
HOST: localhost

HTTP/1.1 200 OK
Date: Mon, 10 Aug 2020 02:09:29 GMT
Server: Apache/2.4.38 (Debian)
Last-Modified: Mon, 28 Aug 2017 10:20:32 GMT
ETag: "29cd-557cda50c52f6"
Accept-Ranges: bytes
Content-Length: 10701
Vary: Accept-Encoding
Content-Type: text/html

Connection closed by foreign host.

A kiadott parancs a HEAD / HTTP/1.1<ENTER>HOST: localhost<ENTER><ENTER>. Látható a két enter begépelése után az egyszerű http header (fejléc). A kapcsolat, mivel HTTP 1.1-ben vagyunk, megmarad, idővel automatikusan bezáródik. Ez az utolsó sor.

Látható a válaszüzenetben továbbá a 200-as OK státuszkód is, ami a sikeres kérés-kiszolgálást jelzi.

Nézzünk egy “nem található” GET parancsot is.

gvamosi@gergo1:/var/www/html$ telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
GET /alma
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.38 (Debian) Server at 127.0.1.1 Port 80</address>
</body></html>
Connection closed by foreign host.

Látható, hogy alma néven nincs erőforrás a szerverünkön, 404 Not Found (nem található) választ kapunk.

A Cache (gyorsítótár) funkciót még bemutatnám egy rövid példán keresztül. Ehhez nézzük meg az előző részben lefejlesztett weblapunk képek oldalát bemutató oldalt (https://wlammpp.wordpress.com/2020/07/28/egyszeru-oldal-letrehozasa-kepek-oldal/) böngésző oldalon. Boncasztalon a könyv saját maga! 🙂 A chrome böngészőnkben a Developer tools segítségével (Ctrl+Shift+I) nézhetünk bele a fejlécbe. Kiadhanánk parancssorból is GET parancsokkal is az egész többmenetes weblaplekérést, csak az egy picit bonyolult volna. 🙂 Ti. a böngészőnk letölti a weblapot, aztán a scripteket és a képeket is, tehát a különböző erőforrásokat. Amint megvizsgáljuk a style.css file-t egy újratöltés után a “Network” tabfül alatt, láthatjuk, hogy a fejlécben van egy cache-control: max-age=31536000 bejegyzés. Ez azt fogja jelenteni, hogy a stíluslapunk elég hosszú ideig nem lesz újratöltve, ha frissítjük vagy újra megnyitjuk a weblapot. Csak akkor, ha Ctrl gombbal együtt frissítjuk a weblapot vagy ha a “Clear browsing data…” (Ctrl+Shift+Del) funkcióval kitötöljük a böngészőadatokat. Hogy ez mire jó? Ha fejlesztünk, figyelembe vehetjük a Cache implementációját. Ilyenkor a nagyméretű, de ritkán változó képeket és egyéb file-okat cache-elhetővé tehetjük, ezáltal csökkentve az újratöltési időt. Ugyanakkor amint fejlesztünk, és átírunk egy cache-elt (gyorsítótárazott) JavaScript (js) könyvtárat, akkor Ctrl+F5-tel újra kell töltsük az oldalunkat teszteléshez vagy debug-oláshoz. 🙂

A kis lakat ikon a weblap címe mellett balra a böngésző címsávjában. Nos ez a biztonságos ún. HTTPS adatátvitelt jelöli. Ez csupán annyit lejent, hogy a webszerver és a böngészőnk közötti adatátvitel elég jól kódolt. Tehát harmadik fél nem tud belenézni, kivéve a kormányokat, dehát ezt most ne is taglaljuk. 🙂

Megállapíthatjuk ennyi ismertetés után, hogy nem ördöngősség a web. 🙂

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Google kép

Hozzászólhat a Google felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s