Subir procesos y bajar procesos en un sistema linux puede ser suficiente para poner en ejecución un server nodejs y es cool en algunos casos se siente bien ejecutar kill PID para detener procesos pero luego de un tiempo no es tan cool, asi que las personas cool del area crearon PM2 para nuestro uso.
Esto «podria» ser suficiente para subir/ejecutar un server nodejs.
node server.js > stdout.txt 2> stderr.txt &
Pero que tal si con solo ejecutar
pm2 start server.js --name ServidorUno
Esta es una alternativa a tener que manejar a mano esto de los servidores NodeJS y es una alternativa mas a Node for Ever que es mejor que la primera pero se queda algo corta en comparación con PM2, nos brinda la opción de poder crear balanceadores de carga a nuestra aplicación sin alterar nuestro código el por si solo realiza todo el trabajo sucio detrás de escenas.
Entre sus Principales características podrían destacarse las siguientes:
-Capacidad de manejar un sin numero de apps. ( Ver el estado de distintas apps )
-Capacidad de monitoreo de memoria y cps de nuestros procesos.
-Manejo de logs. ( Cosas que imprimimos en nuestros procesos son mostrados ahi )
-Balanceo de cargas ya mencionado.
-Iniciar tus aplicaciones una vez el servidores se inicia.
-Capacidad de «watch your code» si tu codigo cambia.
este reiniciara el proceso, bien util a la hora de hacer pases sin tener down time.
Ejemplos de iniciar aplicaciones:
La forma de iniciar las aplicación tambien las registrara en la interface de pm2, por lo que solo se iniciara una sola vez de esta forma, luego seria pm2 start [id]|[name]
#ejemplo simple de como iniciar un proceso. pm2 start server.js #iniciara el servidor con 3 procesos pm2 start server.js -i 3 #inicia el servidor con el máximo numero de procesos posibles pm2 start server.js -i max #darle un nombre al proceso ( Esto es para manejarlo por nombre y olvidar el pid ) pm2 start server.js --name HelloServer #pasar parámetros al iniciar el servidor pm2 start server.js --node-args="--param=val -d" #iniciar aplicación observada ( observa cambios en el file system ) pm2 start server.js --watch
Manejo de una aplicacion
pm2 start server.js --name=server-uno pm2 restart server-uno #eliminara server-uno de la interface de pm2 pm2 delete server-uno #eliminara a todas las aplicaciones ya registradas pm2 delete all
Comandos de utilidad
#creara un init-script y se ejecutara cada vez que el servidor inicie. pm2 startup [ubuntu|centos|systemd] #mostrara todas las aplicaciones registradas pm2 list #recargara una aplicación pm2 reload api #mostrara los logs de todas las aplicaciones ya corriendo. pm2 logs #mostrara logs de la aplicación pm2 logs appName #guardara todos los cambios realizados con pm2 ( inicio de aplicación y demás configuraciones ) pm2 save
pm2 list
pm2 desc
pm2 monit
si este projecto les gusto les recomiendo este para un entorno de desarollo Nodemon super facil de usar.