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-cgi
Nazwy 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 server
Do 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.