apache node.js

¿Puedo reemplazar Apache con Node.js?



(5)

Tengo un sitio web que se ejecuta en CentOS utilizando los sospechosos habituales (Apache, MySQL y PHP). Desde el momento en que se lanzó este sitio web, ha evolucionado bastante y ahora me gustaría hacer cosas más elegantes con él, es decir, notificaciones en tiempo real. Por lo que he leído, Apache maneja esto mal. Me pregunto si puedo reemplazar solo Apache con Node.js (así que en lugar de " LAMP " sería "LNMP").

Intenté buscar una solución en línea, pero no encontré ninguna. Si estoy interpretando correctamente las cosas que he leído, parece que la mayoría de la gente está diciendo que Node.js puede reemplazar tanto a Apache como a PHP. Sin embargo, tengo un montón de código PHP existente, así que preferiría conservarlo.

En caso de que no sea ya obvio, estoy bastante confundido y podría usar algo de iluminación. ¡Muchas gracias!


Creo que Node.js es el futuro en servicios web, pero si tienes un montón de código PHP existente, Apache / MySQL es tu mejor opción. Apache se puede configurar para enviar solicitudes de proxy a Node.js, o Node.js puede enviar solicitudes de proxy a Apache, pero creo que se pierde algo de rendimiento en ambos casos, especialmente en el primero. No es un gran problema si no está ejecutando un sitio web de tráfico muy alto sin embargo.

Me acabo de registrar en , y aún no puedo comentar la respuesta aceptada, pero hoy creé un script simple Node.js que realmente usa sendfile () para servir archivos a través del protocolo HTTP. (El ejemplo existente al que la respuesta aceptada se vincula solo usa el protocolo TCP desnudo para enviar el archivo, y no pude encontrar un ejemplo para HTTP, así que lo escribí yo mismo).

Así que pensé que alguien podría encontrar esto útil. Servir archivos a través de la llamada del sistema sendfile () no es necesariamente más rápido que cuando los datos se copian a través de "tierra del usuario", pero termina utilizando menos CPU y RAM, pudiendo así manejar una mayor cantidad de conexiones que la forma clásica.

El enlace: https://gist.github.com/1350901


Node.js puede ser más rápido que Apache gracias a su arquitectura con o sin bloqueo, pero puede tener problemas para encontrar módulos / bibliotecas que sustituyan algunas de las funciones de Apache.

Node.js es un framework liviano de bajo nivel que le permite construir de manera relativamente rápida cosas del lado del servidor y partes de sus aplicaciones web en tiempo real, pero Apache ofrece opciones de configuración mucho más amplias y funciones de servidor web "clásicas".

Diría que a menos que desee reemplazar PHP con el framework de aplicaciones web basado en node.js como express.js, entonces debe permanecer con Apache (o piense en migrar a Nginx si tiene problemas de rendimiento).


Publicación Previous SO que describe exactamente lo que estoy diciendo (php + socket.io + node)

Creo que podrías poner un servidor de nodos en somehost: 8000 con socket.io y colocar el código del cliente socket.io en etiquetas y con un mínimo de trabajo obtener tu aplicación actual balanceando con socket.io (baby en tiempo real) sin mucho trabajo.

Mientras que el nodo puede ser su único servidor back-end, recuerde que al nodo le gusta cumplir con su nombre y convertirse en un nodo. Revisé hace un rato una charla que Ryan Dahl le dio a un grupo de usuarios de PHP y mencionó el nodo de nombre relacionado con una visión de varios procesos de nodo trabajando y hablando entre ellos.


Si está preparado para volver a escribir su PHP en JavaScript, entonces sí, node.js puede reemplazar su Apache.

Si coloca una instancia de Apache o nginx ejecutándose en modo de proxy inverso entre sus servidores y sus clientes, podría manejar algunas solicitudes en JavaScript en node.js y algunas solicitudes en su PHP alojado en Apache, hasta que pueda reemplazar completamente su PHP con código de JavaScript. Este podría ser el medio feliz: sus WebSockets funcionan en node.js, un trabajo más mundano en Apache + PHP.

Probablemente siempre querrá un Apache o nginx ejecutándose como un servidor web aburrido para manejar el servicio de todos los archivos estáticos: la llamada al sistema sendfile(2) hace que el servicio de páginas estáticas de un servidor web real sea muy rápido (elimina la ''copia doble'' de copiar datos en la memoria de proceso desde el disco, solo para copiar la memoria en el kernel de la tarjeta de red, diciéndole al kernel qué contenido del descriptor de archivos quieres enviar por cada socket, el kernel puede organizar la copia de datos directamente desde el disco al kernel memoria para la tarjeta de red! woot.) No sé si node.js tiene fácil acceso al sendfile(2) syscall, pero me sorprendería, así que supongo que ejecutar un nginx para manejar archivos estáticos valdría la pena dos servidores completos cargados en memoria simultáneamente.


Su LAMP contra MEAN hoy en día. Para una comparación directa, vea http://tamas.io/what-is-the-mean-stack .

Por supuesto, M, E y A son algo variables. Por ejemplo, el koa más reciente puede reemplazar (E) xpress.

Sin embargo, reemplazar a Apache con Node.js probablemente no sea la forma correcta de modernizar tu pila web.