Web Sunucunuz olarak Mongrel, Apache veya Nginx'e mi ihtiyacınız var?

Bir web sunucusunun ana işlevi, sitenizdeki içeriği trafikle boğmadan veya yükleme sürelerini yavaşlatmadan olabildiğince verimli bir şekilde sunmaktır. Bunu düşünmenin iyi bir yolu su basıncı gibidir; Evinize sıhhi tesisat sisteminizden çok fazla baskı geliyorsa, hiçbir şey düzgün çalışmayacaktır! Benzer şekilde, veriyi boruları aracılığıyla geri göndermeye çalışırken web sunucusunun kendisi için yeterli kaynak yoksa, işler çok hızlı bir şekilde karışmaya başlayacaktır!

Günümüzde kullanılan en popüler üç sunucu türü şunlardır: Mongrels (Ruby ile yazılmıştır), Apache (çoğunlukla C/C++ ile yazılmıştır) ve Nginx (tamamen C ile yazılmıştır). Hangisini seçmelisiniz? Hadi bulalım!

internet sunucusu nedir?

Bir web sunucusu, sunucunun dosya sisteminde depolanan belgeler ve dosyalar için istemcilerden (örneğin, Web tarayıcıları) gelen isteklere yanıt veren bir bilgisayar sisteminin parçasıdır. Terim ayrıca yalnızca bunu mümkün kılan yazılıma veya daha genel olarak bir uygulamanın üzerinde çalıştığı herhangi bir bilgisayar türündeki herhangi bir sunucuya atıfta bulunabilir.

Bir web sunucusunun ana işlevi, sitenizdeki içeriği trafikle boğmadan veya yükleme sürelerini yavaşlatmadan olabildiğince verimli bir şekilde sunmaktır. Bunu düşünmenin iyi bir yolu su basıncı gibidir; Evinize sıhhi tesisat sisteminizden çok fazla baskı geliyorsa, hiçbir şey düzgün çalışmayacaktır! Benzer şekilde, veriyi boruları aracılığıyla geri göndermeye çalışırken web sunucusunun kendisi için yeterli kaynak yoksa, işler çok hızlı bir şekilde karışmaya başlayacaktır!

Günümüzde kullanılan en popüler üç sunucu türü, Mongrels (Ruby ile yazılmıştır), Apache (çoğunlukla C/C++ ile yazılmıştır) ve Nginx (tamamen C ile yazılmıştır) içerir.

Ortak ne yanları var?

Hepsinin internetin ilk günlerine kadar uzanan uzun bir geçmişi var ve zamanla güvenilirliklerini kanıtladılar. Sunucuların üçü de açık kaynaklıdır, yani kodu kendiniz değiştirebilir, hatta ücretsiz olarak kullanabilirsiniz. . Bu aynı zamanda yazılımda bulunan tüm hataların, çalışmalarını paylaşan bir geliştiriciler topluluğu tarafından düzeltileceği anlamına gelir. Hepsi platformlar arasıdır, yani birden fazla işletim sisteminde çalışırlar (örneğin Windows ve Linux).

melez

Mongrel, Ruby için bir web sunucusudur. Hızlı, güvenilir ve ölçeklenebilir. Ruby çok hızlı bir dil olmadığı için Mongrel, CPU yoğun web uygulamaları için o kadar iyi bir seçim değildir.

Mongrel, isteklerin bağlantı başına bir iş parçacığı tarafından (veya bunu yapacak şekilde yapılandırırsanız daha az) işlendiği tek süreçli bir model uygular. Bu, her istekten sonra kontrolü kullanıcıya geri vermeden önce G/Ç işlemlerini beklemeye gerek olmadığından hızlı yanıt süreleri sağlar.

Apaçi

Apache, dünyadaki en popüler web sunucusudur ve bunun iyi bir nedeni vardır. Ücretsizdir, açık kaynak kodludur ve platformlar arasıdır (yani çok çeşitli işletim sistemlerinde çalışabilir). Apache ayrıca C++ ile yazılmıştır, bu da onu inanılmaz derecede hızlı kılar.

Apache ayrıca, işlevselliğini varsayılan olarak yerel olarak desteklenenin ötesine genişletmenize olanak tanıyan birçok modülün bulunduğu çok büyük bir topluluğa sahiptir. Eklenti sistemi, ek güvenlik modüllerinden memcached veya redis önbelleğe alma sunucuları gibi karmaşık uygulamalara kadar her şeyi eklemenize olanak tanır.

Apache'nin tek dezavantajı, web sitenizin nasıl çalıştığı üzerinde tam kontrol sahibi olmak istiyorsanız biraz teknik bilgi gerektirmesidir, ancak buna sahip olduğunuzda, bu yazılımla elde edebileceklerinizin çok az sınırı vardır!

Nginx

Nginx, yüksek eşzamanlılık işlemek için tasarlanmış popüler bir açık kaynaklı web sunucusudur ve ayrıca olay odaklı bir mimariye sahiptir.

Nginx, istekleri işlemek için diğer web sunucularından daha yüksek performans elde etmesine yardımcı olan eşzamansız G/Ç kullanır. Bunun nedeni, Nginx'in verileri istemciye geri göndermek için yukarı akış sunucularından yanıt beklemesi gerekmemesidir; bunun yerine, Nginx, birden çok yürütme iş parçacığı kullanarak (bağlantı başına bir tane) veri gönderir. Ayrıca, hepsine ihtiyacınız yoksa uygulama yığınının yalnızca bazı kısımlarını sunucunuza eklemenize izin veren modüler bir tasarıma sahiptir. En yaygın özellik kümeleri şunları içerir:

  • Web sunucusu (HTTP/1.1)

  • Ters proxy/yük dengeleyici (TCP)

Paket Servis: Bir web siteniz varsa, bir web sunucusuna ihtiyacı vardır. Apache, Mongrel veya Nginx arasında karar verirken bu artıları ve eksileri göz önünde bulundurun


Bir web siteniz varsa, bir web sunucusuna ihtiyacı vardır.

Her birinin artıları ve eksileri nelerdir?

  • Mongrel, büyümesi beklenmeyen küçük siteler için iyidir.

  • Nginx, birçok eşzamanlı kullanıcısı olan büyük siteler için iyidir.

  • Apache, talep üzerine yeni süreçler oluşturabildiği ve bunları mevcut süreçlerle paralel olarak yönetebildiği için trafik artışlarını iyi yönetir.

Ortak ne yanları var? Hepsi, istekleri işlemek için iş parçacıkları kullanır (her şeyi tek bir işlemin yapması yerine). Bu, birden çok isteğin aynı işlem tarafından aynı anda ele alınabileceği anlamına gelir; bir istek uzun sürerse, diğer isteklerin sırasını beklemesi gerekmez.

Çözüm

Yani, bir web sunucusu düşünüyorsunuz. İyi haber şu ki, aralarından seçim yapabileceğiniz üç harika seçeneğiniz var. Bu blog yazısında her birinin artılarını ve eksilerini inceledik. Bu blog yazısını okuduktan sonra başka sorularınız varsa, lütfen aşağıdaki yorumlar bölümünde bize bildirin veya iletişim formumuz aracılığıyla bize ulaşın.