Lusticky

Blog

Webový server lighttpd

,

Minule jsem popisoval Instalaci Apache, PHP a MySQL, dnes popíšu instalaci a nastavení lighttpd.
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

(network.c.159) socket failed: Address family not supported by protocol
failed!
invoke-rc.d: initscript lighttpd, action "start" failed.

potom
# nano /etc/lighttpd/lighttpd.conf
a změňte server.use-ipv6 = "enable" na server.use-ipv6 = "disable"

V Archlinuxu použijeme pacman:
# pacman -S lighttpd
a 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ázat
V 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.

Šifrování v LinuxuOpenWRT frimware

Write a comment

New comments have been disabled for this post.