Bu bölüm PHP'nin Unix sistemlerde Lighttpd 1.4 ile kurulumu hakkında bilgiler ve ipuçları içerir.
Lütfen devam etmeden önce » Lighttpd redmine sitesini ziyaret edip Lighttpd'nin doğru düzgün nasıl kurulacağını öğreniniz.
PHP ve Lighttpd'ye bağlanmak için tercih edilen SAPI FastCGI'dir. FastCGI, php-cgi'yi otosihirli bir şekilde etkin kılar.
Lighttpd'nin PHP'ye bağlanmasını ve fastcgi süreçlerini çatallamasını sağlamak üzere yapılandırmak için lighttpd.conf dosyasını düzenlemeniz gerekir. FastCGI süreçlerine yerel sistemden bağlanmak için soketler tercih edilir.
Örnek 1 - lighttpd.conf'tan bir bölüm
server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
((
"socket" => "/tmp/php.socket",
"bin-path" => "/usr/local/bin/php-cgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "16",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"min-procs" => 1,
"max-procs" => 1,
"idle-timeout" => 20
))
)
bin-path yönergesi lighttpd'nin fastcgi süreçlerini
dinamik olarak çatallamasına izin verir. PHP kendi çocuklarını
PHP_FCGI_CHILDREN ortam değişkenine göre çatallayacaktır.
Çatallanan sürecin ortamını bin-environment yönergesi
tanımlar. PHP, PHP_FCGI_MAX_REQUESTS değerinin aşılmasına
sebep olan çocuk süreci öldürür. PHP'de min-procs ve
max-procs yönergelerinden genel olarak kaçınılması
gerekir. PHP kendi çocuklarını yönetir ve makine kodu önbelleklerini APC
gibi çocukları arasında paylaştırır. min-procs
yönergesine 1'den büyük bir değer atanmışsa PHP
yanıtçılarının sayısı PHP_FCGI_CHILDREN değerinin katları
olacaktır (2 min-procs * 16 çocuk eşittir 32 yanıtçı).
Lighttpd, FastCGI süreçlerinin çatallanmasını kolaylaştırmak için
spawn-fcgi adında bir uygulamayla gelir.
Süreçleri spawn-fcgi kullanmaksızın çatallamak mümkünse de,
biraz ağır kaldırma çalışmak gerekir. Gelen istekleri karşılamak için
PHP'nin kaç çocuk çatallayacağı PHP_FCGI_CHILDREN ortam
değişkeni ile belirlenir. PHP'nin her çocuğunun kaç isteklik yaşayacağını
ise PHP_FCGI_MAX_REQUESTS belirler. Aşağıda, PHP
yanıtçılarının çatallanmasına yardımcı olan basit bir bash
betiği verilmiştir.
Örnek 2 - FastCGI Yanıtçılarının Çatallanması
#!/bin/sh
# php-cgi çalıştırılabilirinin yeri
PHP=/usr/local/bin/php-cgi
# PID dosyasının yeri
PHP_PID=/tmp/php.pid
# Dinlenecek adres
#FCGI_BIND_ADDRESS=10.0.1.1:10000
# Dinlenecek soket
FCGI_BIND_ADDRESS=/tmp/php.sock
PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=10000
env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \
PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \
$PHP -b $FCGI_BIND_ADDRESS &
echo $! > "$PHP_PID"
Uygulamaları dengelemek için FastCGI örnekleri çok sayıda uzak makineye çatallanabilir.
Örnek 3 - Uzak FCGI örneklerine bağlanmak
fastcgi.server = ( ".php" =>
(( "host" => "10.0.0.2", "port" => 1030 ),
( "host" => "10.0.0.3", "port" => 1030 ))
)