Tengo un sitio web que se ejecuta en CentOS con los sospechosos habituales (Apache, MySQL y PHP). Desde el momento en que este sitio web se lanzó originalmente, ha evolucionado bastante y ahora me gustaría hacer cosas más sofisticadas, a saber, notificaciones en tiempo real. Por lo que he leído, Apache maneja esto mal. Me pregunto si puedo reemplazar solo Apache con Node.js (por lo que en lugar de " LAMP " sería "LNMP").
Intenté buscar una solución en línea, pero no encontré una. Si interpreto correctamente las cosas que he leído, parece que la mayoría de la gente dice que Node.js puede reemplazar tanto Apache como PHP juntos. Sin embargo, tengo un montón de código PHP existente, así que preferiría mantenerlo.
En caso de que aún no sea obvio, estoy bastante confundido y podría usar algo de iluminación. ¡Muchas gracias!
Respuestas:
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 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 todo su PHP con código JavaScript Este podría ser el medio feliz: ¿funcionan sus WebSockets en Node.js, un trabajo más mundano en Apache + PHP?
fuente
sendfile
, y hay un módulo para el soporte de FastCGI que también podría facilitar el servicio de PHP a través de Node. En cuanto a nginx vs Apache, siempre he sido un fanático de los servidores de estilo asíncrono sobre servidores roscados o multiproceso :) pero he encontrado que la documentación de Apache es más fácil de encontrar y leer. Llamaría a eso preferencia personal a menos que necesite escalar a números sorprendentes. :)Node.js puede ser más rápido que Apache gracias a su arquitectura de evento / sin bloqueo, pero puede tener problemas para encontrar módulos / bibliotecas que sustituyan parte de la funcionalidad de Apache.
Node.js en sí mismo es un marco ligero de bajo nivel que le permite construir de manera relativamente rápida cosas del lado del servidor y partes en tiempo real de sus aplicaciones web, pero Apache ofrece opciones de configuración mucho más amplias y características orientadas al servidor web "clásico".
Diría que a menos que desee reemplazar PHP con un marco de aplicación web basado en node.js como express.js, entonces debería quedarse con Apache (o pensar en migrar a Nginx si tiene problemas de rendimiento).
fuente
Creo que Node.js es el futuro en el servicio web, pero si tiene muchos códigos PHP existentes, Apache / MySQL son su mejor opción. Apache se puede configurar para enviar solicitudes proxy a Node.js, o Node.js puede enviar solicitudes proxy a Apache, pero creo que se pierde algo de rendimiento en ambos casos, especialmente en el primero. Sin embargo, no es un gran problema si no está ejecutando un sitio web de mucho tráfico.
Me acabo de registrar en stackoverflow, y todavía no puedo comentar sobre la respuesta aceptada, pero hoy creé un script simple Node.js que en realidad usa sendfile () para servir archivos a través del protocolo HTTP. (El ejemplo existente al que enlaza la respuesta aceptada solo usa el protocolo TCP simple para enviar el archivo, y no pude encontrar un ejemplo para HTTP, así que lo escribí yo mismo).
Entonces pensé que alguien podría encontrar esto útil. Servir archivos a través de la llamada del sistema operativo sendfile () no es necesariamente más rápido que cuando los datos se copian a través de "tierra de usuario", pero termina utilizando menos la CPU y la RAM, lo que permite manejar un mayor número de conexiones que la forma clásica.
El enlace: https://gist.github.com/1350901
fuente
Publicación SO anterior que describe exactamente lo que estoy diciendo (php + socket.io + node)
Creo que podría instalar un servidor de nodo en somehost: 8000 con socket.io y colocar el código del cliente socket.io en etiquetas y con un trabajo mínimo hacer que su aplicación existente se balancee con socket.io (bebé en tiempo real) sin una tonelada de trabajo.
Si bien el nodo puede ser su único servidor de fondo, recuerde que al nodo le gusta estar a la altura de su nombre y convertirse en un nodo. Revisé una charla hace un tiempo que Ryan Dahl dio a un grupo de usuarios de PHP y mencionó el nombre del nodo relacionado con una visión de varios procesos de nodo que trabajan y hablan entre sí.
fuente
Su LAMP versus MEAN hoy en día. Para una comparación directa, consulte 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, simplemente reemplazar Apache con Node.js probablemente no sea la forma correcta de modernizar su pila web.
fuente