cz. 1 | Lighttpd - stawiamy lekki serwer WWW
02.02.2011 22:05
Witam. Zapewne wszyscy wiecie jak bardzo zasobożerny jest Apache w połączeniu z MySQL, gdy jednak chcemy postawić stronę internetową na troszkę słabszym sprzęcie z pomocą przychodzi jednak Lighttpd który funkcjonalnością praktycznie dorównuje Apache.
Ostatnio zakupiłem tani terminal z procesorem VIA Nehemiah @ 1 GHZ, pamięcią RAM 128 mb DDR I, USB 2.0 i postawiłem na nim właśnie lighttpd.
Sam system Debian GNU/Linux na takim urządzeniu używa ok. 10 mb pamięci RAM, lighttpd jakieś 2‑5 mb, serwer OpenSSH ok. 1‑2 mb i wychodzi nie więcej niż 20 mb. Ciekawe prawda? Apache zjadłby tutaj ponad 200 mb - tak strzelając na oko.
Tak więc przedstawiłem Wam główne powody dla których zachęcam do używania Lighttpd jako serwera WWW, a teraz przejdę do opisu jak postawić ten malutki serwerek WWW na naszej maszynie.
1. Instalacja pakietów w systemie
Zapewne w repozytorium Waszej ulubionej dystrybucji znajdziecie pakiet o nazwie lighttpd lub podobnej, ja mogę pokazać jakie są pakiety dostępne pod Debianem i Gentoo:
* www-servers/lighttpd Latest version available: 1.4.28 Latest version installed: 1.4.28 Size of files: 626 kB Homepage: http://www.lighttpd.net/ Description: Lightweight high-performance web server License: BSD
webnull-oneill% apt-cache search lighttpd 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 lighttpd - A fast webserver with minimal memory footprint
Tak więc dla Debiana, Ubuntu, Mepis, Linux Mint:
apt-get install lighttpd
Warto dodać, że w Debianowych dystrybucjach lighttpd sam doda się do listy demonów które startują z systemem - aby to wyłączyć polecam narzędzie rcconf dostępne w repozytorium.
Gentoo: Przed instalacją warto wybrać flagi kompilacyjne a następnie dodać je do /etc/portage/package.use
emerge lighttpd
Polecam takie flagi:
bzip2 fam gdbm ipv6 ldap pcre php ssl mysql -doc -libev -lua -memcache -minimal -rrdtool -test -webdav -xattr
Start demona razem z systemem:
rc-update add lighttpd default
Arch Linux:
pacman -S lighttpd
Start demona razem z systemem: W /etc/rc.conf do zmiennej DAEMONS dodać "lighttpd".
Fedora, Red Hat, CentOS:
yum install lighttpd
Start demona razem z systemem: ? - użytkownicy jednego z tych systemów muszą poszukać sobie, nie za bardzo używałem którego z tych systemów dlatego bzdur pisać nie będę.
2. Edycja plików konfiguracyjnych
Lighttpd posiada jeden prosty plik konfiguracyjny który może przyłączać inne pliki konfiguracyjne - ten główny znajduje się w /etc/lighttpd/lighttpd.conf
Lista modułów lighttpd:
server.modules = ( # "mod_rewrite", # Przyjazne adresy URL znane z Apache # "mod_redirect", # "mod_alias", "mod_fastcgi", # potrzebny do używania PHP czy Perla "mod_access", # Kontrola dostępu do katalogów # "mod_cml", # "mod_trigger_b4_dl", # "mod_auth", # "mod_status", # "mod_setenv", # "mod_proxy", # "mod_simple_vhost", # "mod_evhost", # "mod_userdir", # "mod_compress", # "mod_ssi", # "mod_usertrack", # "mod_expire", # "mod_secdownload", # "mod_rrdtool", # "mod_webdav", "mod_accesslog" # Loguje wszystkie próby dostępu do serwera ) # }}}
Aby wyłączyć dany moduł należy go zakomentować czyli postawić znak "#" na początku linii z modułem.
Omówię kilka istotnych bądź ciekawych zmiennych konfiguracyjnych:
server.document-root = var.basedir + "/htdocs" # gdzie znajdują się pliki publicznie udostępniane server.follow-symlink = "enable" # czy serwer ma podążać za dowiązaniami symbolicznymi? server.port = 80 # port nasłuchiwania serwera, jeżeli mamy zamiar postawić kilka serwerów na jednym adresie IP to należy każdy postawić na innym porcie aby wszystkie były widoczne z zewnątrz static-file.exclude-extensions = (".php", ".pl", ".cgi", ".fcgi") # rozszerzenia plików które nie powinny być wysyłane jako zwykłe pliki np. tekstowe dir-listing.activate = "enable" # listowanie zawartości katalogów w przeglądarce dir-listing.hide-dotfiles = "enable" # ukrywa ukryte pliki ;-)
3. Blokujemy dostęp nie proszonym gościom
Aby zabezpieczyć katalog lub plik przed otwarciem przez niepowołane osoby należy dodać do /etc/lighttpd/lighttpd.conf kilka linii w których należy wskazać katalog oraz dozwolony lub niedozwolony adres IP.
$HTTP["remoteip"] !~ "192.168.1." { # "!" - zaprzeczenie, jeżeli adres IP nie jest podobny do tego $HTTP["url"] =~ "^/oneill/" { # to dla katalogu /oneill/ na serwerze url.access-deny = ( "" ) # dostęp zostanie zablokowany } }
W następnej części postaram się opisać jak zainstalować PHP, MySQL czy SQLite a także jak tworzyć adresy przyjazne adresy URL.