четвртак, 25 априла, 2024
Сам свој мајстор

Lighttpd

Аутор: Владимир Цицовић

Увод

Пре него кренемо са описом и инсталацијом желимо да објаснимо зашто баш Lighttpd и Debian. Lighttpd је један од „лаких“ web сервера који подржава http сервис. Брз је, лако се подешава и, према неким истраживањима, он је на 4. месту (apache, nginx, IIS па lighttpd). Велики број CDN провајдера користи lighttpd као статички сервер или SSL termination сервер. Наравно ово нису једине могућности, напротив, као web сервер има још могућности као што су: h264 transcoder, cache server , http proxy, http load balancer, bandwith throtling server и тако даље. Уосталом препоручујем да погледате линк http://redmine.lighttpd.net/projects/1/wiki/Docs.

Што се тиче Debian-a то је један од најбољих продукцијских сервера који дозвољава комфоран рад а под тим се подразумева – једноставна инсталација, конфигурација и додавање нових и уклањање постојећих сервиса. Једноставно речено Debian у Linux свету продукцијских сервера је некрунисани краљ.

У првом делу ћемо обрадити инсталацију и основу конфигурацију сервера. У другом делу ћемо покушати да га инсталирамо под chroot то јест, да изолујемо од остатка сервера – имамо две варијанте – прва је комплетна изолација Lighttpd и друга је само php-cgi (врло проблематично у свету продукцијских сервера).

Инсталација Lighttpd

Као што смо раније навели Debian jе прави избор за продукцијски сервер. Инсталација Lighttpd се врши једноставно:

apt-get -y install lighttpd

Са овим смо поставили основну конфигурацију за рад. Следеће што је потребно – ако није инсталиран bzip2 (користи се за компресовање датотека и директоријума) је:

apt-get -y install bzip2

Lighttpd је инсталиран под корисником www-data, да бисмо обезбедили приступ Lighttpd потребно је да доделимо права над директоријумом у којем се налази index.html . Са командом:

chown -R www-data:www-data /var/www/

додељујемо права над web root-ом. Да бисмо тестирали из командне линије треба да инсталирамо Lynx sa komandom:

apt-get -y install lynx

Да бисмо проверили да ли је покренут Lighttpd покренућемо команду:

pidof lighttpd

Ако се појаве бројеви као:

3444 3445

То је знак да је Lighttpd покренут. У супротном, стартујемо га са командом:

/etc/init.d/lighttpd start

Где треба да се појави:

Starting web server: lighttpd

Након овога извршићемо команду:

lynx 127.0.0.1

Где би требало да се појави садржај датотеке /var/www/index.html. Са овим смо завршили инсталацију.

Основна конфигурација

За објашњење узећемо пример из /etc/lighttpd/lighttpd.conf.

[code]server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
"mod_rewrite",
)[/code]

Линија server.modules означава почетак листе модула који ће се учитати. Овде видимо: mod_access, mod_alias, mod_compress, mod_redirect, mod_rewrite. Mod_access је модул који служи за спречавање приступа одређеним типовима датотека то јест са одређеним екстензијама. Пример:

url.access-deny = ( “~” , “.inc”)   # zabrana pristupa datotekama sa //~ i .inc// ekstenzije

Mod_alias је модул који врши замену под-url-а за физичку путању, на пример /test/ за /var/www/test/. Пример:

alias.url = ( "/test/" => "/var/www/test/" )

Mod_compress је модул који користи компресовање како би смањио мрежно оптерећење и брже послао клијенту садржај. Ово је стандард према којем раде сви сервер/клијент (претраживачи). Пример:

[code]compress.cache-dir = "/var/www/cache/" # direktorijum gde će biti kompresovan materijal
compress.allowed-encodings = ("bzip2", "gzip", "deflate") # dozvoljeni tipovi kompresije
compress.filetype = ("text/plain", "text/html") # koje tipove datoteka kompresovati[/code]

Mod_redirect се користи за преусмеравање на одређени url. Пример:

$HTTP["host"] =~ "^www\.(.*)$" {
url.redirect = ( "^/(.*)" => "http://%1/$1" )
}

Где се са www.nekihost.com преусмерава на nekihost.com.

Mod_rewrite је модул који ради re-writing то јест из једног одређеног улаза url-а пребацује у други форматиран облик. Погодности овога су вишеструке. Пример:

url.rewrite-once = ( "^/(.*)" => "$1" )

Овде на пример www.host.com// преписује у host.com – користи се regex-ом Сад покушајмо редом објаснити линије у lighttpd.conf. Следећа линија на коју наилазимо у нашем основном примеру (добијеном инсталацијом) је: server.document-root = “/var/www/” server.* је део core дела односно дела који је директно интегрисан у Lighttpd серверу. Такође припада му и server.modules. У овој линији ми наводимо lighttpd сервер где почиње document-root путања. Подразумевано би требало да датотека “index.html” која се налази у /var/www буде та која ће се учитати након што отворимо интернет страницу host-a, 127.0.0.1 у нашем примеру.

server.upload-dirs = ( “/var/cache/lighttpd/uploads” )

Ова линија садржи путању директоријума који служи за привремено чување датотеке приликом upload-а.

server.errorlog = “/var/log/lighttpd/error.log”

Овде је дефинисан error лог, врло битан елемент за lighttpd. Ако нешто крене по злу, најчешће би требало да погледамо овде. Пример би био када lighttpd неће да се покрене или ако нису дефинисане одређене променљиве за рад. server.pid-file = “/var/run/lighttpd.pid”

Pid file – локација у коју се смешта Process ID. server.username = “www-data” server.groupname = “www-data”

Покретање сервера под root-ом није могуће зато се користи корисник са ограниченим приступом. index-file.names = ( “index.php”, “index.html”, “index.htm”, “default.htm”,“index.lighttpd.html” )

 

Одређивање index датотеке. static-file.exclude-extensions = ( “.php”, “.pl”, “.fcgi” ) Можете „објаснити“ које датотеке нису статичне и том приликом побољшати перформансе. Статичне датотеке се „кеширају“ у RAM – то значи да нема потребе за читањем са чврстог диска.

dir-listing.encoding = “utf-8” server.dir-listing = “enable”

Прва линија – енкодирање, презентација директоријума у датом формату. Друга линија – да ли је листање директоријума омогућено? По поставци није, зато се додатно ставља enable”. compress.cache-dir = “/var/cache/lighttpd/compress/” compress.filetype = ( “application/x-javascript”, “text/css”, “text/html”, “text/plain” )

Прва линија – директоријум за компресовање, друга линија – компресовање одређених типова датотека. include_shell “/usr/share/lighttpd/create-mime.assign.pl” include_shell “/usr/share/lighttpd/include-conf-enabled.pl

У lighttpd конфигурацији могуће је користити bash скрипту, perl, ruby, python – односно било који интегрисани интерпретирани језик под линуксом. Са овим добијамо невероватну моћ конфигурације.

Напредније конфигурисање Lighttpd сервера остављамо за следећи број.

Наставак