web-dev-qa-db-fra.com

Puis-je remplacer Apache par Node.js?

J'ai un site web fonctionnant sous CentOS qui utilise les suspects habituels (Apache, MySQL et PHP). Depuis que ce site Web a été lancé, il a beaucoup évolué et j'aimerais maintenant en faire des choses plus sophistiquées, à savoir les notifications en temps réel. D'après ce que j'ai lu, Apache s'en occupe mal. Je me demande si je peux remplacer uniquement Apache par Node.js (donc au lieu de " LAMPE ", ce serait "LNMP").

J'ai essayé de chercher 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. J'ai beaucoup de code PHP existant, alors je préférerais le conserver.

Au cas où ce ne serait pas déjà évident, je suis assez confus et pourrais utiliser certaines Lumières. Merci beaucoup!

151
Rick

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 s'exécutant en mode proxy inverse entre vos serveurs et vos clients, vous pouvez gérer certaines requêtes en JavaScript sur Node.js et d'autres dans votre PHP hébergé par Apache, jusqu'à ce que vous puissiez complètement remplacer tous vos fichiers. PHP avec du code JavaScript. Ceci pourrait être le moyen idéal: vos WebSockets fonctionnent-ils dans Node.js, un travail plus banal dans Apache + PHP.

87
sarnold

Node.js est peut-être plus rapide qu'Apache grâce à son architecture événementielle/non bloquante, mais vous pouvez rencontrer des problèmes pour trouver des modules/bibliothèques qui remplacent certaines fonctionnalités d'Apache.

Node.js 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. Apache propose des options de configuration beaucoup plus étendues et des fonctionnalités "classiques" orientées serveur.

Je dirais que si vous ne voulez pas remplacer PHP avec un framework d'application Web basé sur node.js tel que express.js, vous devriez rester avec Apache (ou envisager de migrer vers Nginx si vous rencontrez des problèmes de performances). .

26
yojimbo87

Je pense que Node.js est l’avenir du serveur Web, mais si vous avez beaucoup de code PHP) existant, Apache/MySQL sont votre meilleur choix. Apache peut être configuré pour envoyer des requêtes à Node par proxy. js, ou Node.js peuvent envoyer des requêtes proxy à Apache, mais je pense que certaines performances sont perdues dans les deux cas, notamment dans le premier. Ce n'est pas grave si vous n'exécutez pas un site Web à très fort trafic.

Je viens juste de m'inscrire à stackoverflow, et je ne peux pas commenter la réponse acceptée, mais aujourd'hui, j'ai créé un simple script Node.js qui utilise réellement sendfile () pour servir les fichiers via le protocole HTTP. (L’exemple existant auquel la réponse acceptée renvoie par un lien utilise uniquement le protocole bare TCP pour envoyer le fichier, et je n’ai pas pu trouver d’exemple pour HTTP, je l’ai donc écrit moi-même.)

Alors j'ai 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 "land land", mais il utilise finalement le processeur et RAM moins, ce qui permet de gérer des fichiers plus volumineux. nombre de connexions que la manière classique.

Le lien: https://Gist.github.com/1350901

11
youurayy

Previous SO poste décrivant exactement ce que je dis (php + socket.io + nœud)

Je pense que vous pourriez mettre en place un serveur de nœud sur somehost: 8000 avec socket.io et insérer le code client du 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.

Tandis que le noeud peut être votre seul serveur principal, rappelez-vous que le noeud aime être à la hauteur de son nom et devenir un noeud. J'ai jeté un coup d'œil sur une conversation que Ryan Dahl avait donnée à un groupe d'utilisateurs PHP) et il a mentionné le nœud de nom relatif à une vision de plusieurs processus de nœud fonctionnant et dialoguant entre eux.

7
Richard Holland

Sa lampe contre moyenne maintenant. 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 plus récent koa peut remplacer (E) xpress.

Cependant, remplacer Apache par Node.js n’est probablement pas la bonne façon de moderniser votre pile Web.

2
Wolfgang Kuehn