He escrito una aplicación Node.js, estoy buscando que se ejecute en una de nuestras máquinas de producción. Esto parece una petición bastante común, pero no puedo encontrar una solución adecuada. ¿No hay soluciones establecidas para implementar aplicaciones de producción Node.js?Despliegue de un servidor Node.js de producción
La aplicación es simple (< 100 LOC), pero debe ser muy eficiente, confiable y funcionar continuamente durante años sin reiniciar. Se ejecutará en un sitio grande, con docenas de conexiones por segundo. (La aplicación no se utiliza como un servidor web, que sólo tiene una API JSON)
Estos son los enfoques que he considerado, pero todavía no estoy seguro acerca de:.
uso de un marco (por ejemplo, expreso)
Como la aplicación necesita ser de alto rendimiento y es tan simple, agregar reblandecimiento en forma de marco es algo que quiero evitar.
Inicio del servidor con nohup
El principal problema aquí es con el manejo de excepciones, que (obviamente) no queremos que todo el servidor se bloquee debido a una excepción. Por lo que entiendo, envolver toda la aplicación en un bucle try {} catch {}
no ayudará porque el intérprete de Javascript se deja en un estado impredecible después de una excepción. ¿Es eso correcto?
usando algo como siempre
He instalado para siempre en una máquina FreeBSD de los nuestros y que era muy buggy. Terminó generando procesos interminables que no podían ser eliminados de Forever. Tuve que ejecutar kill -9
para recuperar mi máquina y no me siento demasiado seguro para ejecutar una aplicación de producción en Forever. También parece que Upstart (herramienta similar, pero más genérica) no se ejecutará en FreeBSD.
Las soluciones hospedadas (por ejemplo. Heroku, Rackspace, Amazon EC2, etc.)
Esta es probablemente la solución más simple, pero ya tenemos un serio el hardware para el resto de nuestros servidores web. Por consideraciones financieras, no tiene sentido.
Seguramente debe haber alguna solución establecida para esto? ¿Me estoy perdiendo de algo?
advenedizo es un reemplazo para sysvinit en FreeBSD. – chovy
Para la multitud de 2014 que lee este SO. 'Forever' no debe descartarse porque falló en este caso durante dos años y hace numerosos commits. He tenido éxito al ejecutarlo durante los últimos meses. –
Para la multitud de 2015 que lee este SO. Solo use [PM2] (http://www.nikola-breznjak.com/blog/nodejs/using-pm2-to-run-your-node-js-apps-like-a-pro/) en lugar de Forever. – Nikola