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 )) )