Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

lighttpd - serwer dla aplikacji PHP w kilka sekund

Sposobów na utworzenie lokalnego serwera służącego do celów deweloperskich jest wiele. Moglibyśmy męczyć się z Apache i VirtualHost, ale gdy mamy wiele aplikacji, to zaczyna to być niewygodne. Mi jednak spodobał się sposób, który występuje w Ruby on Rails - wpisujemy 'rails server' i bez żadnej konfiguracji możemy działać. Później tylko naciskamy Ctrl-C i serwer znika.
Postanowiłem uruchomić podobny serwer dla aplikacji PHP - i tutaj z pomocą przyszedł mi lighttpd.

Instalacja serwera

Przykład instalacji w Debianie:aptitude install lighttpd php5 php5-cgiNazwy pakietów mogą się różnić w zależności od danej dystrybucji

Konfiguracja serwera

Najpierw przejdźmy do katalogu, w którym znajduje się kod naszej aplikacji:cd <folder_z_kodem_aplikacji>Utwórzmy katalog, w którym będą się znajdować pliki konfiguracyjne i logi:mkdir serverDo uruchomienia lighttpd potrzebny nam będzie plik konfiguracyjny:vim server/lighttpd.conf server.bind = "0.0.0.0" server.port = 3000 server.document-root = CWD server.errorlog = CWD + "/server/logs/lighttpd.error.log" accesslog.filename = CWD + "/server/logs/lighttpd.access.log" index-file.names = ( "index.php", "index.html", "index.htm", "default.htm" ) server.modules = ("mod_fastcgi", "mod_accesslog") fastcgi.server = ( ".php" => (( "bin-path" => "/usr/local/bin/php-cgi", # w Debianie /usr/bin/php-cgi "socket" => CWD + "/server/php5.socket", ))) mimetype.assign = ( ".css" => "text/css", ".gif" => "image/gif", ".htm" => "text/html", ".html" => "text/html", ".jpeg" => "image/jpeg", ".jpg" => "image/jpeg", ".js" => "text/javascript", ".png" => "image/png", ".swf" => "application/x-shockwave-flash", ".txt" => "text/plain" ) Teraz stwórzmy skrypt, który uruchomi serwer:vim server/start #!/bin/bash mkdir -p server/logs server=$(cat server/lighttpd.conf | awk '/server.bind/ { print $3 }' | sed 's/\"//g'); port=$(cat server/lighttpd.conf | awk '/server.port/ { print $3 }'); echo "Uruchomiono server - http://${server}:${port}"; echo "Naciśnij Ctrl-C aby zakończyć"; /usr/local/sbin/lighttpd -D -f server/lighttpd.conf # w Debianie /usr/sbin/lighttpd echo "Zakończono"; Dodajmy mu prawa do wykonywania:chmod +x server/start

Uruchamianie

Serwer uruchamiamy poleceniem:<folder_aplikacji>$ server/start

Podsumowanie

Według mnie ten sposób jest dużo prostszy i wygodniejszy niż instalacja Apache. Jednym poleceniem i bez zbędnej konfiguracji możemy szybko uruchomić serwer z naszymi ustawieniami. Wystarczy nam tylko zainstalowany w systemie pakiet lighttpd :)
Przetestowane na OS X i Debianie z CakePHP i WordPress. 

linux programowanie serwery

Komentarze

0 nowych
meron11   4 #1 19.02.2012 17:40

"apt-get install lighttpd php5 php5-cgi"
A jednak są masochiści uzywajacy apt-get;a pod debianem....
Czemu nie aptitude? Wygodniejszy i lepiej zarżadza zależnosciami.

A poza tym ,sam uzywam lighttpd jako developer php i polecam strasznie.
Wydajny, szybki, sprawny, i nie je tyle ramu co apache.



A i kolejny cukierek, po co zewnętrzny skrypt do uruchamiania?
/etc/init.d/lighttpd start|stop|force-reload :)

M@ster   17 #2 19.02.2012 17:42

Zasadnicze pytanie, jest wersja na Windowsa? :) Nie żeby apache mi nie odpowiadał, ale mam wrażenie że jak na skromne potrzeby lokalnego developingu to aż nadto.

dominikc   5 #3 19.02.2012 17:49

@meron11
To tylko testowałem na maszynie wirutalnej. Normalnie używam OS X.
"A i kolejny cukierek, po co zewnętrzny skrypt do uruchamiania? "
To skrypt do uruchamiania w obecnym folderze.

meron11   4 #4 19.02.2012 17:51

W sumie to tak, zwracam honor.

mktos   10 #5 19.02.2012 19:02

lighttpd jest świetny. Wadą za to jest zdecydowanie mniej przyjemna (IMO) obsługa rewrite niż w Apache czy IIS. Nadaje się oczywiście nie tylko dla programistów, ale i do normalnego hostingu (i w wielu sytuacjach lepiej niż Apache).

@M@ster: Jest, ale jak widzę... strona nie działa. Ale można samemu skompilować :-) Pod Windows nawiasem dobrze sprawuje się oczywiście IIS, nie wiem jak dobrze działa developerski IIS Express.

M@ster   17 #6 19.02.2012 19:14

@mktos
W życiu z IIS nie korzystałem, ale chyba warto też by się i tym zainteresować :)

mcywinski   3 #7 19.02.2012 19:58

Oo! Fajnie, że ktoś prócz mnie też dostrzega ligttpd :) Zdecydowanie fajny, lekki serwer, a w dodatku prostszy w konfiguracji od ociężałego Apache 2.

A! Ja też używam apt-get :)

  #8 20.02.2012 00:42

A ja z kolei polecam Nginx :) Żaden inny serwer nie jest tak wydajny jak on (przynajmniej przy statycznych plikach).
A do typowego "developingu" to jednak wybrałbym Apache'a. Jedno polecenie: sudo apt-get install apache2 php5 (apt a jak:P) i mamy gotowy serwer.
Tak nawiasem mówiąc PHP w wersji 5.4 będzie miał wbudowany serwer WWW: http://webhosting.pl/PHP.5.4.przyniesie.wbudowany.serwer.WWW.Do.czego.sie.to.moz...

  #9 20.02.2012 03:33

Meron11 tak się składa, że aptitude to jak nawet sama nazwa wskazuje nakładka graficzna dla tych co są lamerami i nie umieją korzystać z konsoli i apt-get'a.

djgrzenio   9 #10 20.02.2012 09:12

osobiscie wole nginxa, pozatym lighttpd ma swoje reguly rewrite co jest jego wielkim minusem

  #11 20.02.2012 09:16

Oczywiście apt-get ;) Co to jest aptitude? (and lighttpd ^^)

dominikc   5 #12 20.02.2012 10:57

@djgrzenio
Ale czy da się uruchomić nginx w ten sam sposób, tzn. z dowolnego folderu?

dominikc   5 #13 20.02.2012 11:00

@kormichu (niezalogowany)
Też coś słyszałem o tym, że PHP będzie miało wbudowany w serwer.
"A do typowego "developingu" to jednak wybrałbym Apache'a. Jedno polecenie: sudo apt-get install apache2 php5 (apt a jak:P) i mamy gotowy serwer"
Ale mi potrzebny był serwer, który mogę uruchomić z dowolnego katalogu bez konfiguracji.

djgrzenio   9 #14 20.02.2012 12:15

oczywiscie, pozatym moze byc wiele domen z roznymi wskazaniami dodatkowo ja uzywam ten serwer jako revers proxy dla innego serwera, gdzie jedna treesc mi podaje aol server a php podaje mi nginx lub apache. zawsze mozna recznie serwer skompilowac i trzymac w calosci w jednym folderze jaki zechcesz

djgrzenio   9 #15 20.02.2012 12:19

root / # nginx -h
nginx version: nginx/0.7.67
Usage: nginx [-?hvVt] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/nginx/)
-c filename : set configuration file (default: /etc/nginx/nginx.conf)
-g directives : set global directives out of configuration file

dominikc   5 #16 20.02.2012 12:26

@djgrzenio
Dzięki, przyda się. Google mi 'podpowiedziało' lighttpd i już nie szukałem dalej :)

djgrzenio   9 #17 20.02.2012 12:32

ja uzywam tego bo jest wydajny bardzo :) bywalo tak ze apache mi zjadal 3gb ramu a szybka zmiana na nginxA I ten sam projekt juz zjadal niecaly gigabajt pamieci. pozatym apache ograniczal mi liczbe requestow a potrzebowalem bardzo wielkie wartosci

meron11   4 #18 20.02.2012 19:09

@siloamx


W życiu nie uzywałem tego "GUI" w ncurses, a pozatym Nie sugeruj że jestem idiotą bo obecnie uzywam gentoo i z debiana wyrosłem.

Owszem jest nakładką, która MASAKRYCZNIE lepiej zarządza pakietami w debianie.Czemu? W internecie jest kilka artykułów na ten temat, nie mi to tłumaczyć.

  #19 21.02.2012 16:40

Tylko nginx niestety działam na jakimś tam hostingu ale jak tylko mam dedykowana maszyne to nginx i fastcgi :D