LIGHTTPD szybkość i prostota
Dlaczego LIGHTTPD Składnia pliku konfiguracyjnego Podstawowa konfiguracja Czego najbardziej potrzebujemy Jeśli nie LIGHTTPD to co?
Dlaczego LIGHTTPD problem C10K Chcemy obsłużyć 10 tyś użytkowników symultanicznie
Dlaczego LIGHTTPD problem C10K Chcemy obsłużyć 10 tyś użytkowników symultanicznie Sprzęt: 2,8Ghz (x4) = 280Khz (1,12Mhz) / użytkownik 4GB RAM = ~400KB / użytkownik 1000Mbps Ethernet = 100Kbps / użytkownik 3GB/s SATA-2 = ~300KBps / użytkownik Gdzie leży problem?
Dlaczego LIGHTTPD problem C10K Chcemy obsłużyć 10 tyś użytkowników symultanicznie Sprzęt: 2,8Ghz (x4) = 280Khz (1,12Mhz) / użytkownik 4GB RAM = ~400KB / użytkownik 1000Mbps Ethernet = 100Kbps / użytkownik 3GB/s SATA-2 = ~300KBps / użytkownik Gdzie leży problem?
Dlaczego LIGHTTPD problem C10K Chcemy obsłużyć 10 tyś użytkowników symultanicznie Sprzęt: 2,8Ghz (x4) = 280Khz (1,12Mhz) / użytkownik 4GB RAM = ~400KB / użytkownik 1000Mbps Ethernet = 100Kbps / użytkownik 3GB/s SATA-2 = ~300KBps / użytkownik Gdzie leży problem?
Dlaczego LIGHTTPD problem C10K Chcemy obsłużyć 10 tyś użytkowników symultanicznie Sprzęt: 2,8Ghz (x4) = 280Khz (1,12Mhz) / użytkownik 4GB RAM = ~400KB / użytkownik 1000Mbps Ethernet = 100Kbps / użytkownik 3GB/s SATA-2 = ~300KBps / użytkownik Gdzie leży problem?
Dlaczego LIGHTTPD problem C10K Chcemy obsłużyć 10 tyś użytkowników symultanicznie Sprzęt: 2,8Ghz (x4) = 280Khz (1,12Mhz) / użytkownik 4GB RAM = ~400KB / użytkownik 1000Mbps Ethernet = 100Kbps / użytkownik 3GB/s SATA-2 = ~300KBps / użytkownik Gdzie leży problem?
Dlaczego LIGHTTPD problem C10K Chcemy obsłużyć 10 tyś użytkowników symultanicznie Sprzęt: 2,8Ghz (x4) = 280Khz (1,12Mhz) / użytkownik 4GB RAM = ~400KB / użytkownik 1000Mbps Ethernet = 100Kbps / użytkownik 3GB/s SATA-2 = ~300KBps / użytkownik Gdzie leży problem?
Dlaczego LIGHTTPD problem C10K Chcemy obsłużyć 10 tyś użytkowników symultanicznie Sprzęt: 2,8Ghz (x4) = 280Khz (1,12Mhz) / użytkownik 4GB RAM = ~400KB / użytkownik 1000Mbps Ethernet = 100Kbps / użytkownik 3GB/s SATA-2 = ~300KBps / użytkownik Gdzie leży problem?
Składnia pliku konfiguracyjnego LIGHTTPD szybkość i prostota nazwamodułu.parametr = wartość nazwamodułu.parametr = ( wartość, wartość, wartość... ) nazwamodułu.parametr = ( klucz => wartość, klucz => wartość,... ) server.document-root = "/var/www/example.org/pages/" server.modules = ( "mod_access", "mod_rewrite" ) cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl" )
Składnia pliku konfiguracyjnego <pole> <operator> <wartość> {... }else <pole> <operator> <wartość>{... }else{... } LIGHTTPD szybkość i prostota $HTTP["remoteip"]!~ "^192\.168\.1\." { url.access-deny = ("") }
Składnia pliku konfiguracyjnego $HTTP["cookie"] - ciasteczka $HTTP["host"] - zmienna "host" z nagłówka $HTTP["useragent"] - informacje o przeglądarce $HTTP["referer"] - zmienna "referer" z nagłówka $HTTP["url"] - URL żądania klienta $HTTP["querystring"] - parametry z żądania klienta (po "?") $HTTP["remoteip"] - adres IP klienta $HTTP["scheme"] - "http" lub "https"
Składnia pliku konfiguracyjnego $SERVER["socket"] - gniazdo połączenia. Porównanie tylko w formacie "IP:PORT" lub ":PORT". Obsługuje tylko operator "==" $PHYSICAL["path"] - fizyczna ścieżka żądanego pliku w systemie plików serwera $PHYSICAL["existing-path"] - fizyczna ścieżka żądanego pliku w systemie plików serwera, tylko jeśli plik istnieje
Składnia pliku konfiguracyjnego == - porównanie (równy)!= - porównanie (inny niż) =~ - porównanie z wzorcem wyrażenia regularnego w stylu perl (równy)!~ - porównanie z wzorcem wyrażenia regularnego w stylu perl (inny niż)
Składnia pliku konfiguracyjnego $HTTP["host"] == "www.moja.org" { $HTTP["remoteip"]!~ "^192\.168\.[0-3]\." { $HTTP["url"] =~ "^/admin/" { url.access-deny = ( "" ) } } }
Podstawowa konfiguracja server.port = 80 server.event-handler = "linux-sysepoll" server.network-backend = "linux-sendfile" server.username = "lighttpd" server.groupname = "lighttpd" server.tag = "example"
Podstawowa konfiguracja server.max-fds = 20480 server.max-connections = 10240 server.max-keep-alive-requests = 20 server.max-keep-alive-idle = 5 server.kbytes-per-second = 128
Podstawowa konfiguracja server.modules = ( "mod_auth", "mod_rewrite", "mod_alias", "mod_access", "mod_evhost", "mod_accesslog", "mod_cgi" )
Podstawowa konfiguracja server.indexfiles = ( "index.php", "index.html", "index.htm", "default.htm") server.follow-symlink = "enable" url.access-deny = ("~", ".inc") server.document-root = "/var/www/localhost" server.pid-file server.errorlog accesslog.filename = "/var/run/lighttpd.pid" = "/var/log/lighttpd/error.log" = "/var/log/lighttpd/access.log"
Podstawowa konfiguracja include "vhost.conf" include "ssl.conf" include "mod_fastcgi.conf" include "mime-types.conf"
Czego najbardziej potrzebujemy * vhosty * mod_auth * mod_access * mod_fastcgi - PHP * mod_cgi * SSL * mod_rewrite * mod_redirect
Czego najbardziej potrzebujemy vhosty $HTTP["host"] == "www.mojastrona.pl" { server.document-root = "/var/www/sites/mojastrona.pl/" server.name = "www.mojastrona.pl" } $HTTP["host"] =~ "^(www\.)?mojastrona\.pl$" { server.document-root = "/var/www/sites/mojastrona.pl/" server.name = "www.mojastrona.pl" }
Czego najbardziej potrzebujemy mod_auth auth.backend = "plain" auth.backend.plain.userfile = "/var/www/plain.user" auth.require = ( "/" => ( "method" => "basic", "realm" => "XXLmarket", "require" => "valid-user" ) )
Czego najbardziej potrzebujemy mod_access url.access-deny = ( "~", ".inc") LIGHTTPD szybkość i prostota access.deny-all = "enable"
Czego najbardziej potrzebujemy mod_fastcgi server.modules += ("mod_fastcgi") fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/var/run/lighttpd-fastcgi-php-" + PID + ".sk", "bin-path" => "/usr/bin/php-cgi", "min-procs" => 32, "max-procs" => 32, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "1", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "bin-copy-environment" => ("PATH", "SHELL", "USER") ) ) )
Czego najbardziej potrzebujemy mod_cgi cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl" ) $PHYSICAL["existing-path"] =~ "^/var/www/cgi-bin/" { } cgi.execute-all = "enable" cgi.assign = ( ".sh" => "" )
Czego najbardziej potrzebujemy SSL $SERVER["socket"] == "0.0.0.0:443" { ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/ssl/s.pem" ssl.use-sslv2 = "disable" }
^\"((?:[^\"]*(?:\"\")*)*?)\"\,?
Czego najbardziej potrzebujemy mod_rewrite url.rewrite-once = ( "<regex>" => "<relative-uri>" ) url.rewrite-repeat = ( "<regex>" => "<relative-uri>" ) %% - znak % %0 do %9 - odnalezione podzbiory w $HTTP["host"] $1 do $9 odnalezione podzbiory wzorca
Czego najbardziej potrzebujemy mod_rewrite $HTTP["host"] =~ "^(.+)\.mojastrona\.pl$" { url.rewrite-once = ( "^(.*\?.*)$" => "$1&subdomena=%1", "^(.*)$" => "$1?subdomena=%1" ) }
Czego najbardziej potrzebujemy mod_redirect url.redirect = ( "^/s/([0-9]+)/([0-9]+)$" => "http://www.mojastrona.pl/show.php?isdn=$1&page=$2", "^/g/([0-9]+)/([0-9]+)$" => "http://www.mojastrona.pl/get.php?isdn=$1&page=$2" ) $HTTP["host"] =~ "^www\.(.*)$" { } url.redirect = ( "^/(.*)" => "http://%1/$1" )
Jeśli nie LIGHTTPD to co? LIGHTTPD szybkość i prostota Nginx
Gdzie szukać? www.lighttpd.net http://wiki.codemongers.com/nginxgettingstarted
Dziękuję za uwagę kontakt: rpartyka@bobson.pl