tutorial proyecto produccion nodejs node introduccion ejemplos crear node.js server

proyecto - ¿Cómo hacer que una aplicación node.js se ejecute permanentemente?



nodejs en produccion (16)

nohup working comprobé en AWS Ubunto vm seguir la syntax correcta

ubuntu@ip-172-00-00-00:~/ms$ nohup node server.js &

luego presiona enter veras esta linea

ubuntu@ip-172-00-00-00:~/ms$ nohup: ignoring input and appending output to ‘nohup.out’

entonces escribe esto

rm nohup.out

En un servidor Debian, instalé Node.js. Entiendo cómo lanzar una aplicación desde putty con esta línea de comando:

node /srv/www/MyUserAccount/server/server.js

y 50.51.52.53:8080 a ella en la dirección 50.51.52.53:8080 (IP y puerto).

Pero tan pronto como cierro la masilla, ya no puedo alcanzar la dirección 50.51.52.53:8080 .

¿Cómo hacer que una aplicación Node.js se ejecute permanentemente?

Como puedes adivinar, soy un principiante con Linux y Node.js.


Aquí hay una solución upstart que he estado usando para mis proyectos personales:

Colóquelo en /etc/init/node_app_daemon.conf :

description "Node.js Daemon" author "Adam Eberlin" stop on shutdown respawn respawn limit 3 15 script export APP_HOME="/srv/www/MyUserAccount/server" cd $APP_HOME exec sudo -u user /usr/bin/node server.js end script

Esto también manejará el reaparecimiento de su aplicación en caso de que falle. Abandonará los intentos de reaparecer su aplicación si falla 3 o más veces en menos de 15 segundos.


Aunque las otras respuestas resuelven el problema del OP, todas son excesivas y no explican por qué él o ella está experimentando este problema.

La clave es esta línea, "cierro masilla, luego no puedo alcanzar la dirección"

Cuando haya iniciado sesión en su host remoto en Putty, ha iniciado un proceso de SSH Linux y todos los comandos escritos desde esa sesión de SSH se ejecutarán como hijos de dicho proceso.

Su problema es que cuando cierra Putty está saliendo de la sesión de SSH, que mata ese proceso y cualquier proceso secundario activo. Cuando cierra la masilla, mata inadvertidamente su servidor porque lo ejecutó en primer plano . Para evitar este comportamiento, ejecute el servidor en segundo plano agregando & a su comando:

node /srv/www/MyUserAccount/server/server.js &

El problema aquí es la falta de conocimiento de Linux y no una pregunta sobre el nodo. Para obtener más información, visite: http://linuxconfig.org/understanding-foreground-and-background-linux-processes

ACTUALIZAR:

Como han mencionado otros, el servidor de nodos todavía puede morir al salir del terminal. Un error común que he encontrado es que aunque el proceso del nodo se está ejecutando en bg, es stdout y stderr todavía apunta al terminal. Esto significa que si el servidor de nodo escribe en console.log o console.error recibirá un error de tubería rota y se bloqueará. Esto se puede evitar canalizando la salida de su proceso:

node /srv/www/MyUserAccount/server/server.js > stdout.txt 2> stderr.txt &

Si el problema persiste, debería buscar cosas como tmux o nohup , que son aún más sólidas que las soluciones específicas de nodo, ya que pueden usarse para ejecutar todo tipo de procesos (bases de datos, servicios de registro, otros idiomas).

Un error común que podría hacer que el servidor se cierre es que, después de ejecutar el nohup node your_path/server.js & simplemente cierre el terminal Putty con un simple clic. Debería usar el comando exit en su lugar, entonces su servidor de nodo estará en funcionamiento.


Durante el desarrollo, recomiendo usar nodemon . Reiniciará su servidor cada vez que cambie un archivo. Como han señalado otros, Forever es una opción, pero en producción, todo depende de la plataforma que esté utilizando. Por lo general, deseará usar la forma recomendada del sistema operativo para mantener los servicios (por ejemplo, http://www.freedesktop.org/wiki/Software/systemd/ ).


Espero que esto ayude.

En la línea de comandos, instale para siempre:

npm install forever -g

Crea un archivo de ejemplo:

sudo nano server.js

Puede editar el archivo y obtener resultados directamente en su navegador.
Puedes usar filezilla o cualquier editor para editar el archivo. Ejecute este comando para ejecutar el archivo:

forever start --minUptime 1 --spinSleepTime 1000 -w server.js


He encontrado para siempre hacer el trabajo perfectamente bien.

Suponiendo que ya tiene npm instalado, si no, simplemente haga

sudo apt-get install npm

Entonces instala para siempre

npm install forever --global

Ahora puedes ejecutarlo así

forever start app.js

https://codingweb.io/run-nodejs-application-background/


Instalación

$ [sudo] npm install forever -g

Puedes usar para siempre para ejecutar scripts continuamente

forever start server.js forever list

para el servicio de parada

forever stop server.js


Otra forma es crear una unidad de sistema para tu aplicación. cree un "XXX.service" archivo "/ etc / systemd / system" de forma similar a esto:

[Unit] Description=swagger After=network.target [Service] ExecStart=/usr/bin/http-server /home/swagger/swagger-editor & WorkingDirectory=/home/swagger Restart=always RestartSec=30 [Install] WantedBy=multi-user.target

Un beneficio es que la aplicación se ejecutará como un servicio, se reiniciará automáticamente si se bloquea.

También puedes usar sytemctl para administrarlo:

systemctl start XXX para iniciar el servicio, systemctl stop XXX para detenerlo y systemctl enable XXX para iniciar automáticamente la aplicación cuando se inicia el sistema.


Podrías instalarlo forever usando npm de esta manera:

sudo npm install -g forever

Y luego comienza tu aplicación con:

forever server.js

O como un servicio:

forever start server.js

Forever reinicia su aplicación cuando se bloquea o se detiene por algún motivo. Para restringir los reinicios a 5 puedes usar:

forever -m5 server.js

Para enumerar todos los procesos en ejecución:

forever list

Anote el número entero entre paréntesis y utilícelo de la siguiente manera para detener un proceso:

forever stop 0

El reinicio de un proceso en ejecución va:

forever restart 0

Si está trabajando en su archivo de aplicación, puede usar el parámetro -w para reiniciar automáticamente cada vez que server.js su archivo server.js :

forever -w server.js


Primero instale pm2 globalmente

npm install -g pm2

entonces empezar

pm2 start bin/www


Puede usar pm2 , es un administrador de procesos de producción para aplicaciones Node.js con un equilibrador de carga incorporado.

Instalar PM2

$ npm install pm2 -g

Iniciar una aplicación

$ pm2 start app.js

Si usas Express entonces puedes iniciar tu aplicación como

pm2 start ./bin/www --name="app"

Listado de todos los procesos en ejecución:

$ pm2 list

Enumera todo el proceso. Luego puede detener / reiniciar su servicio usando ID o Nombre de la aplicación con el siguiente comando.

$ pm2 stop all $ pm2 stop 0 $ pm2 restart all

Para visualizar los registros

$ pm2 logs [''all''|app_name|app_id]


Recomiendo buscar algo como Forever para reiniciar Node en caso de una falla, y manejar el desmontaje de esto por usted.



Si solo desea ejecutar su aplicación de nodo en el terminal siempre, simplemente use la pantalla.

Instalar en Ubuntu / Debian:

sudo apt-get install screen

Uso:

$ screen $ node /path/to/app.js

ctrl + a y luego ctrl + d para despedir

Para volver está de vuelta:

Una pantalla: screen -r

Si hay más de una, puedes enumerar todas las pantallas con: screen -ls

Y luego: screen -r pid_number


Simplemente podrías usar esto

nohup node /srv/www/MyUserAccount/server/server.js &

Esto mantendrá la aplicación en ejecución y, para cerrarla, tendrás que anularla.

Para eso podrías instalar htop y luego buscar el nodo y luego matarlo


forever es un muy buen módulo de NodeJs para hacer exactamente eso.

Instalar forever escribiendo en la línea de comandos

$ npm install forever -g

Luego use el siguiente comando para ejecutar un script node.js

$ forever start /path/to/script.js

Tú eres bueno para irte. Además puedes correr

$ forever list

para ver todos los scripts en ejecución. Puede terminar cualquier script específico escribiendo

$ forever stop [pid]

donde [pid] es el ID de proceso del script que obtendrá del comando list . Para detener todos los scripts, puede escribir

$ forever stopall