cz. 2 | PHP w Lighttpd
03.02.2011 | aktual.: 04.02.2011 14:28
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.use
dev-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" )