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

cz. 2 | PHP w Lighttpd

Witam, w poprzednim artykule obiecałem, że napiszę jak skonfigurować interpreter PHP tak by działał on z serwerem WWW - Lighttpd.

Dla tych którzy jeszcze raczkują, i nie wiedzą czym jest PHP, to w skrócie wyjaśnię.

PHP (Hypertext PreProcessor) - obiektowy język programowania, skryptowy służy do tworzenia dynamicznych stron internetowych generowanych "w locie" czyli w czasie rzeczywistym kiedy nastąpi żądanie od klienta.

1. Instalujemy PHP

Gentoo:

Wypadało by najpierw ustawić odpowiednie flagi kompilacyjne w których można wybrać moduły których będziemy używać.

Przykładowy zestaw flag USE zapisany w /etc/portage/packages.usedev-lang/php curl xsl suhosin pdo mysql mysqli sqlite sqlite3 cgi xml simplexml hash calendar mhash posix sockets crypt ctype pcre session unicode sqlite3 g

Po ustawieniu odpowiednich flag i zapisaniu pliku /etc/portage/packages.use można przejść do kompilacji i instalacji pakietu:

emerge php

Debian GNU/Linux, Ubuntu, Mepis, Linux Mint:

apt-get install php5-cgi

Aby dograć dodatkowe moduły należy zainstalować odpowiednią paczkę z modułem, przykładowa lista modułów z repozytorium Debiana 6 Squeeze:

php5-exactimage - fast image manipulation library (PHP bindings) php5-ffmpeg - audio and video support via ffmpeg for php5 php5-lasso - Library for Liberty Alliance and SAML protocols - PHP 5 bindings php5-mapscript - php5-cgi module for MapServer php5-ming - Ming module for php5 php5-uuid - OSSP uuid module for php5 php5-auth-pam - A PHP5 extension for PAM authentication php5-geoip - GeoIP module for php5 php5-idn - PHP API for the IDNA library php5-imagick - ImageMagick module for php5 php5-memcache - memcache extension module for PHP5 php5-memcached - memcached extension module for PHP5 php5-ps - ps module for PHP 5 php5-radius - PECL radius module for PHP 5 php5-sasl - Cyrus SASL extension for PHP 5 php5-suhosin - advanced protection module for php5 php5-svn - PHP Bindings for the Subversion Revision control system php5-tokyo-tyrant - PHP interface to Tokyo Cabinet's network interface, Tokyo Tyrant php5-cgi - server-side, HTML-embedded scripting language (CGI binary) php5-curl - CURL module for php5 php5-dbg - Debug symbols for PHP5 php5-dev - Files for PHP5 module development php5-enchant - Enchant module for php5 php5-gmp - GMP module for php5 php5-imap - IMAP module for php5 php5-interbase - interbase/firebird module for php5 php5-intl - internationalisation module for php5 php5-ldap - LDAP module for php5 php5-mcrypt - MCrypt module for php5 php5-odbc - ODBC module for php5 php5-pgsql - PostgreSQL module for php5 php5-pspell - pspell module for php5 php5-recode - recode module for php5 php5-snmp - SNMP module for php5 php5-sqlite - SQLite module for php5 php5-sybase - Sybase / MS SQL Server module for php5 php5-tidy - tidy module for php5 php5-xmlrpc - XML-RPC module for php5 php5-xsl - XSL module for php5 php5-librdf - PHP5 language bindings for the Redland RDF library php5-remctl - PECL module for Kerberos-authenticated command execution php5-xcache - Fast, stable PHP opcode cacher php5-xdebug - Xdebug Module for PHP 5 php5-adodb - Rozszerzenie optymalizujące bibliotekę abstrakcji bazy ADOdb php5-cli - Interpreter wiersza poleceń języka skryptowego php5 php5-common - Pliki wspólne pakietów zbudowanych ze źródeł php5 php5-gd - Moduł GD do php5 php5-mysql - Moduł MySQL do PHP5

Następnie w /etc/php5/cgi/php.ini odkomentować linie z określonym modułem np.

extension=mysql.so

Arch Linux:

Instalacja pakietu z PHP:pacman -S php

Instalacja rozszerzeń podobnie jak w Debianie.

Fedora. Red Hat, CentOS:

yum install php

Instalacja rozszerzeń podobnie jak w Debianie.

2. Konfigurujemy Lighttpd

Aby Lighttpd współpracował z PHP należy włączyć moduł mod_fastcgi w /etc/lighttpd/lighttpd.conf a także dopisać na końcu odpowiednią regułkę która sprawi, że interpreter PHP będzie wywoływany przez Lighttpd automatycznie przy starcie.

fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php5-cgi", "socket" => "/tmp/php.socket", "max-procs" => 1, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "1", "PHP_FCGI_MAX_REQUESTS" => "50" ), "bin-copy-environment" => ( "PATH", "SHELL", "USER" ), "broken-scriptfilename" => "enable" )))

Oczywiście jeżeli dysponuje się większymi zasobami sprzętowymi można śmiało zwiększyć wartości max-procs, PHP_FCGI_CHILDREN oraz PHP_FCGI_MAX_REQUESTS, jednak na domowy serwer taka konfiguracja wystarczy.

Ważne jest także aby podać prawidłowy socket, ponieważ przez właśnie ten plik Lighttpd "porozumiewa" się z PHP, bin-path za to wskazuje gdzie jest plik binarny z interpreterem PHP.

Jeżeli po umieszczeniu pliku index.php na serwerze wyświetla się zawartość katalogu to oznacza, że zmienna konfiguracyjna index-file.names nie została poprawnie skonfigurowana i należy do niej dodać ciąg "index.php" po przecinku.

index-file.names = ( "index.php", "index.html", "index.htm", "default.htm", " index.lighttpd.html" )

 

Komentarze

0 nowych
XeonBloomfield   5 #1 03.02.2011 20:56

Dobry wpis.

W poprzednim ładnie opisane podstawy instalacji Lighttpd, a w tym uruchomienie na nim PHP.

webnull   9 #2 03.02.2011 22:06

W następnym opiszę jak postawić MySQL, a o SQLite raczej nie napiszę bo to już czysta konfiguracja PHP - SQLite działa jako biblioteka a nie jako serwer.

W sumie opiszę też przeróżne ciekawe funkcje i zastosowania na podsumowanie całego Lighttpd.

tomasz154   2 #3 04.02.2011 08:05

Kolejny dobry wpis.

Jedyne czego bym się czepił to ustawienie PHP_FCGI_MAX_REQUESTS - czemu tylko 5?
50 wydaje mi się jakimś rozsądnym minimum.
Ustawienie to określa po ile żądaniach proces PHP-CGI będzie zrestartowany. Zapobiega to wyciekom pamięci. Ustawiając tą wartość na zbyt małą w rezultacie zmniejszasz wydajność, bo co chwila restartowany jest php-cgi.

PHP_FCGI_CHILDREN = 1 wystarczy przy małym obciążeniu, przy większym należy zwiększyć

  #4 04.02.2011 08:18

@tomasz154:
"Oczywiście jeżeli dysponuje się większymi zasobami sprzętowymi można śmiało zwiększyć wartości max-procs, PHP_FCGI_CHILDREN oraz PHP_FCGI_MAX_REQUESTS, jednak na domowy serwer taka konfiguracja wystarczy. "

tomasz154   2 #5 04.02.2011 08:25

Wierz, lub nie, ale przeczytałem całość ;-)
I radzę zwiększyć PHP_FCGI_MAX_REQUESTS tym bardziej, że to słaba maszyna.

webnull   9 #6 04.02.2011 14:28

@tomasz154
Dzięki - poprawione.

wajdzik   6 #7 05.10.2012 21:32

Trochę odświeżam stary wpis, ale właśnie staram się skonfigurować serwer HTTP z obsługą PHP na Mintcie (wersja na bazie ubuntu). Mając do configu dopisany fragment "fastcgi.server = ( ".php" => (( (...)"
po wpisaniu komendy resetującej serwer "/etc/init.d/lighttpd restart"

dostaję taki wynik:
"Duplicate config variable in conditional 0 global: fastcgi.server
2012-10-05 21:03:31: (configfile.c.912) source: /etc/lighttpd/lighttpd.conf line: 52 pos: 1 parser failed somehow near here: (EOL) "
Twój fragment miałem dopisany na samym końcu konfigu. Miejsce wkazane przez błąd to ostatni znak w ostatniej linii kodu (czyli spacja)

Po wywaleniu tego wydaje się, że wszystko chodzi tak jak trzeba.

Jakieś wskazówki czemu tak się dzieje?

webnull   9 #8 05.10.2012 23:15

@wajdzik | 05.10.2012 21:32
Podaj całą konfigurację na wklejkę.