Dinamik içeriğe hizmet edecek hafif bir web sunucusu var mı?


21

Nagios sunucusuyla bir resim yapıyorum. Ahududu pi'nin problemlerinden biri, ahududu pi'nin hafızasının oldukça küçük olmasıdır. Bu yüzden standart olan yerine php-apc'ye dayanan hafif bir arayüz kullanıyor olacağım.

Hangi hafif web sunucusunun kullanılması önerilir?

PHP yapabilen ve SSL sağlayabilen minimum bir web sunucusu düşünüyordum. Apache2 veya Nginx'i düşünüyordum. İçeriğin dinamik olması nedeniyle Apache'nin Nginx'ten daha iyi performans göstereceğini düşünüyorum.


1
Nginx kolayca Apache'den daha iyi performans gösterir.
Alex Chamberlain

@AlexChamber, statik içeriğe göre çalışır, ancak dinamikte değil.
Lucas Kauffman

5
İddia. Performans ile ne demek istediğine bağlı. Nginx daha az bellek kullanır, daha az sızıntı yapar ve (statik) dosyaları daha hızlı sunar. (Sınırlı fakat teknik) deneyimime göre, dinamik içerik Apache'den daha hızlı veya daha hızlı sunuluyor. Nginx'in hafıza profili göz önüne alındığında, bir Raspberry Pi'de daha iyi performans gösterecek. Apache'nin avantajı - burada olmasa da - daha kararlı ve daha deneyimli teknisyenler var.
Alex Chamberlain

Nginx veya lighttpd'nin yönetemediği çok karmaşık bir konfigürasyona sahip olmadığınız sürece, Apache'yi 256MB'de bile düşünmem
John La Rooy

Yanıtlar:


17

Buradaki asıl soru "Apache'nin sağladığı tüm özelliklere ihtiyacınız var mı?" (veya daha da önemlisi, "Bu özellikler için bellek kullanmaya istekli misiniz?") - Nagios web arayüzünüzü çalıştırmak için bir ÇOK soyulmuş Apache + mod_perl veya mod_php'yi özel olarak derleyebilirsiniz (veya bir Über-Stripped apache). sadece perl CGI'larını çalıştırır), ama minimalist bir biçimde bile olsa Apache aynı işi yapmak için nginx'ten daha fazla bellek alacaktır - sadece küçük olması için yapılmamıştı.

% 100 emin olmak için bir pişirme işlemi yapmak isteyebilirsiniz (hem nginx hem de Apache'yi derleyin ve hangisinin daha az RAM yediğini görün), ancak "normal" sunuculardaki deneyimlerim nginx'in düşük bellek için daha iyi bir seçim olduğunu söylüyor yapılandırma: Apache'nin esnekliğinden biraz vazgeçiyorsunuz, ancak yine de ihtiyacınız olmasaydı (ve çoğu site bunu yapmaz ), farkı asla anlamazsınız.


Performans (zaman) bilge Web sunucunuzla sınırlı kalacağınızdan şüpheliyim - Sunucu motorunun performansının sayfa dağıtma performansının yeterince kritik olduğu yerlerde, tüm diğer kriterleri bir kenara bırakın Raspberry Pi'nizi pişirmek için (ve gerçekten, izleme verilerinize aynı anda kaç kişi bakacak? :-).
Bu, bir sistemi mekan veya zaman için optimize edebileceğiniz bir aksiyomdur, ancak hiçbir zaman ikisi de olmaz - ve bir Ahududu Pi uzayda muhtemelen sizin sınırlayıcınızdır.


Apache'nin bugünlerde Nginx'ten daha güçlü olduğu konusunda şüpheliyim .
Alex Chamberlain,

@AlexChamberlain Eğer yazımı dikkatlice okursanız, bu kelimeyi hiç kullanmadığımı not edersiniz powerful(çünkü tanımsız bir terimdir) Dedim flexible(çıplak kemik çekirdeği sunucusunun bir ihtiyacı karşılayacak şekilde yapılandırılmasının ne kadar yol gösterici olduğunu söyleyerek ). Bu, her iki sunucuya da kötü şekilde yansıtacak şekilde tasarlanmamıştır: her ikisi de mükemmel kod parçalarıdır, ancak çok farklı tasarım hedeflerine sahiptir. Apache tüm insanlara her şey olacak şekilde tasarlanmıştır - tüm evinizi yerleştirebileceğiniz bir kamyon. nginx, küçük ve hızlı olacak şekilde tasarlanmıştır - bir spor arabası, ancak karı, çocuklar, kayınvalideler ve aile köpeği yanınıza alınamaz.
voretaq7

Bence Nginx büyüyor ... şimdi en azından bir hatchback ve her zaman büyüyor. Tüm ana dinamik dilleri bir şekilde veya başka bir şekilde destekleyebilir, SSL'yi destekler ve SPDY şu anda Beta'dadır.
Alex Chamberlain,

15

nginx

Nginx ile bir web sunucusu olarak iyi deneyimlerim var . Python'da hızlı uygulama geliştirme için şişe veya şişe gibi hafif bir wsgi çerçevesiyle bir araya getirirdim .

Yine de saniyede 10'dan fazla istek yapmasını beklemeyin :)

Kurulum

Nginx hem Debian / Raspbian hem de Arch depolarında bulunur, bu nedenle tek bir komutla kurulabilir.

kemer

sudo pacman -Sy nginx

Debian / Raspbian

sudo apt-get install nginx

Yapılandırma

Tüm web üzerinde birçok yapılandırma örneği vardır ve ayrıntılı bir açıklama muhtemelen bu sorunun kapsamı dışındadır. Nginx Wiki'de birçok örnek var ve posta listesi çok faydalı.

PHP'den bahsettiğinizden beri, standart /etc/nginx/nginx.confdosyanın bir PHP örneği içerdiğini bilmek ilginizi çeker .


Nginx'i seviyorum. Modüler sistemini kullanarak genişletmek çok kolay.
Alex Chamberlain,

1
Cevabını biraz genişletmiş olabilirim, umarım sakıncası yoktur?
Alex Chamberlain,


1

node.js

Hafif waight web sunucusu oluşturmak için node.js'yi kullanabilirsiniz. Node.js eğitim sitesinden aşağıdaki örneğe bakın:

var http = require('http');
  http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write("Dynamic contents...");
      res.end('Hello World\n');
  }).listen(1337, "127.0.0.1");

console.log('Server running at http://127.0.0.1:1337/');

Yukarıdaki kod java betiğidir, böylece dinamik kod oluşturma mantığınızı java betiğine yazabilir ve hemen kullanmaya başlayabilirsiniz.

Node.js dosyasını http://nodejs.org/ linkinden veya Windows ya da hangi platformu kullanmayı tercih ederseniz kurmanız gerekecektir.

Web sunucusunu aşağıdaki komutu kullanarak başlatın:

node hello.js

Peki Node.js php konuşuyor mu?
Lucas Kauffman

Node.JS, diğer bağlamlarda kullanılır. Tüm kod C ++ olduğundan tek başına bir sunucu olarak iyi çalışmıyor. FAKAT! Eğer DOĞRUDAN erişim GPIO ve node.js' çeşitli +1 kullanarak düşük seviye donanım geri kalanına düğümünü kullanabilirsiniz çünkü büyük .. Ama hala / lighttpd'nin / içerik up hizmet etmek iis apache gibi bir ön uç ihtiyaç
Piotr Kula

@LucasKauffman Hayır - bu gerçekten bir web sunucusu değil, bir web uygulaması.
Alex Chamberlain,

1
Stack Exchange'e hoş geldiniz. Güzel cevap, ama korkarım soruyu çözmediğini sandığım için oyumu düşürdüm. OP, PHP ve gelecekteki okuyucuların büyük olasılıkla biraz daha yetenekli bir sunucu isteyeceklerini istedi.
Alex Chamberlain,

1
Nagios'u çalıştırıyorum, kendi uygulamamı geliştirmiyorum: p
Lucas Kauffman 17

0

Belki başkalarının düşük seviye kutularında ne kullandığına bakabilirsiniz .

Temel olarak, lighttpd + php-fcgi. Lighttpd gerçekten hafiftir ve php-fcgi az miktarda bellek kullanacak şekilde yapılandırılabilir. 64 MB VPS kutusunda ayarlamıştım (nagios değil ama CMS olsa da).

Ayrıca, MySQL'i en az bellek kullanmak için optimize etmeniz gerekip gerekmediğini de bilmiyorum .

Size yardımcı olabilir, olmayabilir. Raspi'mi kullanmaya henüz başlamam :)



0

Ruby tabanlı pi.gadgetoid.com 24 / 7'yi 512Mb Raspberry Pi'de çalıştırmak için Nginx / Yolcu kombinasyonunu kullanıyorum. Bu, daha önce kullandığım Thin / Apache kurulumunu büyük ölçüde geride bırakıyor. Bu oldukça yüksek trafikte, halka açık bir web sitesidir, ancak Cloudflare (temelde önbellekleme proxy'si) kullanarak bu cildin çoğuyla başa çıkmak için çok fazla hile yaptım.

Bu konfigürasyonun ayrıca 256 MB Pi'ye de rahatça oturacağından eminim, ancak Passenger modüllerini ve Nginx'i derlerken sorun yaşadım; hafıza sınırlamaları ile uğraşmak.

Bunun bir PHP çözümü olmadığını biliyorum ve böylesi bir teğetsel cevap önerdiğim için büyük olasılıkla sinirleneceğim; fakat Pi'nin bilginizin sınırlarını zorlaması için arıyorsanız ve bunu biraz rahatlamak için yapıyorsanız, Ruby ve Sinatra'ya bakmanızı şiddetle tavsiye ederim. Birkaç hafta içinde PHP için nefret dolu bir şey yaşayacaksınız.

Genelde 256 MB'lık bir sunucuda bir PHP / Apache web yığınını çalıştırmada fazla sorun yaşamazsınız. Bunu, bulut tabanlı barındırma alanında profesyonel bir kapasitede daha büyük siteler için yaptım. MySQL'in işlerin çirkinleşmeye başladığı an. 256 MB'lık bir tam LAMP yığını çalıştırmak, en az trafik yoğunluğu için en az olanıdır, ancak imkansız değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.