Ich habe eine Website unter CentOS mit den üblichen Verdächtigen (Apache, MySQL und PHP). Seit dem Start dieser Website hat sie sich ziemlich weiterentwickelt und jetzt möchte ich ausgefallenere Dinge damit machen - nämlich Echtzeitbenachrichtigungen. Nach dem, was ich gelesen habe, geht Apache schlecht damit um. Ich frage mich, ob ich nur Apache durch Node.js ersetzen kann (also anstelle von " LAMP " "LNMP").
Ich habe versucht, online nach einer Lösung zu suchen, aber keine gefunden. Wenn ich die Dinge, die ich gelesen habe, richtig interpretiere, scheinen die meisten Leute zu sagen, dass Node.js sowohl Apache als auch PHP zusammen ersetzen kann. Ich habe jedoch viel vorhandenen PHP-Code, daher würde ich ihn lieber behalten.
Falls es nicht schon offensichtlich ist, bin ich ziemlich verwirrt und könnte etwas Erleuchtung gebrauchen. Vielen Dank!
Antworten:
Wenn Sie bereit sind, Ihr PHP in JavaScript neu zu schreiben, kann Node.js Ihren Apache ersetzen.
Wenn Sie eine Apache- oder NGINX-Instanz platzieren, die im Reverse-Proxy-Modus zwischen Ihren Servern und Ihren Clients ausgeführt wird, können Sie einige Anforderungen in JavaScript auf Node.js und einige Anforderungen in Ihrem von Apache gehosteten PHP verarbeiten, bis Sie Ihr gesamtes PHP vollständig ersetzen können mit JavaScript-Code. Dies könnte das glückliche Medium sein: Arbeiten Ihre WebSockets in Node.js, arbeiten Sie profaner in Apache + PHP?
quelle
sendfile
, und es gibt ein Modul für die FastCGI- Unterstützung, mit dem Sie Ihr PHP möglicherweise auch über Node bereitstellen können. Was Nginx und Apache betrifft, war ich schon immer ein Fan von asynchronen Servern über Thread- oder Multiprozess-Server :), aber ich fand, dass die Apache-Dokumentation leichter zu finden und zu lesen ist. Ich würde diese persönliche Präferenz nennen, es sei denn, Sie müssen auf erstaunliche Zahlen skalieren. :)Node.js ist möglicherweise schneller als Apache, dank seiner ereignisreichen / nicht blockierenden Architektur, aber Sie haben möglicherweise Probleme, Module / Bibliotheken zu finden, die einige der Apache-Funktionen ersetzen.
Node.js selbst ist ein leichtes Low-Level-Framework, mit dem Sie relativ schnell serverseitige Inhalte und Echtzeit-Teile Ihrer Webanwendungen erstellen können. Apache bietet jedoch viel umfassendere Konfigurationsoptionen und "klassische" Webserver-orientierte Funktionen.
Ich würde sagen, wenn Sie PHP nicht durch ein auf node.js basierendes Webanwendungsframework wie express.js ersetzen möchten, sollten Sie bei Apache bleiben (oder über eine Migration auf Nginx nachdenken, wenn Sie Leistungsprobleme haben).
quelle
Ich glaube, Node.js ist die Zukunft im Web-Serving, aber wenn Sie viel vorhandenen PHP-Code haben, sind Apache / MySQL die beste Wahl. Apache kann so konfiguriert werden, dass Anforderungen an Node.js weitergeleitet werden, oder Node.js kann Anforderungen an Apache weiterleiten, aber ich glaube, dass in beiden Fällen einige Leistungseinbußen auftreten, insbesondere im ersten Fall. Keine große Sache, wenn Sie keine sehr stark frequentierte Website betreiben.
Ich habe mich gerade bei stackoverflow registriert und kann die akzeptierte Antwort noch nicht kommentieren. Heute habe ich ein einfaches Node.js-Skript erstellt, das sendfile () verwendet, um Dateien über das HTTP-Protokoll bereitzustellen. (Das vorhandene Beispiel, auf das die akzeptierte Antwort verweist, verwendet nur das reine TCP-Protokoll zum Senden der Datei, und ich konnte kein Beispiel für HTTP finden, also habe ich es selbst geschrieben.)
Also dachte ich, jemand könnte das nützlich finden. Das Bereitstellen von Dateien über den Aufruf des Betriebssystems sendfile () ist nicht unbedingt schneller als beim Kopieren von Daten über "Benutzerland", beansprucht jedoch weniger CPU und RAM und kann somit eine größere Anzahl von Verbindungen als auf herkömmliche Weise verarbeiten.
Der Link: https://gist.github.com/1350901
quelle
Vorheriger SO-Beitrag, der genau beschreibt, was ich sage (php + socket.io + node)
Ich denke, Sie könnten einen Knotenserver auf somehost einrichten: 8000 mit socket.io und den socket.io-Clientcode in Tags einfügen und mit minimalem Aufwand Ihre vorhandene App mit socket.io (Echtzeit-Baby) ohne jede Menge Arbeit zum Schaukeln bringen.
Während der Knoten Ihr einziger Backend-Server sein kann, denken Sie daran, dass der Knoten seinem Namen gerne gerecht wird und ein Knoten wird. Ich habe vor einiger Zeit einen Vortrag gelesen, den Ryan Dahl einer PHP-Benutzergruppe hielt, und er erwähnte den Namensknoten, der sich auf eine Vision mehrerer Knotenprozesse bezieht, die arbeiten und miteinander sprechen.
quelle
Seine LAMPE versus BEDEUTUNG heutzutage. Für einen direkten Vergleich siehe http://tamas.io/what-is-the-mean-stack .
Natürlich sind M, E und A etwas variabel. Zum Beispiel kann der neuere Koa (E) xpress ersetzen.
Das Ersetzen von Apache durch Node.js ist jedoch wahrscheinlich nicht der richtige Weg, um Ihren Webstack zu modernisieren.
quelle