PHP İşleyiciler (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.

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.

Apache, özel bir modül olmadan PHP komut dosyalarını yerel olarak desteklemez. Apache'ye PHP betiklerinin nasıl işleneceğini söyleyen modüle PHP işleyici denir. Düzgün yapılandırılmış bir modül olmadan Apache, PHP dosyasını bir indirme dosyası olarak gönderecektir, çünkü başka ne yapacağını bilmemektedir.

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ç performans 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.

PHP İşleyicileri

DSO / mod_php Apache Modülü / mod_php
CGI CGI
Fcgi / FastCGI Fcgi / FastCGI
PHP-FPM PHP-FPM
suPHP'ye - (suExec etkin CGI)
LSAPI - (LiteSpeed ??Web Sunucusu kurulu değilse)

 

PHP İşleyiciler (Handlers) (CGI, DSO, suPHP, FastCGI ) 

DSO (mod_php) / Apache Modülü

DSO (dynamic shared object) aynı zamanda mod_php olarak bilinir. DSO eski fakat hızlı bir handler dır.

Bu modül Apache'nin PHP dosyalarını doğrudan ayrıştırmasını ve görüntülemesini sağlar. Mod_php tarafından ayrıştırılan PHP komut dosyaları Apache'nin kendisi ile aynı kullanıcıyla çalışır (PHP dosyalarını barındıran kullanıcı hesabı yerine).

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.

İkinci 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ı:

  • Apache çalışırken bir kez yüklenir ve CGI ve suPHP den daha hızlıdır
  • Mevcut en hızlı işleyicilerden biridir
  • Htaccess dosyasında php_flag lara izin verir
  • PHPoptcode cache ler ile uyumlu çalışır (xcache, apc)
  • Sunucuda tek başına çalışan uygulamalar için idealdir.
  • Mod_ruid2 veya mpm_itk modülleriyle çalışır.

Dezavantajları:

  • 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.
  • CPanel sunucularında yalnızca PHP'nin tek bir sürümü ile çalışır (sunduğunuz diğer PHP sürümleri için diğer işleyicileri kullanmanız gerekir).
  • Komut dosyaları, alan adının veya alt alan adının sahibi yerine Apache kullanıcısı olarak çalışır. Örneğin, bir cPanel sunucusunda, komut dosyası bir dosya veya dizin oluşturursa, bu dosya "kimse" kullanıcısına ait olur ve bu durum hesap sahibi bunları yedeklemeye veya kaldırmaya gittiğinde sorunlara neden olabilir.

PHP İşleyiciler (Handlers) (CGI, DSO, suPHP, FastCGI )

CGI 

CGI: Common Gateway Interface. Ortak Ağ Geçidi Arayüzü anlamına gelir. Bu işleyiciyi kullanarak sistem, etki alanına veya alt alana sahip olan kullanıcı olarak PHP komut dosyalarını çalıştırır. 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.

CGI işleyicisi PHP uygulamalarını mod_cgi veya mod_cgid Apache modülleri aracılığıyla yürütür. SuEXEC modülünü kurarsanız, sistem, isteği sunan VirtualHost'a sahip olan kullanıcı olarak PHP uygulamalarını yürütür. SuEXEC modülünü kaldırırsanız, nobody sistem kullanıcı olarak PHP uygulamalarını çalıştırır . Sistem varsayılan olarak mod_cgi ve mod_ruid2 sağlar.

Önemli:
  • Eğer varsa etkinleştirmek böyle suEXEC veya Ruid2 olarak her kullanıcı modülü, sen izinleriyle PHP yürütebilirsiniz 0400.
  • Eğer varsa devre dışı böyle suEXEC veya Ruid2 olarak her kullanıcı modülü, sen izinleriyle PHP yürütebilirsiniz 0444.
  • Sen olamaz (örneğin, Apache direktifleri kullanmak php_valueile direktif) mod_cgiveya mod_cgidApache modüllerinin. Sen gerekir özel kullanmak php.iniyerine dosyayı.
  • CGI çoğu kullanıcının gereksinimlerini karşılasa mod_ruid2da mod_mpm_itk, daha iyi güvenlik işlemleri mod_ruid2için DSO'yu ya veya DSO'yu ve bir Jailshell hesabıyla kullanmanızı öneririz

Avantajları:

  • Orta derecede trafiği olan ve paylaşımlı host edilen sunucular için idealdir.
  • Dosyaları çalıştıran kullanıcılar farklıdır ve kötü amaçlı script çalıştıranlar tespit edilebilir
  • Konfigurasyon daha kolaydir, httdpd.conf, sunucu php.ini ve kullanıcı için php.ini kullanılabilir
  • Dosya izinleri ile kafanızı ağrıtmaz.
  • Komut dosyaları, Apache kullanıcısı olarak değil, alan adı veya alt alan adı kullanıcısı olarak çalışır.

Dezavantajları

  • php siteler nispeten yavaş çalışır
  • htaccess php yönergeleri kullanılamaz
  • suphp ye göre daha az güvenlidir.
  • Yüksek trafikte sunucu kapasitesini zorlar
  • Zararlı kodlar, exploit ve trojanlara dikkat edilmesi gerekir çünkü php dosya sahibi olarak çalışır.
  • En yavaş işleyenlerden biri.
  • PHP opcode önbellekleme ile iyi çalışmıyor.
  • PHP yapılandırma değişiklikleri bir .htaccess dosyasına yerleştirilemez.

PHP İşleyiciler (Handlers) (CGI, DSO, suPHP, FastCGI )

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.

Bu işleyici, PHP komut dosyasını çalıştıran etki alanının veya alt etki alanının sahibi olarak PHP komut dosyalarını sunmak üzere özel olarak tasarlanmıştır.

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ı:

  • Paylaşımlı hosting sunucuları ve orta derecede trafiği olan web siteleri için idealdir.
  • DSO ya göre daha güvenlidir.
  • Dosyaları çalıştıran kullanıcılar farklıdır ve kötü amaçlı script çalıştıranlar tespit edilebilir
  • Konfigurasyon daha kolaydir, httdpd.conf, sunucu php.ini ve kullanıcı için php.ini kullanılabilir
  • Dosya izinleri ile kafanızı ağrıtmaz.
  • Komut dosyaları, Apache kullanıcısı olarak değil, alan adı veya alt alan adı kullanıcısı olarak çalışır.
  • cPanel, suPHP'yi, güvenlik için 755'ten daha yüksek izinlere sahip dosyalara veya dizinlere erişmeyi veya yürütmeyi engelleyecek şekilde yapılandırır.

Dezavantajları:

  • php seb siteleri nispeten yavaş çalışır.
  • htaccess php yönergeleri kullanılamaz
  • Yüksek trafikte sunucu kapasitesini zorlar
  • Zararlı kodlar, exploit ve trojanlara dikkat edilmesi gerekir çünkü php dosya sahibi olarak çalışır.
  • Çoğu durumda en yavaş PHP işleyicisi.
  • PHP Opcode önbelleğe alma işleminde performans artışı yoktur ve yalnızca bellek kaybı olur.
  • PHP yapılandırma değişiklikleri bir .htaccess dosyasına yerleştirileme

PHP İşleyiciler (Handlers) (CGI, DSO, suPHP, FastCGI )

Fcgi / 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.

FastCGI, eski CGI işleyicisine göre bir dizi avantaj sağlayan CGI protokolünün bir varyasyonudur. Bu modülü kullanarak sistem, etki alanına veya alt alana sahip olan kullanıcı olarak PHP komut dosyalarını çalıştırır. Mod_fastcgi ve mod_fcgid arasında bazı farklar vardır.

Aynı zamanda eaccelarator ve APC gibi caching modülleri ile kullanılabilir. Fastcgi in kötü yanı ise fazla bellek tüketmesidir.

Avantajları:

  • Diğer php handler larından daha hızlıdır
  • Yüksek trafikli web siteleri için idealdir.
  • Az bellek tüketimi için ideal seçenektir.
  • Komut dosyaları, Apache kullanıcısı olarak değil, alan adı veya alt alan adı kullanıcısı olarak çalışır.
  • Çok hızlı işleyici.
  • PHP opcode önbellekleme ile çalışır.

Dezavantajları:

  • htaccess php yönergeleri kullanılamaz
  • Herhangi bir sayfa çağrılmasada php işlemleri çalıştırır, yüksek trafikli siteler için idealdir ancak düşük trafikli siteler için gereksiz kaynak kullanımı anlamına gelir.
  • Zararlı kodlar, exploit ve trojanlara dikkat edilmesi gerekir çünkü php dosya sahibi olarak çalışır.
  • Bu işleyici diğerlerinden daha fazla bellek kullanır.
  • PHP yapılandırma değişiklikleri bir .htaccess dosyasına yerleştirilemez.

PHP-FPM

FPM, FastCGI Process Manager'ın kısaltmasıdır. PHP'nin FastCGI işlemesini uygulamanın gelişmiş bir yoludur. Bu işleyiciyi kullanarak sistem, etki alanına veya alt alana sahip olan kullanıcı olarak PHP komut dosyalarını çalıştırır. Her FPM havuzunun bağımsız ayarları olabilir.

Artıları

  • Komut dosyaları, Apache kullanıcısı olarak değil, alan adı veya alt alan adı kullanıcısı olarak çalışır.
  • En hızlı PHP işleyicilerinden biri.
  • PHP opcode önbellekleme ile çalışır.
  • Havuz başına bir miktar ek esneklik sağlar.

Eksileri

  • Bu işleyici, burada listelenen diğer işleyicilerden daha fazla bellek kullanabilir, ancak bu, PHP-FPM kullanan site sayısına ve FPM havuzunun yapılandırmasına bağlıdır.
  • Yönetilmesi biraz daha karmaşık olabilir.
  • PHP yapılandırma değişiklikleri bir .htaccess dosyasına yerleştirilemez ve bazı yönergeler yalnızca genel düzeyde değiştirilebilir.

LSAPI

Bu işleyici LiteSpeed ??Web Sunucusu (LSWS) SAPI uygular. Bu işleyici, maksimum fayda için CloudLiunx veya LSWS gerektirir. Bu işleyiciyi kullanarak sistem, etki alanına veya alt alana sahip olan kullanıcı olarak PHP komut dosyalarını çalıştırır.

Artıları

  • Belirli koşullar altında PHP-FPM'den daha iyi veya daha iyi performans gösterecek şekilde tasarlanmıştır.
  • Diğer işleyicilerin çoğundan daha az bellek kullanımı.
  • Komut dosyaları, Apache kullanıcısı olarak değil, alan adı veya alt alan adı kullanıcısı olarak çalışır.
  • Özel bir yapılandırma gerekmez.
  • PHP değerlerini bir .htaccess dosyasından okuyabilir.

Eksileri

  • Üçüncü taraf bir ticari ürün satın almadan tam fayda elde edemezsiniz.
  • Mod_ruid2 veya mpm_itk ile uyumlu değildir (ancak bunlara gerek yoktur).

PHP Handlerları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


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?

 

  mod_php CGI suPHP FastCGI
Memory usage Low Low Low High
CPU Usage Low High High Low
Security Low Low High High
Run as file owner No No Yes Yes
Overall Performance Fast Slow Slow Fast

Of course another consideration might be ease of installation however with the multitude of tutorials available on the web help should be no further away than a quick Google search on the topic.

 

Bir Başka  İngilizce Makale

Kaynaklar

Yorumunuzu Ekleyin

PHP Data Objects (PDO) Nedir?
Yükleniyor...