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