Light HTTP Server
Jeho inštalácia je veľmi jednoduchá, presne tak, ako bolo sľubované.
Debian:
# aptitute install lighttpd
Arch Linux:
# pacman -S lighttpd
Fedora:
# yum install lighttpd
Jeho beh si následne môžeme overiť:
root@debian:/var/www# netstat -tap | grep lighttpd
tcp 0 0 *:www *:* LISTEN 3864/lighttpd
tcp6 0 0 [::]:www [::]:* LISTEN 3864/lighttpd
Jeho beh si samozrejme môžeme overiť na adrese http://127.0.0.1 resp. jej aliase http://localhost, kde nájdeme index.lighttpd.html
Pribudol nám konfiguračný súbor, ktorý nachádzame /etc/lighttpd/lighttpd.conf na rovnakej adrese vo všetkých troch spomenutých distribúciách.
Koreňový adresár pre umiestnenie súborov dostupných na web serveri nájdeme na adrese:
Debian:
/var/www/
Arch Linux:
/srv/http/
Fedora:
/srv/www/lighttpd/
Pred tým, než začneme Lighttpd konfigurovať, je dobré poznať príkaz
# lighttpd -t -f /etc/lighttpd/lighttpd.conf
Týmto príkazom otestujeme správnosť konfiguračného súboru pred jeho nasadením
Výstup tohoto príkazu je následovný
Správna syntax
root@debian:/var/www# lighttpd -t -f /etc/lighttpd/lighttpd.conf
Syntax OK
“Omylom” pridané písmeno “f” na začiatok tretieho riadku
root@debian:/var/www# lighttpd -t -f /etc/lighttpd/lighttpd.conf
Undefined config variable: var.f
2011-02-17 12:09:57: (configfile.c.912) source: /etc/lighttpd/lighttpd.conf line: 3 pos: 15 parser failed somehow near here: mod_alias
Ďalším nevyhnutným príkazom, ktorý je potrebný pre riadenie Lighttpd serveru je:
# /etc/init.d/lighttpd start|stop|restart
Ďalší krok, ktorý je síce dobrovoľný, no z pohľadu bezpečnosti potrebný, je vytvorenie skupiny “webserver” a pridanie už existujúceho používateľa “webadmin” do tejto skupiny.
To zabezpečíme sériou príkazov:
root@debian:/var/www# groupadd webserver
root@debian:/var/www# usermod -a -G webserver webadmin
A následne overíme priebeh vykonaných akcií:
root@debian:/var/www# id webadmin
uid=1000(webadmin) gid=1000(webadmin)
groups=1000(webadmin),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev),115(powerdev),116(scanner),1001(webserver)
Po tomto kroku ostáva už len jediné, a to koreňovej zložke nastaviť práva:
root@debian:/var/www# chown -R root:webserver /var/www/
root@debian:/var/www# chmod g=rwx -R /var/www/
Ako môžeme vidieť vo výpise, na zložku /var/www ma vlastník, tj. root a skupina webserver práva rwx , ostatní iba r-x
drwxrwxr-x 2 root webserver 4096 Feb 17 12:01 www/
Po najbližšom prihlásení používateľa webadmin má dostupnú zložku /var/www a my môžeme pokračovať ďalej.
CGI
Ďalším krokom je pridanie podpory CGI, ktorá sa nám hodí pri písaní jednoduchých Perl skriptov. Tú vytvoríme pomerne jednoducho.
Do konfiguračného súboru Lighttpd do server.modules pridáme na nový riadok “mod_cgi", čiže v konečnom dôsledku vyzerá nejako takto:
server.modules = (
"mod_access",
"mod_cgi",
"mod_alias",
"mod_compress",
"mod_redirect",
# "mod_rewrite",
)
Ďalším krokom je potrebné pridať na koniec tento riadok:
cgi.assign = ( ".pl" => "/usr/bin/perl" )
čím na našom web serveri budeme spúšťať všetky .pl skripty za pomoci spúšťača /usr/bin/perl. Samozrejme, je potrebné, aby sme boli opatrní, perl je oveľa silnejší nástroj ako PHP a preto je potrebné mať poriadne ošetrené práva, poprípade pre paranoikov spúšťať celý web server v jail-e, ale tomu sa budeme venovať neskôr ( ak vôbec ).
Teraz je potrebné reštartovať Lighttpd:
# /etc/init.d/lighttpd restart
Následne už len stačí vytvoriť .pl skript v koreňovom adresári, s obsahom napr. :
#!/usr/bin/perl
print "Content-Type: text/plain", "\n\n";
print "Ahoj, ja som CGI skript na lighttpd serveri!!!", "\n";
a spustiť ho na adrese http://localhost/hello.pl.
Výstup by mal byť následovný:
Ahoj, ja som CGI skript na lighttpd serveri!!!
PHP
Keď už konečne máme podporu CGI skriptov, môžme sa pustiť do toho pravého orechového a to je podpora PHP. Na základe toho, že Lighttpd spracováva PHP skripty na základe FastCGI, je potrebné doinštalovať potrebné doplnky pre spracovávanie FastCGI skriptov. Spolu s PHP nainštalujeme aj jeho podporu pre vytvorenie MySQL spojenia, ktoré sa nám v budúcnosti hodí.
Debian:
# aptitude install php5-cgi php5-mysql
Arch Linux:
# pacman -S php php-cgi php-mysql
Fedora:
# yum install lighttpd-fastcgi php-cli php-mysql
Pre kompletnú aktiváciu PHP na našom Lighttpd serveri je potrebné editovať dva súbory. Prvým z nich je
Debian:
/etc/php5/cgi/php.ini
Arch Linux:
/etc/php/php.ini
Fedora:
/etc/php.ini
Na koniec tohto súboru je potrebné pridať riadok s cgi.fix_pathinfo=1, čo zabezpečíme a overíme sériou príkazov:
root@debian:/var/www# echo "cgi.fix_pathinfo=1" >> /etc/php5/cgi/php.ini
root@debian:/var/www# tail -n 1 /etc/php5/cgi/php.ini
cgi.fix_pathinfo=1
Druhý je konfiguračný súbor Lighttpd, ktorý sme už editovali, doň je potrebné pridať "mod_fastcgi", presne tak, ako sme to robili pri povolovaní CGI skriptov. Čiže výstup by mal byť približne takýto:
server.modules = (
"mod_access",
"mod_cgi",
"mod_fastcgi",
"mod_alias",
"mod_compress",
"mod_redirect",
# "mod_rewrite",
)
Samozreje, ako to bolo potrebné pri CGI skriptoch, aj pri PHP skriptoch je potrebné pridať deklaráciu, ktorá určí, čím sa majú .php skripty spúštať.
Na koniec konfiguračného súboru Lighttpd je potrebné pridať:
Debian:
fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket"
)))
Arch Linux:
fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php.socket"
)))
Fedora:
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/var/run/lighttpd/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi"
)))
Následne už len reštartovať Lighttpd:
# /etc/init.d/lighttpd restart
A testovanie .php skriptu na adrese http://localhost/test.php:
<?php
echo "Hello world!";
?>
Na čo však nesmieme zabúdať je naozaj veľká okresanosť Lighttpd serveru, ktorý zo začiatku nemá nič. To vidíme aj na tom, že je potrebné pridať mimetypes pre rozpoznávanie css kaskádových štýlov, bez ktorých sa moderný web nezaobíde. Nie su to však jediné mimetypes, ktoré nám chýbajú. Pridáme ich pridaním nasledujúceho na koniec konfiguračného súboru Lighttpd:
mimetype.assign = (
".html" => "text/html",
".txt" => "text/plain",
".jpg" => "image/jpeg",
".png" => "image/png",
".css" => "text/css"
)
Samozrejme, pridajte si mimetypes už podľa vlastného zváženia. Zoznam všetkých mimetypes nájdete na http://redmine.lighttpd.net/wiki/1/Mimetype.assignDetails
Ďalšia vec, ktorá nám môže chýbať je podpora mod_rewrite, ktoré často naše web aplikácie používajú pre jednoduchšie URL adresy ( index.php?page=show&id=news disponuje na URL /news a pod. )
Podporu pridáme pridaním nasledujúceho do konfiguračného súboru Lighttpd:
server.modules += ("mod_rewrite")
url.rewrite-once = ("^/([a-zA-Z]+)" => "/index.php?page=show&id=$1")
Pre viac podrobností je potrebné navštíviť http://redmine.lighttpd.net/wiki/1/Docs:ModRewrite
Často sa stáva, že potrebujeme hostovať viac stránok na jednom web serveri. V tomto prípade prichádzajú na radu tzv. virtual hosts. Ide to veľmi jednoducho. Na lokálnej sieti si môžme vytvoriť intranetovú stránku http://test.local. Za predpokladu, že server hosťujeme na IP adrese 10.174.32.102, na klientskom PC je potrebné vytvoriť DNS záznam nasledujúcim príkazom:
# echo "10.174.32.102 test.local" >> /etc/hosts
A samozrejme, vytvorením virtuálneho hostiteľa v konfiguračnom súbore Lighttp pridaním:
$HTTP["host"] == "test.local" {
server.document-root = "/var/www/~test/"
}
Ako vám iste došlo, je potrebné vytvoriť zložku /var/www/~test/ a v nej index.html. Následne je potrebné za pomoci už spomínaného príkazu reštartovať Lighttpd a na adrese http://test.local máme obsah zložky /var/www/~test/.
Logovanie chodu serveru
Tento krok je pomerne dôležitý a každý dobrý administrátor by mal kontrolovať, čo sa na jeho serveri deje.
V konfiguračnom súbore Lighttpd vidíme definované server.errorlog = "/var/log/lighttpd/error.log", čo nám napovedá cestu k logu. Túto cestu je samozrejme možné zmeniť.
Bežný výpis tohoto error logu vyzerá následovne ( znázornený proces reštartovania serveru )
2011-02-18 10:55:50: (server.c.1512) server stopped by UID = 0 PID = 10921
2011-02-18 10:55:52: (log.c.166) server started
Týmto by sme tento diel ukončili. Ako ste si určite všimli, Lighttpd je veľmi jednoduchý, malý a sebestačný web server so skvelou dokumentáciou. Jeho nastavovanie je pomerne intuitívne a zvládne ho každý bez predchádzajúcich znalostí. Zvláda aj pokročilé funkcie ako sú virtuálne hostingy a podpora mod_rewrite.
Čo sme sa dnes naučili:
- Ako nainštalovať Lighttpd
- Ako sprovozniť CGI a PHP skripty
- Nastaviť Lighttpd server
- Vytvoriť interný virtuálny hosting
- Zapnúť podporu mod_rewrite
Pekny zvysok dna
dík
privítal by som ešte "bezpečnosť web servera"
Som rad ze sa vam clanky pacia, aspon viem, ze mam pre koho pisat :)
dík
Prispejem:
v zavere popisu je "zvládne ho každý bez predchádzajúcich vlastností.", si nemyslel nahodou na toto
"zvládne ho každý bez predchádzajúcich znalostí." ?