php

PHP HANDLERS (CGI, DSO, suPHP, & FastCGI )
PHP tabanlı bir web siteniz varsa linux sunucularda host edildiğini biliyorsunuz demektir. Ancak pek az kişi linux sunucunun türünden haberdardır ve php nin sunucuya nasıl bir modda çalıştığını bilir.
Eğer ciddi bir web sitesi yönetiyorsanız ve yüksek performans istiyorsanız o zaman apache sunucusunun ve php nin ayarlarının iyi yapıldığından emin olmanız gerekir.

Bu yazımızda php handler larına göz atacağız ve temel özelliklerini ortaya koymaya çalışacağız.

Bildiğiniz gibi php sunucu tarafında çalışır, kullanıcı php tabanlı bir web sitesine girdiğinde sunucu web sitesindeki php kodları yorumlar ve sonuçları tarayıcınıza getirir.
bu yorumlama ise hangi php kütüphanesi kullanıldığına bağlı olarak değişir. Php handler ları php nin sunucuya nasıl yükleneceğini belirler.
Yani her handler php kodlarının çalışması için gerekli kütüphaneleri içerir, hepsinde farklıdır ve bu farklarda php nin performansını etkiler. Dolayısıyla her handler php yi farklı şekilde yükler bu da uygulamanın türüne göre değişik sonuçlar verir.

Php handler ların birbirlerinden üstünlükler ve zayıf kaldıkları noktalar vardır. Seçimizi belirleyecek şey ise;
hangi uygulamaları çalıştıracaksınız ?
hangi modüllere ihtiyacınız var ?
uygulamanız hangi php versiyonuna göre hazırlanmış ?
Sizin için sistem kaynaklarının tasarruflu kullanılmasımı yoksa tek amaç performan mı?
Sunucuda birden çok web sitesimi host edeceksiniz, yoksa tek bir sitemi ?
Host edilecek siteler açık kaynak kodlu wordpress,joomla gibi içerik yönetim sistemlerimi ? bir eticaret yazılımımı mı?

Bu seçimler ve ayarlamalar web sitenizin performansını direk etkiler.

 

DSO (mod_php)

DSO (dynamic shared object) aynı zamanda mod_php olarak bilinir. DSO eski fakat hızlı bir handler dır.
DSO handler da php apache sunucusunun bir modülü gibi çalışır. Bu php script inin apache yetkisiyle "nobody" user olarak çalışması anlamına gelir.
Bunun 2 sakıncası vardır, birincisi dosyaların sahibi "nobody" kullanıcısı olur, özellikle wordpress cms kullanırken wordpress arayüzü kullanılarak dosya yüklemesi yapılamaz.

ikinci sakınca ise güvenliktir. php tarafından yaratılan dosyaların sahibi nobody kullanıcısı olduğundan php script te bir açık varsa kötü niyetli kişiler bu açığı kullanılarak sisteminize ciddi hasarlar verebilir.
çünkü bu dosyaların hakları system dosyalarıyla aynı yetkiye sahiptir. Böylelikle eğer paylaşımlı barındırma yapılan bir sunucudaysanız (shared hosting) ki tüm hosting sunucuları paylaşımlıdır, başka bir web sitesindeki açık sizin web sitenizin güvenliğinide tehlikeye atabilir.
Bu da eğer web sitenizde önemli bilgiler tutuluyorsa bunların güvenliğini tehlikeye atar.
Ancak vps hosting (virtual private server - size özel sanal sunucu) iniz varsa sunucu güvenliğini sağlamak, sitenizdeki kodlar vb. konular sizin elinizdedir ve php handler olarak dso seçmek az bellek tüketimi ve performans sağlayacağı için iyi bir seçim olacaktır.

DSO kullanırken sunucu yazılımlarını, php versiyonunu ve diğer scriptleri güncel tutarak güvenliğinizi sağlamanız gerekir.

Avantajları:
1-Apache çalışırken bir kez yüklenir ve CGI ve suPHP den daha hızlıdır
2-Htaccess dosyasında php_flag lara izin verir
3-PHPoptcode cache ler ile uyumlu çalışır (xcache, apc)
4-sunucuda tek başına çalışan uygulamalar için idealdir.
Dezavantajları:
1-php prosesleri genellikle "nobody" kullanıcısı olarak işlem yapar, buda genellikle cpanel ve ftp kullanılarak yapılan işlemlerde dosya izin sorunları yaratır.

CGI
CGI: Common Gateway Interface. CGI handler ında php CGI modulu olarak çalışır apache modülünden farklıdır. CGI da yine PHP "nobody" user olarak çalışır fakat suexec aktif edilmişse isteğin hangi user dan geldiği görülebilir.
Fakat Cpanel dökümanlarında bu metodun suexec olsada olmasa da hızlı olmadığını ve güvensiz olduğunu yazar.

Avantajları:
1-orta derecede trafiği olan ve paylaşımlı host edilen sunucular için idealdir.
2-dosyaları çalıştıran kullanıcılar farklıdır ve kötü amaçlı script çalıştıranlar tespit edilebilir
3-konfigurasyon daha kolaydir, httdpd.conf, sunucu php.ini ve kullanıcı için php.ini kullanılabilir
4-dosya izinleri ile kafanızı ağrıtmaz.
Dezavantajları
1-php siteler nispeten yavaş çalışır
2-htaccess php yönergeleri kullanılamaz
3-suphp ye göre daha az güvenlidir.
4-yüksek trafikte sunucu kapasitesini zorlar
5-zararlı kodlar, exploit ve trojanlara dikkat edilmesi gerekir çünkü php dosya sahibi olarak çalışır.

suPHP
Single User PHP yani tek kullanıcılı PHP, metodunda yine php CGI modülü olarak çalışır. CGI handler dan farklı olarak kullanıcı nobody değil kendisidir.
suphp cpanel in default (ön tanımlı) php handler ıdır. wordpress ya da joomla benzeri içerik yönetim sistemleri kullanılıyorsa uygundur. Çünkü tüm dosyalar doğru kullanıcı ayarları yetkileriyle yazılırlar.
böylece her dosya kendi kullanıcısı tarafından çalıştırılabilir, başka bir kullanıcı ya da root sizin dosyalarınızı çalıştıramayacağı için güvenlidir.
SuPHP nin kötü yanı fazla cpu tüketmesidir. Ayrıca SuPHP ile APC veya XCache gibi caching modülleri kullanamazsınız.

Avantajları:
1-paylaşımlı hosting sunucuları ve orta derecede trafiği olan web siteleri için idealdir.
2-DSO ya göre daha güvenlidir.
3-dosyaları çalıştıran kullanıcılar farklıdır ve kötü amaçlı script çalıştıranlar tespit edilebilir
4-konfigurasyon daha kolaydir, httdpd.conf, sunucu php.ini ve kullanıcı için php.ini kullanılabilir
5-dosya izinleri ile kafanızı ağrıtmaz.
Dezavantajları:
1-php seb siteleri nispeten yavaş çalışır.
2-htaccess php yönergeleri kullanılamaz
3-yüksek trafikte sunucu kapasitesini zorlar
4-zararlı kodlar, exploit ve trojanlara dikkat edilmesi gerekir çünkü php dosya sahibi olarak çalışır.

FastCGI
mod_fcgid ya da FCGI olarak geçer. CGI ın yüksek hızlı türevidir. FastCGI da php scripti kullanıcı cpanel kullanıcıyla aynıdır. CGI dan farklı olarak cpu kullanımı düşüktür ve DSO ya yakın derecede hızlıdır.
Aynı zamanda eaccelarator ve APC gibi caching modülleri ile kullanılabilir. Fastcgi in kötü yanı ise fazla bellek tüketmesidir.
Avantajları:
1-diğer php handler larından daha hızlıdır
2-yüksek trafikli web siteleri için idealdir.
3-az bellek tüketimi için ideal seçenektir.
Dezavantajları:
1-htaccess php yönergeleri kullanılamaz
2-herhangi bir sayfa çağrılmasada php işlemleri çalıştırır, yüksek trafikli siteler için idealdir ancak düşükt trafikli siteler için gereksiz kaynak kullanımı anlamına gelir.
3-zararlı kodlar, exploit ve trojanlara dikkat edilmesi gerekir çünkü php dosya sahibi olarak çalışır.

 

PHP Handler ların karşılaştırması
  DSO  CGI  SUPHP  FastCGI
Düşük cpu kullanımı  x     x
Düşük bellek tüketimi x x x  

PHP apache kullanıcısı yerine

site kullanıcısı olarak çalışır

  x x x
Güvenlik     x x
Hız  x     x

 

sonuç:
Tüm php Handler ların avantajları ve dezavantajları bulunur, çok seçenek olması sizin ihtiyacınıza göre birini seçmenize olanak tanır buda neden web teknolojilerinde ağırlıklı olarak php ve açık kaynak kodlu yazılımların kullanıldığını açıklamaktadır.
İhtiyacınıza göre doğru php handler ini seçebilirsiniz, sizin için hızmı kaynak tüketimi mi yoksa güvenlikmi ön planda?

Kaynaklar:
http://docs.cpanel.net/twiki/bin/view/EasyApache/Php/RequestHandling
http://www.inmotionhosting.com/support/website/php/choosing-the-best-php-handler