Gibt es einen kompakten Webserver, der dynamische Inhalte bereitstellt?

21

Ich erstelle ein Image mit einem Nagios-Server. Eines der Probleme des Himbeer-PIS ist, dass der Speicher des Himbeer-PIS ziemlich klein ist. Daher verwende ich ein leichtes Interface, das auf PHP-Apc basiert, anstelle des Standard-Interfaces.

Ich habe mich gefragt, welcher leichtgewichtige Webserver empfohlen wird?

Ich dachte über einen minimalen Webserver nach, der PHP kann und SSL bereitstellt. Ich dachte an Apache2 oder Nginx. Obwohl ich denke, dass Apache Nginx immer noch übertreffen wird, da der Inhalt dynamisch ist.

Lucas Kauffman
quelle
1
Nginx wird Apache leicht übertreffen.
Alex Chamberlain
@AlexChamberlain auf statischen Inhalten tut es, aber nicht auf dynamischen.
Lucas Kauffman
5
Anspruch. Es kommt darauf an, was Sie unter Leistung verstehen. Nginx benötigt weniger Speicher, leckt weniger und liefert (statische) Dateien schneller. Nach meiner (eingeschränkten, aber technischen) Erfahrung werden dynamische Inhalte schneller oder schneller als Apache bereitgestellt. Aufgrund des Speicherprofils von Nginx ist die Leistung auf einem Raspberry Pi wesentlich besser. Der Vorteil von Apache - obwohl nicht hier - ist, dass es stabiler ist und es mehr erfahrene Techniker gibt.
Alex Chamberlain
Ich würde Apache nicht einmal in 256 MB betrachten, es sei denn, Sie haben eine sehr komplizierte Konfiguration, die Nginx oder Lighttpd nicht verwalten können
John La Rooy

Antworten:

17

Die eigentliche Frage lautet hier: "Benötigen Sie alle Funktionen, die Apache bietet?" (oder noch wichtiger: "Sind Sie bereit, Speicher für diese Funktionen zu verbrauchen ?") - Sie können einen SEHR reduzierten Apache + mod_perl oder mod_php individuell kompilieren , um Ihr Nagios-Webinterface (oder einen überstrippten Apache) auszuführen läuft nur mit den Perl-CGIs), aber selbst in einer minimalistischen Form benötigt Apache wahrscheinlich mehr Speicher als Nginx, um den gleichen Job zu erledigen - es war einfach nicht klein gebaut.

Um 100% sicher zu sein, möchten Sie vielleicht ein Bake-Off durchführen (kompilieren Sie sowohl Nginx als auch Apache und sehen Sie, welcher weniger RAM verbraucht), aber meine Erfahrung auf "normalen" Servern zeigt, dass Nginx wahrscheinlich die bessere Wahl für einen niedrigen Arbeitsspeicher ist Konfiguration: Sie geben einen Teil der Flexibilität von Apache auf, aber wenn Sie das sowieso nicht benötigten (und die meisten Sites nicht ), werden Sie den Unterschied nie bemerken.


Leistung (zeitlich) Ich bezweifle, dass Sie von Ihrem Webserver eingeschränkt werden - abgesehen von allen erfundenen Benchmarks, wenn Sie genug Volumen tun, wo die Leistung der Server-Engine, die die Seiten verteilt, so kritisch ist, dass Sie wahrscheinlich gehen um deinen Raspberry Pi zu backen (und wirklich, wie viele Leute werden auf einmal auf deine Überwachungsdaten schauen? :-).
Es ist so ziemlich ein Grundsatz, dass Sie ein System räumlich oder zeitlich optimieren können, aber niemals beides - und auf einem Raspberry Pi ist der Platz wahrscheinlich Ihre einschränkende Einschränkung.

voretaq7
quelle
Ich bin skeptisch, dass Apache heutzutage viel mächtiger ist als Nginx.
Alex Chamberlain
@AlexChamberlain Wenn Sie meinen Beitrag sorgfältig lesen, werden Sie feststellen, dass ich das Wort nie verwendet habe powerful(weil es ein undefinierter Begriff ist). Ich sagte flexible(unter Bezugnahme darauf, wie viele Möglichkeiten der Bare-Bones-Core-Server konfiguriert werden kann, um eine Anforderung zu erfüllen). Dies soll auf keinem der beiden Server schlecht wiedergegeben werden: Beide sind hervorragende Codeteile, haben jedoch ganz unterschiedliche Entwurfsziele. Apache ist so konzipiert, dass alles für alle Menschen möglich ist - ein LKW, in den Sie Ihr gesamtes Haus packen können. nginx ist so konzipiert, dass es klein und schnell ist - ein Sportwagen, aber Sie können Frau, Kinder, Schwiegereltern und Familienhund nicht mitnehmen.
Voretaq7
Ich denke, Nginx wächst ... es ist jetzt zumindest ein Schrägheck und wächst die ganze Zeit. Es kann auf die eine oder andere Weise alle wichtigen dynamischen Sprachen unterstützen, unterstützt SSL und SPDY ist derzeit in der Beta.
Alex Chamberlain
15

Nginx

Ich habe einige gute Erfahrungen mit Nginx als Webserver gemacht. Ich würde es mit einem leichten wsgi- Framework wie bottle oder flask kombinieren, um eine schnelle Anwendungsentwicklung in Python zu ermöglichen.

Erwarten Sie jedoch nicht, dass es mehr als 10 Anfragen pro Sekunde bearbeitet :)

Installation

Nginx befindet sich sowohl im Debian / Raspbian- als auch im Arch-Repository und kann daher mit einem einzigen Befehl installiert werden.

Bogen

sudo pacman -Sy nginx

Debian / Raspbian

sudo apt-get install nginx

Aufbau

Im gesamten Web gibt es zahlreiche Konfigurationsbeispiele, und eine ausführliche Erklärung würde wahrscheinlich den Rahmen dieser Frage sprengen. Es gibt viele Beispiele im Nginx-Wiki und die Mailingliste ist sehr hilfreich.

Da Sie PHP erwähnt haben, sind Sie sehr daran interessiert zu wissen, dass die Standarddatei /etc/nginx/nginx.confein PHP-Beispiel enthält.

John La Rooy
quelle
Ich liebe Nginx. Sehr einfach zu erweitern mit seinem modularen System.
Alex Chamberlain
1
Vielleicht habe ich Ihre Antwort ein wenig erweitert, hoffe, es macht Ihnen nichts aus?
Alex Chamberlain
1

node.js

Sie können node.js verwenden, um einen Light-Waight-Webserver zu erstellen. Beachten Sie das folgende Beispiel auf der Tutorial-Site von node.js:

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/');

Über dem Code befindet sich Java-Skript, sodass Sie Ihre dynamische Code-Generierungslogik in Java-Skript schreiben und in kürzester Zeit verwenden können.

Sie müssen node.js von folgender Adresse herunterladen und einrichten: http: //nodejs.org/ für Windows oder eine andere Plattform, die Sie bevorzugen.

Starten Sie den Webserver mit folgendem Befehl:

node hello.js
rashid.noorani
quelle
Aber spricht Node.js PHP?
Lucas Kauffman
Node.JS wird in anderen Kontexten verwendet. Es funktioniert nicht gut als eigenständiger Server, da der gesamte Code C ++ ist. ABER! Das ist großartig, weil Sie mit node DIREKT auf GPIO und den Rest der Low-Level-Hardware zugreifen können, indem Sie node.js '+1 für Abwechslung verwenden. Aber Sie brauchen immer noch ein Front-End wie apache / lighttpd / iis, um Inhalte bereitzustellen
Piotr Kula
@LucasKauffman Nein - es ist nicht wirklich ein Webserver, sondern eine Webanwendung.
Alex Chamberlain
1
Willkommen bei Stack Exchange. Gute Antwort, aber ich fürchte, ich habe eine Ablehnung erhalten, da ich nicht denke, dass dies die Frage löst. Das OP wollte PHP und zukünftige Leser werden wahrscheinlich einen etwas leistungsfähigeren Server wollen.
Alex Chamberlain
1
Ich verwende Nagios und entwickle keine eigene Anwendung: p
Lucas Kauffman
0

Vielleicht können Sie einen Blick darauf werfen, was andere Leute für Low-End-Boxen verwendet haben .

Grundsätzlich ist es lighttpd + php-fcgi. Lighttpd ist wirklich leicht und php-fcgi kann so konfiguriert werden, dass es nur wenig Speicherplatz benötigt. Ich habe es auf einer 64 MB VPS-Box eingerichtet (nicht Nagios, aber CMS).

Ich weiß auch nicht, ob Sie auch MySQL optimieren müssen, um so wenig Speicher wie möglich zu nutzen .

Es kann Ihnen helfen, es kann nicht. Ich muss meinen Raspi erst noch benutzen :)

Zlatko
quelle
0

Ich verwende eine Kombination aus Nginx und Passenger, um den Ruby-basierten pi.gadgetoid.com rund um die Uhr auf einem 512-MB-Raspberry-Pi auszuführen. Dies übertrifft das zuvor verwendete Thin / Apache-Setup drastisch. Dies ist eine relativ stark frequentierte, öffentliche Website, obwohl ich viel mit Cloudflare (einem Caching-Proxy) betrogen habe, um den größten Teil dieses Volumens zu bewältigen.

Ich bin mir ziemlich sicher, dass diese Konfiguration auch auf einem 256-MB-Pi bequem sitzen würde, aber ich hatte Probleme beim Kompilieren der Passenger-Module und von Nginx. Laufen in Speicherbeschränkungen.

Ich weiß, dass es keine PHP-Lösung ist, und ich werde wahrscheinlich beschimpft, wenn ich eine solche tangentiale Antwort vorschlage. Aber wenn Sie nach dem Pi suchen, um die Grenzen Ihres Wissens zu erweitern, und dies für gelegentliches Basteln tun, empfehle ich Ihnen dringend, sich mit Ruby und Sinatra zu befassen. Sie werden in ein paar Wochen einen schwindelerregenden Hass auf PHP haben.

Im Großen und Ganzen werden Sie keine großen Probleme haben, einen PHP / Apache-Webstack auf einem 256-MB-Server auszuführen. Ich habe dies für viel größere Websites in einer professionellen Funktion auf Cloud-basiertem Hosting durchgeführt. Wenn sich MySQL einmischt, werden die Dinge hässlich. Das Ausführen eines vollständigen LAMP-Stacks mit 256 MB ist schmerzhaft, aber bei geringem Datenverkehr nicht unmöglich.

Phil Howard
quelle