Gerçekten büyük ve ziyaretçi sayısı çok yüksek olan projelerle uğraşanlar, ne demek istediğimi çok daha iyi anlayacaklardır. Bu tür projelerde neredeyse hiçbir şey paketten çıktığı gibi işinize yarar halde bulunmaz. Sistemi en optimum şekilde çalıştırmak ve elinizdeki donanımı en verimli şekilde kullanmak için pek çok drumuda paketten çıkan ayar dosyaları işinize yaramayacaktır. Bunlar üzerinde (bazen günlerce) zaman harcamanız gerekebilir. Ancak öyle durumlar olur ki; bu ayar dosyalarıyla oynamak da çözüm getirmeyecektir, kullandığınız uygulamanın kaynak kodlarına dahi bulaşmanız gerekebilir (özgür yazılım kullanmanın faydaları).
Konumuza dönersek; bir proje için LAMP dörtlüsünü kullanmaya karar verdiğinizde bu projenin ne kadar büyüyebileceğini baştan tahmin etmeniz sizin için yararlı olacaktır. Bu dörtlüde Apache dışında kalanlar (Linux, MySQL ve PHP) bu yazının konusu olmadığından doğrudan web server (Apache ve Nginx) değerlendirmesine geçelim.
Şirket sunucularımızda bir yıldan fazla süredir Nginx’i hem yük dengeleyici (load balancer) hem de web server (PHP FastCGI) olarak kullanıyoruz ve şimdiye kadar da herhangi bir ciddi problemle karşılaşmadık. Apache ile karşılaştırmasını maddeler halinde aklıma geldiğince yazayım:
- Apache hakkında piyasada Türkçe ve İngilizce çok fazla doküman bulabilirsiniz. Bu Apache için bir artı sayılabilir. Nginx için ise -çoğu durumda- maalesef kendi Wiki’si ile idare etmek zorunda kalabilirsiniz. Türkçe olmasa da pek çok konuda size yardımcı olacaktır.
- Apache’nin tarihi Nginx’e göre çok daha uzun olduğundan Apache hakkında tecrübe sahibi insanları (destek için) bulmanız daha kolay olacaktır.
- Apache için piyasada yüzlerce modül varken Nginx için bunu söylemek -şimdilik- zor.
- Apache thread-pool desteklemesine rağmen PHP ile kullandığınızda maalesef bu güzelliğinden faydalanamıyor, prefork kullanmak zorunda kalıyorsunuz (PHP thread-safe bir yapıya sahip olmadığından).
- Apache, Nginx’e göre çok daha fazla bellek ve işlemci gücü harcar.
- Ayar dosyaları Nginx’e göre daha karmaşık ve zordur. Nginx ise çok daha basit bir sözdizimi sunar ayar dosyalarında.
- Apache’de her dizin için ayrı ayrı .htaccess dosyaları ile ayar yapmanıza izin verirken, Nginx tarafında bu ayarları kendi ayar dosyasından yapmanız gerekir, .htaccess veya benzeri bir şeyi desteklemez (ya da ben bulamadım).
- Nginx’in kendinden gelen (veya Apache gibi modülle gelen) bir PHP desteği maalesef buunmuyor. Bunun için FastCGI kullanmak zorundasınız (bu bir artı mı yoksa eksi mi karar veremedim açıkçası).
- Nginx her durumda Multi-Threaded çalıştığından SMP desteği Apache’ye göre çok daha iyidir. Bu sayede bilmem kaç çekirdekli bilmem kaç işlemcisi olan sunucularınızı Nginx ile daha verimli kullanabilirsiniz.
0 yorum:
Yorum Gönder