UNIX - Web server - Apache

Daniel Kastner, xkastner@fi.muni.cz


Obsah


Úvod

Jako web server pro UNIX lze použít např. Apache, Roxen WebServer, Zeus Web Server a další. Nejvíce světově používaný webový server je údajně Apache (kolem 60%). Může být provozován na mnoha platformách (UNIX, Windows NT, OS/2, ...).
Hlavní činností web serveru je poslouchat na některém portu (nejčastěji 80) a když přijde od klienta požadavek, tak server vytvoří potomka, který již provede obsluhu požadavku.

Instalace

V současnosti jsou k dispozici na adrese
www.apache.org binárky a zdrojé texty verze 1.3.14 a alfa verze 2.0. Balíky pro Redhat verze 1.3.12 s podporou češtiny lze stáhnout např. z ftp.fi.muni.cz (apache a apache-manual). Pokud si stáhnete zdrojáky, můžete si vybrat, které moduly se zakompilují přímo do serveru (viz Moduly).
Po instalaci budete mít např. v
/usr/sbin/httpd hlavní program (http démona)
/etc/httpd/conf/ konfigurační soubory
/etc/httpd/logs/ logovací soubory (mělo by jít o symbolický link do /var/log/httpd/)
/etc/httpd/modules/ moduly
/home/httpd/html/manual/ HTML stránky s manuálem


Konfigurace

Konfigurační soubory jsou uloženy v adresáři /etc/httpd/conf/. Ty ovlivňují globální chování serveru. Lokální konfigurace je umožněna pomocí souborů .htaccess (nebo jiných dle konfigurace), které mohou být uloženy v libovolném adresáři a ovlivňují chování v tomto adresáři, případně podadresářích. Dříve byla globální konfigurace rozdělena do tří souborů (httpd.conf, srm.conf, access.conf), dnes se doporučuje vše umístit pouze do souboru httpd.conf.
V httpd.conf lze použít např. následující direktivy: Lze povolovat nebo zakazovat zobrazování informací o verzi serveru a o jeho stavu, je možné vybírat a konfigurovat moduly, které se mají zavádět za běhu. Dále je možné konfigurovat virtuální servery.

Spuštění

Program httpd je vhodné spouštět jako aktivní službu pomocí rc skriptů. Program httpd má několik zajímavých parametrů, které server nespustí, ale provedou jinou akci. Např:

Moduly

Apache může mít některé moduly zakompilované v sobě (nutně to musí být modul mod_so, který se stará o zavádění dalších modulů) a ostatní může natahovat až za běhu. Výhodou zakompilovaných modulů je větší rychlost na úkor paměťových nároků, proto by jich nemělo být zakompilováno mnoho. Výběr modulů, které lze za běhu zavádět, se provádí v konfiguračních souborech pomocí direktiv LoadModule a AddModule.
POZOR: Pořadí, ve kterém jsou moduly přidávány, je důležité.
Seznam modulů, které jsou zakompilovány do jádra, lze vypsat pomocí httpd -l

Příklady modulů:

Virtuální servery

Na jednom stroji lze provozovat více virtuálních serverů. Příslušný server se vybere buď podle IP adresy, nebo podle jména počítače. Jeden httpd démon může obsluhovat všechny virtuální servery nebo pro každý server může běžet samostatný démon.

Virtuální servery založené na IP adrese

Každý virtuální server musí mít rozdílnou IP adresu. Tento způsob lze využít u počítačů, které patří do více sítí.

Virtuální servery založené na jméně počítače

Každý virtuální server musí mít rozdílné jméno počítače, ale stejnou IP adresu.

Příklad:
Předpokládejme, že www.domena.cz a www.jinadomena.cz mají stejnou IP adresu 111.22.33.44. Potom do httpd.conf můžeme přidat něco takového:

    NameVirtualHost 111.22.33.44   
   
    <VirtualHost 111.22.33.44>
    ServerName www.domena.cz
    DocumentRoot /www/domena
    </VirtualHost>
   
    <VirtualHost 111.22.33.44>
    ServerName www.jinadomena.cz
    DocumentRoot /www/jinadomena
    </VirtualHost>


Podpora suEXEC pro CGI skripty

Normálně jsou CGI skripty spouštěny s oprávněním uživatele, pod kterým web server běží. Aby mohly být skripty spouštěny s oprávněním majitele skriptu, musí být použit CGI wrapper. K tomuto účelu slouží program suexec (/usr/sbin/suexec), který identitu změní. Ten musí běžet s rootovským SUID bitem.
POZOR na bezpečnost.