Kategória: Linux a sieť

Zmenené: 25. júl 2009

Ľahký webový server

Asi väčšina z Vás, keď počuje webový server, si vybaví Apache. Áno webový server Apache je pojem, ale zároveň je to kolos, ktorý je určený pre hosťovanie veľkého počtu domén a spracovanie mnoho tisíc požiadaviek. Pre tých, ktorí taký kolos nepotrebujú, napríklad kvôli systémovým požiadavkám, či komplexnosti nastavenia je tu Odľahčený webový server Lighttpd, skrátene nazývaný aj lighty.

Lighttpd nie je žiadne B-éčko, podľa domovskej stránky beží na lighttpd aj taký server ako je YouTube. Samozrejme, nie je to Apache, na to upozorňujem, teda nečakajte, že jeho nastavenie a používanie bude také isté, ale trúfam si povedať, že dokáže všetko to, čo dokáže Apache.

Inštalácia

Inštalácia je primitívne nenáročná, keďže je súčasťou distribúcie Debian, stačí použiť balíčkovací systém:

aptitude install lighttpd

V distribúcii je k dispozícii viac balíkov pre lighttpd, a to balíček s dokumentáciou a balíky s modulmi:

lighttpd-doc                    - Documentation for lighttpd
lighttpd-mod-cml                - Cache meta language module for lighttpd
lighttpd-mod-magnet             - Control the request handling module for lighttpd
lighttpd-mod-mysql-vhost        - MySQL-based virtual host configuration for lighttpd
lighttpd-mod-trigger-b4-dl      - Anti-deep-linking module for lighttpd
lighttpd-mod-webdav             - WebDAV module for lighttpd

Pri inštalovaní sa server automaticky spustí, takže ho môžete hneď aj vyskúšať, predpokladám, že zadať adresu do webového prehliadača dokážete:

../../_images/lighttpd01.png

Ak sa Vám server náhodou nespustil a máte vypnuté IPv6 (ako ja), tak to je tým, že Lighttpd má štandardne zapnutú podporu protokolu IP verzie 6, pre jej vypnutie nájdite v súbore /etc/lighttpd/lighttpd.conf riadok:

server.use-ipv6 = "enable"

a nahraďte parameter enable na disable:

server.use-ipv6 = "disable"

a spusťte (reštartujte) server:

invoke-rc.d lighttpd restart

Tip

Konfigurácia v úložisku bola upravená tak, aby lighttpd používal IPv6, len ak je IPv6 dostpné a teraz vyzerá konfiguračná voľba takto:

## Use ipv6 only if available.
include_shell "/usr/share/lighttpd/use-ipv6.pl"

Základné nastavenie

Začnem základným nastavením, teda nastavením aby server bežal tam kde chceme my a ako chceme my. Konfiguračný súbor nájdete v spomínanom súbore /etc/lighttpd/lighttpd.conf, ktorý má vo východzom nastavení len 163 riadkov (vrátane prázdnych a komentárov), takže nie je vôbec rozsiahly. Čo teda znamenajú jednotlivé konfiguračné voľby?

server.modules

Táto voľba udáva, ktoré moduly majú byť pri spustení servera načítané. Predvolene sú to moduly mod_access, mod_alias, mod_accesslog a mod_compress. Ak Vám to nestačí, môžete pridať aj ďalšie, ale pamätajte že jednotlivé moduly majú ďalšie požiadavky na systémové zdroje, takže pridávajte naozaj len tie, ktorébudete používať.

server.document-root

Táto konfiguračná voľby udáva, kde sa nachádza koreň webovej stránky, predvolene /var/www. Ak chcete mať svoju stránku uloženú inde, jednoducho zadajte svoju cestu.

index-file.names

Tu môžme nastaviť, ktoré súbory bude server považovať za indexové. Indexový súbor je ten, ktorý je serverom poskytnutý v prípade, že klient nepožiada o konkrétny súbor, ale zadá len meno adresára. Z predvoleného nastavenia môžete pokojne vyhodiť položku index.lighttpd.html, ktorá zabezpečuje spustenie uvitacej stránky po nainštalovaní. Indexové súbory sú hľadané v uvedenom poradí, takže ak ich máte v adresári viacero, môžete dostať nesprávny výsledok.

server.use-ipv6

Túto voľbu som už spomínal. Vypovedá o používaní protokolu IP verzie 6, ktorému sa asi nevyhneme, ale zatiaľ veľmi rozšírený nie je.

server.port a server.bind

Tieto dve konfiguračné voľby som spojil, pretože spolu úzko súvisia. Voľba server.port udáva, na ktorom porte server očakáva požiadavky (predvolene 80). server.bind sa stará o druhú časť soketu (IP adresu) a určuje na ktorej IP adrese server počúva. Predvolene počúva na všetkých rozhraniach.

server.dir-listing

Táto voľba trochu súvisí s voľbou index-file.names. Ak totiž klient požiada namiesto konkrétneho súboru o adresár, server hľadá najprv indexové súbory. Ak nenájde ani jeden indexový súbor, môže poskytnúť výpis adresára. Či tento výpis poskytne, závisí práve na tejto voľbe. Predvolene je zapnutá, ale je to považované za bezpečnostné riziko, naproti tomu pre testovacie účely je výborná.

server.username a server.groupname

Tu je možné nastaviť používateľa a skupinu, pod ktorými bude server spustený. Podotýkam, že s právami tohoto používateľa (skupiny) bude pristupovať k súborom webovej stránky.

Konfigurácia modulov v Debiane

Konfiguračný adresár lighttpd v Debiane obsahuje (okrem konfiguračného súboru) dva podadresáre, conf-available a conf- enabled.

  • conf-available – obsahuje množinu konfiguračných súborov, ktoré obsahujú konfiguračné direktívy potrebné pre načítanie a psustenie modulov servera.
  • conf-enabled – na zapnutie modulu pre lighttpd, stačí v tomto adresári vytvoriť symbolický odkaz na príslušný súbor .conf v adresári conf-available.

Ak si chcete v adresári conf-available vytvoriť svoje vlastné súbory, musia byť pomenované vo forme nn-name.conf, kde “ nn“ je dvojciferné číslo (použité na určenie poradia načítania súborov).

Zapínanie a vypínanie modulov je možné robiť pomocou dodaných skriptov lighty-enable-mod a lighty-disable-mod v adresári /usr/sbin/:

lrwxrwxrwx 1 root root      17 2008-04-30 21:14 lighttpd-disable-mod -> lighty-enable-mod
lrwxrwxrwx 1 root root      17 2008-04-30 21:14 lighttpd-enable-mod -> lighty-enable-mod
lrwxrwxrwx 1 root root      17 2008-04-30 21:14 lighty-disable-mod -> lighty-enable-mod
-rwxr-xr-x 1 root root    2466 2008-04-13 13:34 lighty-enable-mod

Ako sami vidíte, obsa skripty sú vlastne skript jeden. Ich použitie silne pripomína obdobné skripty v Apache. Ak spustíte skript bez parametrov:

ighty-enable-mod
Available modules: auth cgi fastcgi magnet proxy rrdtool simple-vhost ssi ssl status userdir
Already enabled modules: auth fastcgi phpmyadmin

Enable module:

Skript vypíše zoznam dostupných modulov (z adresára conf-available) aj zoznam už zapnutých modulov (z adresára conf-enabled) a čaká na zadanie mena modulu, ktorý má zapnúť. Po zadaní mena modulu skript ešte napíše návod na znovunačítanie konfigurácie lighty:

Run /etc/init.d/lighttpd force-reload to enable changes

Samozrejme je mmožné použiť aj spôsob:

invoke-rc.d lighttpd force-reload

Použitie skriptu pre vypnutie modulu je obdobné.

PHP

V Debiane je inštalácia PHP o niečo jednoduchšia. Nie je potrebné nič dopisovať do konfiguračného súboru, pretože ponúka systém podobný tomu v Apache. V konfiguračnom adresári /etc/lighttpd môžete nájsť dva podadresár, a to conf-available a conf-enabled. V prvom sú konfiguračné súbory pre dostupné moduly a v tom druhom zase odkazy na moduly, ktoré máte v systéme povolené.

Pri bližšom preskúmaní nájdete v adresári conf-available súbor 10-fastcgi.conf, ktorý obsahuje nastavenia pre modul fast-cgi a obsahuje toto:

server.modules   += ( "mod_fastcgi" )

## Start an FastCGI server for php (needs the php5-cgi package)
fastcgi.server    = ( ".php" =>
        ((
                "bin-path" => "/usr/bin/php-cgi",
                "socket" => "/tmp/php.socket",
                "max-procs" => 2,
                "idle-timeout" => 20,
                "bin-environment" => (
                        "PHP_FCGI_CHILDREN" => "4",
                        "PHP_FCGI_MAX_REQUESTS" => "10000"
                ),
                "bin-copy-environment" => (
                        "PATH", "SHELL", "USER"
                ),
                "broken-scriptfilename" => "enable"
        ))
)

Aby bol tento modul načítaný pri štarte lighttpd, stačí urobiť v adresári conf-enabled symbolický odkaz na tento súbor:

ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-available/conf-enabled/

A to je všetko. Teda, samozrejme ešte treba reštartovať server, aby sa zmeny konfigurácie aplikovali.