Blog (107)
Komentarze (2.3k)
Recenzje (0)
@webnullcz. 2 | PHP w Lighttpd

cz. 2 | PHP w Lighttpd

03.02.2011 19:57, aktualizacja: 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.

377885

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
377895

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.

377913

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" )
Wybrane dla Ciebie
Komentarze (8)