J'ai un site Web fonctionnant sur CentOS en utilisant les suspects habituels (Apache, MySQL et PHP). Depuis le lancement de ce site Web, il a beaucoup évolué et j'aimerais maintenant faire des choses plus sophistiquées avec lui, à savoir les notifications en temps réel. D'après ce que j'ai lu, Apache gère mal cela. Je me demande si je peux simplement remplacer Apache par Node.js (donc au lieu de " LAMP ", ce serait "LNMP").
J'ai essayé de rechercher une solution en ligne, mais je n'en ai pas trouvé. Si j'interprète correctement les choses que j'ai lues, il semble que la plupart des gens disent que Node.js peut remplacer Apache et PHP ensemble. Cependant, j'ai beaucoup de code PHP existant, donc je préfère le garder.
Au cas où ce ne serait pas déjà évident, je suis assez confus et je pourrais utiliser quelques éclaircissements. Merci beaucoup!
Réponses:
Si vous êtes prêt à réécrire votre PHP en JavaScript, alors oui, Node.js peut remplacer votre Apache.
Si vous placez une instance Apache ou NGINX fonctionnant en mode proxy inverse entre vos serveurs et vos clients, vous pouvez gérer certaines requêtes en JavaScript sur Node.js et certaines requêtes dans votre PHP hébergé par Apache, jusqu'à ce que vous puissiez remplacer complètement tout votre PHP avec du code JavaScript. Cela pourrait être le juste milieu: vos WebSockets fonctionnent dans Node.js, plus banal dans Apache + PHP.
la source
sendfile
, et il existe un module pour la prise en charge de FastCGI qui pourrait également faciliter le service de votre PHP via Node. En ce qui concerne nginx vs Apache, j'ai toujours été un ventouse pour les serveurs de style asynchrone sur des serveurs threadés ou multiprocessus :) mais j'ai trouvé la documentation Apache plus facile à trouver et à lire. J'appellerais cela une préférence personnelle à moins que vous n'ayez besoin de passer à des nombres incroyables. :)Node.js peut être plus rapide qu'Apache grâce à son architecture événementielle / non bloquante, mais vous pouvez avoir des problèmes pour trouver des modules / bibliothèques qui remplacent certaines fonctionnalités d'Apache.
Node.js lui-même est un framework léger de bas niveau qui vous permet de créer relativement rapidement des éléments côté serveur et des parties en temps réel de vos applications Web, mais Apache offre des options de configuration beaucoup plus larges et des fonctionnalités orientées serveur Web «classiques».
Je dirais qu'à moins que vous ne souhaitiez remplacer PHP par un framework d'application Web basé sur node.js comme express.js, vous devriez rester avec Apache (ou penser à migrer vers Nginx si vous avez des problèmes de performances).
la source
Je pense que Node.js est l'avenir du service Web, mais si vous avez beaucoup de code PHP existant, Apache / MySQL est votre meilleur pari. Apache peut être configuré pour envoyer des requêtes proxy à Node.js, ou Node.js peut envoyer des requêtes proxy à Apache, mais je pense que certaines performances sont perdues dans les deux cas, en particulier dans le premier. Ce n'est pas grave si vous n'exécutez pas un site Web à très fort trafic.
Je viens de m'inscrire à stackoverflow, et je ne peux pas encore commenter la réponse acceptée, mais aujourd'hui j'ai créé un simple script Node.js qui utilise en fait sendfile () pour servir des fichiers via le protocole HTTP. (L'exemple existant auquel la réponse acceptée est liée utilise uniquement le protocole TCP nu pour envoyer le fichier, et je n'ai pas pu trouver d'exemple pour HTTP, alors je l'ai écrit moi-même.)
J'ai donc pensé que quelqu'un pourrait trouver cela utile. Servir des fichiers via l'appel du système d'exploitation sendfile () n'est pas nécessairement plus rapide que lorsque les données sont copiées via "user land", mais cela finit par utiliser moins le CPU et la RAM, permettant ainsi de gérer un plus grand nombre de connexions que la méthode classique.
Le lien: https://gist.github.com/1350901
la source
Article précédent de SO décrivant exactement ce que je dis (php + socket.io + node)
Je pense que vous pourriez mettre en place un serveur de nœuds sur somehost: 8000 avec socket.io et claquer le code client socket.io en balises et avec un minimum de travail faire basculer votre application existante avec socket.io (bébé en temps réel) sans une tonne de travail.
Bien que le nœud puisse être votre seul serveur principal, rappelez-vous que le nœud aime être à la hauteur de son nom et devenir un nœud. Il y a quelque temps, j'ai regardé un discours que Ryan Dahl a donné à un groupe d'utilisateurs PHP et il a mentionné le nom de nœud relatif à une vision de plusieurs processus de nœuds travaillant et se parlant.
la source
Son LAMP contre MOYEN de nos jours. Pour une comparaison directe, voir http://tamas.io/what-is-the-mean-stack .
Bien sûr, M, E et A sont quelque peu variables. Par exemple, le koa plus récent peut remplacer (E) xpress.
Cependant, le simple remplacement d'Apache par Node.js n'est probablement pas le bon moyen de moderniser votre pile Web.
la source