Protokol HTTP,  služba WWW, server Apache

Tomáš Hrdlička, xhrdlic4@fi.muni.cz


Obsah



Úvod

     Protokol HTTP (Hypertext Transfer Protocol) je protokol používaný při komunikaci mezi HTTP serverem a terminalem (např. webový prohlížeč nebo wap prohlížeč v mobilním telefonu).  Pomocí tohoto protokolu se přenáší  soubory ze serveru k terminalu. K určení obsahu přenášeného dokumentu používá HTTP protokol standardu MINE. Přenos dat je založený na principu dotazu a odpovědi. Nejprve sdělíme serveru co po něm žádáme a on nám odpoví nejprve souhrnem informací pomocí tzv. hlaviček (headers)  a pokud byl v dotazu požadován nějaký soubor, který se na daném serveru nachází, tak součastí odpovědi je i obsah tohoto souboru (např. webová stránka ve formátu HTML).
     Přenášet přes tento protokol je možné jak textové soubory (text/plain), tak i soubory ve formátu binárním (např. obrázky). Největší uplatnění tohoto protokolu zaznamelo masivní rozšíření služby WWW (World Wide Web). Základním prvkem webových stránek se stal hypertextový jazyk HTML (Hypertext Markup Language). Obecně služba WWW je založená na třech technologiích  a to HTTP, URL a HTML.
     Mezi nejznámější a nejrozšířenějsí WWW servery patří server Apache, který je distribuován jako open-source. Dosahuje značných výsledku v oblasti vykonu a spolehlivosti. Za zmíňku stojí také poznamenat, že protokol HTTP se stal standardní komunikační vrstvou v oblasti mobilních telefonů a zařízení využívajících J2ME (Java 2 Micro Edition).




HTTP

     Rozlišujeme tři verze HTTP protokolu a to 0.9, 1.0, 1.1.


HTTP verze 0.9

   Formát požadavku této verze protokolu je velice prostý. Zabere nám jeden řádek, kde napíšeme klíčové slovo metody při komunikaci přes protokol (např. GET)  a za tímto slovem uvedeme cestu k požadovanému dokumentu na daném serveru. Například dokument ze serveru www.server.com/~user/document.html získáme nasledujícím postupem:


$ telnet www.server.com 80
Trying 127.0.0.1...
Connected to www.server.com
Escape character is '^]'.
GET /~user/document.html

<HTML>
<HEAD>
<TITLE>Home Page</TITLE>
</HEAD>

<BODY>
<P> My first web page ! :-) </P>
</BODY>
</HTML>

      Služba WWW běží standardně na portu 80. Pokud bychom chtěli získat defaultní dokument na příslušném serveru pak použijeme za klíčovým slovem znak / (např. GET / ) což je stejné jako /index.html nebo /index.php. Za předpokladu, že zmíněné dokumenty jsou vedeny serverem jako defaultní.


HTTP verze 1.0

     Narozdíl od verze 0.9 je syntaxe zápisu o něco složitější. Obecný zápis je následující:

           method path HTTP/1.0
           headers
           empty_line

     Nejběžněji užívanou metodou při komunikaci s WWW serverem je metoda GET. Metod, které můžeme použít je několik. Uvědme si napřiklad POST a HEAD. Metoda POST se převážně používá pro odesílání dat z webových či jiných formulářů (záleží na implementaci terminálu např. webový prohlížeč, wap prohlížeč nebo J2ME aplikace). Metoda HEAD se používá pouze pro zaslaní ruzných hlaviček obsahujících různé metainformace o dokumentu.

     Význám jednotlivých hlaviček je v doplňujících  informacích různého charakteru. Hlavička je vždy umístěna na samostatném řádku a má formát header_name: value. Použití hlaviček je nepovinné. Odpověd u této verze protokolu ma odlišný formát než předešlá verze protokolu. Součástí odpovědi není jenom obsah požadovaného dokumentu, ale i souhrn různých hlaviček. Například dokument ze serveru www.server.com/~user/document.html získáme u verze HTTP/1.0 nasledujícím postupem:

$ telnet www.server.com 80
Trying 127.0.0.1...
Connected to www.server.com
Escape character is '^]'.
GET /~user/document.html HTTP/1.0

HTTP/1.0 200 OK

<HTML>
<HEAD>
<TITLE>Home Page</TITLE>
</HEAD>

<BODY>
<P> My first web page ! :-) </P>
</BODY>
</HTML>

     O uspěchu operace jsme informování pomocí tzv. stavové hlášky. Pokud vše proběhlo korektně, tak odpovědí stavu je HTTP/1.0 200 OK. V našem případě byla tato podmínka splněna.


HTTP verze 1.1

     Tato verze protokolu přináší značná zlepšení a to zejméno pro provozování virtuálních serveru. Princip spočívá v tom, že na jedné IP adrese může běžet více webových serveru.  Otázkou zůstává jak má server poznat konkrétní požadovaný server. Toto se řeší tím, že než odešleme požadavek serveru přidáme do požadavku nasledující řádek Host: hostname. Na základě tohoto parametru pak WWW server pozná kam ma požadavek předat. Například dokument ze serveru www.server.com/~user/document.html získáme u verze HTTP/1.1 nasledujícím postupem:


$ telnet www.server.com 80
Trying 127.0.0.1...
Connected to www.server.com
Escape character is '^]'.
GET /~user/document.html HTTP/1.1
Host: www.server.com

HTTP/1.0 200 OK

<HTML>
<HEAD>
<TITLE>Home Page</TITLE>
</HEAD>

<BODY>
<P> My first web page ! :-) </P>
</BODY>
</HTML>



Instalace a konfigurace serveru Apache

     Apache je dostupný pro celou řadu operačních systému např. Linux, Unix a Windows. Nabýzí nám dva způsoby instalace:
  • binární instalace
  • instalace ze zdrojových kódů
     První způsob instalace (binární) nám nabýzí snadný způsob jak si server s minimálním úsilím nainstalovat. Instalační soubory je možné stáhnou z oficiálních stranék http://httpd.apache.org.  Většina distribucí operačního systému Linux obsahuje instalační baliček. Při instalaci se držíme jednotlivých informací, které nám instalátor postupně zobrazuje.

     Druhý způsob instalace je už obtížnější . Nejprve si musíme stánout přislušné archivační soubory připadně baličky, které obsahují zdrojové soubory. Soubory rozbalíme do pracovního adresáře. Je nutné abychom na diskovém mediu měli dostatečný kapacitní prostor. Dále budeme potřebovat mít nainstalovaný překladač jazyka ANSI C nebo GNU C compiler (GCC). Spustíme konfigurační skript configure, který provede kontrolu prostředí operačního systému. Dále provedení testování, zda je k dispozici odpovídající programové vybavení, a nastaví parametry pro vlastní překlad. Pokud vše proběhlo bez chyb spustíme na příkazovém řádku příkaz make, který zahájí překlad zdrojového kódu. Po dokončení spustíme příkaz make install, který vytvoří cílový adresář, do kterého uloží vygenerované soubory. Dalším krokem bude úprava konfiguračního souboru httpd.conf, kde mužem například provést nastavení virtuálního serveru. Konfigurační soubor je dobře okomentován a tak usnadňuje vlastní proces nastavení serveru. Nakonec spustíme Apache a pomocí prohlížeče otestujeme připojení.


     Apache umožňuje práci s moduly a tudíž může serveru přidat vlastnost práce např. s PHP nebo SSL.


Stručný přehled  klíčových slov konfiguračního souboru httpd.conf

Port - Definuje na kterém portu běží server
ServerName - Definuje jméno serveru
DocumentRoot - Definuje kořen pro dokumenty serveru

Příklad nastavení defaulních dokumentů

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.htm index.php3 index.php4
</IfModule>

Příklad nastavení virtuálního serveru

<VirtualHost www.server.com>
     ServerAdmin admin@server.com
     DocumentRoot "/www"
     ServerName www.server.com
     ErrorLog logs/error-www.server.com
     CustomLog logs/www.server.com combined
</VirtualHost>




Odkazy

http://www.apache.org
http://www.php.net
Comanche - nástroj pro administraci
AWStats - nástroj pro správu logovacích souborů
WebAlizer - nástroj pro správu logovacích souborů