Webový server lighttpd
Monday, June 22, 2009 2:55:07 PM
Lighttpd je rýchlý webový server, který nevyžaduje tolik systémových prostředků jako Apache.
I přesto lighttpd využívá nejnovější technologie - lighttpd běží např. na youtube.com, wikimedia.org nebo sourceforge.net.
1) Instalace lighttpd
# a $ není součást příkazů, značí superuživatele root resp. bežného uživatele
# apt-get install lighttpd
Pokud dostanete chybu
potom(network.c.159) socket failed: Address family not supported by protocol
failed!
invoke-rc.d: initscript lighttpd, action "start" failed.
# nano /etc/lighttpd/lighttpd.confa změňte server.use-ipv6 = "enable" na server.use-ipv6 = "disable"
V Archlinuxu použijeme pacman:
# pacman -S lighttpda spustíme /etc/rc.d/lighttpd start
Spouštění skriptů na lighttpd:
Pokud chcete na webovém serveru mít dynamický obsah pomocí skriptů (nejčastěji PHP), máte možnost zvolit tradiční CGI nebo novější FastCGI prostředí. CGI obsluha funguje tak, že při požadavku na dynamický obsah je vytvořen nový proces, který dostane požadavek na starost a vyřídí jej. Po vyřízení proces zaniká.
FastCGI naproti tomu vytvoří v systému více procesů, které jsou neustále aktivní a čekají na přidělení práce od webového serveru. FastCGI je rychlejší, ale procesy pro svůj běh potřebují neustále místo v RAM paměti. U CGI obsluhy může dojít k velkému zpomalení při osluze velkého množství požadavků najednou.
CGI zvolte v případě systémů, které mají velmi málo RAM paměti (routery, staré PC, TV,...) a rychlost obsluhy klientů není kriticky důležitá vlastnost. FastCGI zvolte tam, kde RAM paměti je dostatek (desktop, server) nebo u vytíženého serveru.
2) Povolení interpretace skriptů Perl, PHP, atd. pomocí CGI
Nainstalujte balík php-cgi a upravte konfigurační soubor lighttpd:
# nano /etc/lighttpd/lighttpd.conf
server.modules = (
"mod_cgi", # zapneme CGI modul
)
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) # zvolíme přípony souborů
#### CGI module
cgi.assign = ( ".pl" => "/usr/bin/perl", # pro každou příponu určíme interpret
".cgi" => "/usr/bin/perl",
".php" => "/usr/bin/php-cgi" )
Pokud chcete nějaký jazyk využít (Perl, PHP,...) musíte mít samozřejmě nainstalovaný příslušný interpret.3) Nastavení uživatelských adresářů public_html
# nano /etc/lighttpd/lighttpd.conf
server.modules = (
"mod_userdir", # vlastní public_html pro každého uživatele
)
#### userdir module # pokud tato sekce není v souboru, vytvořte ji
userdir.path = "public_html" # adresář který chceme zpřístupnit
#userdir.basepath = "/var/www/users/" # nastavíme v případě, že nechceme používat výchozí cestu uživatelů z /etc/passwd
#userdir.include-user = ( "evramp", "pepa" ) # službu můžeme povolit pouze jmenovaným uživatelům
#userdir.exclude-user = ( "root", "postmaster" ) # nebo jmenovaným službu zakázatV Archlinuxu běží lighttpd pod uživatelem http z bezpečnostních důvodů. Chcete-li zpřístupnit serveru svou složku, budete muset nastavit spouštět váš domovský adresář.chmod o+x /home/evramp
Po každé změně konfiguračního souboru je třeba restartovat server pro projevení změn.
Oficiální dokumentace je k dispozici na http://redmine.lighttpd.net/projects/1/wiki/Docs
Zprovoznění PHP5 s fastcgi:
Make sure php support fastcgi:
Type any one of the following command to verify that php support fastcgi
$ php -v Output: PHP 5.0.4 (cli) (built: Nov 8 2005 08:27:12) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.4-dev, Copyright (c) 1998-2004 Zend Technologies
OR
$ php-cgi -v Output: PHP 5.0.4 (cgi-fcgi) (built: Nov 8 2005 08:25:54) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.4-dev, Copyright (c) 1998-2004 Zend Technologies
You must get string cgi-fcgi. Next find out full path to php-cgi or php binary:
$ which php-cgi Output: /usr/bin/php-cgi
Add this line:
cgi.fix_pathinfo = 1
to your php.ini (v PHP5 je 1 default).
Open lighttpd configuration file:
# nano /etc/lighttpd/lighttpd.conf
First add the module mod_fastcgi (lighttpd provides an interface to a external programs that support the FastCGI interface via this module). Make sure your server.modules loades mod_fastcgi:
server.modules = (
"mod_access",
"mod_accesslog",
"mod_fastcgi",
"mod_rewrite",
"mod_auth"
)
Now add following lines to configuration:
fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php.socket"
)))
Pro minimální zatížení jsem místo přídání těchto řádku do lighttpd.conf vytvořil svůj soubor 10-php-fcgi.conf ve složce conf.d do kterého jsem zapsal toto:
server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
( "localhost" =>
( "socket" => "/tmp/php-fcgi.sock",
"bin-path" => "/opt/bin/php-fcgi",
"max-procs" => 2,
"min-procs" => 1,
"max-load-per-proc" => 4,
"idle-timeout" => 20,
)
)
)
Save the configuration and close all the files. Restart the lighttpd:
# /etc/init.d/lighttpd restart
Test your configuration by running php program or application.
<?php phpinfo(); ?>
3)
Zdroj: http://www.cyberciti.biz/tips/lighttpd-php-fastcgi-configuration.html
Můj lighttpd config.
