node.js - servidor - pm2
¿Cómo dejo el servidor Node.js en EC2 ejecutándose para siempre? (5)
Como puede ver en mi pregunta, soy nuevo en esto ...
Construí mi primer sitio web, configuré mi primer servidor Node.js para servirlo y luego lo puse todo en vivo en EC2.
Probé todo en mi dirección IP EC2 y todo parece estar funcionando.
Ahora, hasta ahora, he estado probando mi aplicación localmente, por lo que tiene sentido que cada vez que cierre el terminal, app.js dejara de funcionar para que no se sirviera nada en localhost.
Ahora que mi servidor está en EC2, sucede lo mismo ("obviamente" se podría decir ...) cada vez que cierro mi terminal.
Entonces, mi pregunta es cómo puedo mantener mi servidor Node.js ejecutándose en EC2 durante ... por siempre ... para que mi sitio permanezca activo ... por siempre :)
Leí algo sobre un módulo de nodo llamado "forever" pero me pregunto (siendo nuevo y todo ...) ¿por qué esta funcionalidad "forever" no es una configuración predeterminada del sistema Node.js-EC2?
Quiero decir, corrígeme si me equivoco, pero ¿no es el objetivo de configurar un servidor web y ponerlo en funcionamiento para que permanezca vivo para siempre? ¿No es eso lo que se supone que los servidores deben hacer de todos modos (escuchando infinitamente las solicitudes)? Y si ese es el caso, ¿por qué necesitamos módulos / configuraciones adicionales para lograrlo?
Gracias por su ayuda. Como pueden ver, no solo estoy buscando una solución, sino también una explicación porque me confundí mucho ... :-)
EDITAR
(algunos detalles que podría necesitar): después de instalar mi aplicación en EC2, estos son los pasos que sigo en el terminal (por cierto, la aplicación se ejecuta en
Amazon Linux
):
-
Escribo ssh -i xxxxxxxxxxx.pem [email protected] en el terminal
-
Después de iniciar sesión en la máquina Amazon, voy a la carpeta correspondiente y ejecuto el nodo app.js
-
Hay 3 carpetas en la máquina:
node
,node_modules
y*name of my app*
-
app.js
reside en*name of my app*
-
Después de eso, el sitio se activa con mi IP EC2
-
Una vez que cierro la terminal, todo está apagado
Antes de invocar Node.js, ejecute el comando:
screen
Esto creará un entorno persistente que permitirá que su proceso continúe ejecutándose después de desconectarse.
Cuando se vuelve a conectar, puede usar este comando para volver a conectarse a ese entorno:
screen -r
Aquí hay un enlace aleatorio para aprender más sobre la pantalla:
http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/
Sin embargo, esto no lo ayudará si su instancia EC2 se reinicia. Hay muchas formas diferentes de hacerlo. Agregar su comando de inicio a /etc/rc.local es una forma. Aquí hay un enlace a una guía de Amazon que incluye agregar algo a /etc/rc.local.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html
Espero que esto ayude,
James
Hay una mejor manera Use forever.js.
Véalo aquí: https://github.com/foreverjs/forever
Este es un buen tutorial sobre cómo usar chkconfig con forever en CENTOS.
http://aronduby.com/starting-node-forever-scripts-at-boot-w-centos/
Llego muy tarde para unirme al hilo y parece su problema básico con todos los novatos. Siga lo siguiente para configurar correctamente su primer servidor.
siga el paso en la instancia ec2 (antes de hacer esto, asegúrese de tener un script de inicio para pm2 en su archivo package.json):
npm install pm2 -g
pm2 startup systemd
Vea la salida y en la última línea debe ser como ...
Tienes que ejecutar este comando como root. Ejecute el siguiente comando: sudo env PATH = $ PATH: / usr / bin / usr / lib / node_modules / pm2 / bin / pm2 startup systemd -u sammy --hp / home / sammy
Tome el último comando de línea y vuelva a ejecutar con privilegio de root.
(antes de ejecutar el siguiente comando, proporcione un nuevo script de inicio para pm2 en su archivo package.json, por ejemplo:
"pm2-start": "pm2 start ./bin/www"
)
npm run pm2-start
Para más información sigue el enlace.
O use tmux Simplemente ingrese una pantalla tmux ejecute el servidor de nodo Ctrl + b Presione D y listo.
Trabajé con la respuesta válida durante un tiempo, pero algunas veces la pantalla simplemente termina sin razón, la pantalla no tiene un cargador de equilibrio y otras características que en un entorno de producción deberían importarle. Actualmente utilizo un componente npm para hacer este trabajo.
https://www.npmjs.com/package/pm2
Esto es muy fácil de usar.
$ npm install pm2 -g
entonces simplemente inicie su aplicación con pm2 como este
$ pm2 start app.js
En el enlace anterior puede encontrar diferentes tareas para realizar si lo necesita.
Espero que esto ayude a los novatos como yo.