151 votos

¿Se puede Reemplazar el Apache con Node.js?

Tengo un sitio web que se ejecutan en CentOS usando los sospechosos de siempre (Apache, MySQL y PHP). Desde el momento en que este sitio web fue lanzado originalmente, se ha evolucionado bastante y ahora me gustaría hacer cosas más elegante con él-a saber, notificaciones en tiempo real. Por lo que he leído, Apache ocupa de este mal. Me pregunto si puedo reemplazar Apache sólo con Node.js (así que en lugar de "LÁMPARA" sería "LNMP").

He tratado de buscar en línea para una solución, pero no he encontrado uno. Si estoy interpretar correctamente las cosas que he leído, parece que la mayoría de las personas están diciendo que Node.js puede reemplazar el Apache y el PHP juntos. Tengo una gran cantidad de código PHP, aunque, por lo que preferiría mantener.

En caso de que no resulte obvio, estoy bastante confundido y podría utilizar algo de iluminación. Muchas gracias!

86voto

sarnold Puntos 62720

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

Si usted realiza un Apache o nginx instancia que se ejecuta en reverse-proxy entre el modo de sus servidores y de sus clientes, usted podría manejar algunas de las peticiones de JavaScript en node.js y algunas de las peticiones en su Apache-PHP alojado, hasta que puede sustituir completamente a todos los PHP con código JavaScript. Este podría ser el término medio: ¿ su WebSockets trabajo en node.js más mundano trabajo en Apache+PHP.

Probablemente siempre quieren un Apache o nginx se ejecuta como un aburrido servidor web para manejar al servicio de todos los archivos estáticos: la sendfile(2) sistema de llamada de la prestación de servicios en las páginas estáticas de un servidor web muy rápida (se elimina la " doble-copy " para copiar datos en el proceso de la memoria desde el disco, sólo a la copia de la memoria en el kernel para la tarjeta de red -- por decirle al kernel que filedescriptor del contenido enviado a través de la cual el zócalo, el kernel puede hacer arreglos para copiar datos directamente desde el disco a la memoria del kernel para la tarjeta de red! woot.) No sé si node.js tiene fácil acceso a las sendfile(2) syscall, pero me gustaría ser sorprendido, así que supongo que la ejecución de un nginx para manejar los archivos estáticos sería digno de tener dos servidores cargados en memoria simultáneamente.

26voto

yojimbo87 Puntos 27744

Node.js puede ser más rápido que Apache gracias a los evented/arquitectura sin bloqueo, pero usted puede tener problemas para encontrar módulos/bibliotecas que sustituir a algunos de Apache funcionalidad.

Node.js en sí mismo es un peso ligero de bajo nivel de marco de trabajo que permite de una forma relativamente rápida de construir en el lado del servidor cosas y en tiempo real de las piezas de sus aplicaciones web, pero Apache ofrece mucho más amplia de opciones de configuración y "clásica" servidor web orientado características.

Yo diría que a menos que desee reemplazar con PHP node.js aplicación web basada en un marco como express.js entonces debe permanecer con el Apache (o pensar acerca de la migración a Nginx si usted tiene problemas de rendimiento).

11voto

ypocat Puntos 871

Creo que Node.js es el futuro en servicios web, pero si usted tiene una gran cantidad de código PHP, Apache y MySQL son su mejor apuesta. Apache se puede configurar a las solicitudes de proxy para Node.js o Node.js puede solicitudes de proxy de Apache, pero creo que algunos de rendimiento se pierde en ambos casos, especialmente en la primera. No es una gran cosa si usted no está ejecutando un muy alto tráfico de sitio web, aunque.

Me acaba de registrarse a stackoverflow, y que no puedo comentar sobre la aceptada respuesta todavía, pero hoy he creado un sencillo Node.js secuencia de comandos que utiliza sendfile() para servir archivos a través del protocolo HTTP. (El ejemplo de que la aceptó contestar sólo los enlaces a los usos desnudo protocolo TCP para enviar el archivo, y yo no podría encontrar un ejemplo para HTTP, por lo que la escribí yo mismo).

Así que pensé que alguien podría encontrar útil. Servir archivos a través de la sendfile() OS llame no es necesariamente más rápido que cuando se copian los datos a través del usuario "de la tierra", pero termina la utilización de la CPU y la memoria RAM de menos, lo que de ser capaces de manejar un mayor número de conexiones de la manera clásica.

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

7voto

Richard Holland Puntos 1005

Anterior de MANERA posterior a la que describe exactamente lo que estoy diciendo (php + socket.io + nodo)

Creo que se podría poner un nodo de servidor en somehost:8000 con socket.io y bofetada a la socket.io código de cliente en las etiquetas y con un mínimo trabajo para conseguir su aplicación existente mecedora con socket.io (en tiempo real bebé) sin un montón de trabajo.

Mientras que el nodo puede ser su única backend de servidor recuerde que el nodo le gusta vivir a su nombre y convertirse en un nodo. Me registré a cabo una charla hace un tiempo que Ryan Dahl dio a un PHP que los Usuarios del grupo, y mencionó el nombre de nodo relativas a una visión de varios nodos de los procesos de trabajo y hablando el uno con el otro.

2voto

amadeus Puntos 2299

Su LÁMPARA frente a la MEDIA de hoy en día. Para una comparación directa ver http://tamas.io/what-is-the-mean-stack.

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

Sin embargo, solo la sustitución de Apache con Node.js no es la mejor manera de modernizar su pila de web.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X