Enviado por juanonlab el Mar, 30/10/2018 - 18:00
PM2 node

Instalar PM2

PM2 es un gestor para el servidor node.js. La instalación es sencilla en ubuntu 18.04 y no he tenido problemas. Te permite gestionar tus aplicaciones node.js, ver los logs, el estado de tus aplicaciones...

Para instalar el programa lanza estos 3 comandos en tu consola de linux:

npm install pm2 -g
pm2 completion install
npm install pm2 -g && pm2 update

 

Comandos básicos de PM2

Los comandos son muy sencillos de ejecutar y muy intuitivos.

Arrancar aplicación node.js :

pm2 start tuapp.js

De esta manera arranca la aplicación y podrás gestionarla mediante pm2.

 

Estado de la aplicación:

pm2 show tuapp

 

Logs de la aplicación:

pm2 logs tuapp

Muy útil para ver los logs de tu aplicación node.js. Si hay algún error puedes consultar aquí los mismos.

 

Suprimir la aplicación

pm2 delete tuapp

 

Listado de todas las aplicaciones node:

pm2 ls

Lista todas las aplicaciones node.js incluyendo información adicional.

 

Añadir PM2 en el arranque

Si se desea reiniciar el servidor y  no se quiere volver a arrancar a mano las aplicaciones podrás hacerlo con el comando:

pm2 startup systemd

Generará un script que hay que copiar. Por ejemplo será del estilo:

 sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u nodeuser --hp /home/nodeuser 

Y lanzarlo en una consola linux.

 

También es buena idea dejar una imagen del estado de tus aplicaciones node. Con este comando se puede hacer:

pm2 save

 

Para desinstalar pm2 del arranque del sistema:

pm2 unstartup systemd

 

Ejemplo con la aplicación proxyCors

He creado una aplicación llamada proxyCors que permite añadir cabeceras cors cuando realizo llamadas a apis en mis aplicaciones.

Arrancar la aplicación proxycors:

nodeuser@juanonlabserver:~/corsanywhere$ ls
node_modules  package-lock.json  proxyCors.js  README.md
nodeuser@juanonlabserver:~/corsanywhere$ pm2 start proxyCors.js

 

Si queremos listar el contenido de las aplicaciones corriendo en pm2: 

nodeuser@juanonlabserver:~/corsanywhere$ pm2 ls
┌───────────┬────┬─────────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────────┬──────────┐
│ App name  │ id │ version │ mode │ pid  │ status │ restart │ uptime │ cpu │ mem       │ user     │ watching │
├───────────┼────┼─────────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────────┼──────────┤
│ proxyCors │ 0  │ N/A     │ fork │ 1640 │ online │ 0       │ 12h    │ 0%  │ 39.8 MB   │ nodeuser │ disabled │
└───────────┴────┴─────────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────────┴──────────┘
 Use `pm2 show ` to get more details about an app
nodeuser@juanonlabserver:~/corsanywhere$
|name>

 

Mostrar información adicional:

nodeuser@juanonlabserver:~/corsanywhere$ pm2 show proxyCors
 Describing process with id 0 - name proxyCors
┌───────────────────┬──────────────────────────────────────────────┐
│ status            │ online                                       │
│ name              │ proxyCors                                    │
│ version           │ N/A                                          │
│ restarts          │ 0                                            │
│ uptime            │ 12h                                          │
│ script path       │ /home/nodeuser/corsanywhere/proxyCors.js     │
│ script args       │ N/A                                          │
│ error log path    │ /home/nodeuser/.pm2/logs/proxyCors-error.log │
│ out log path      │ /home/nodeuser/.pm2/logs/proxyCors-out.log   │
│ pid path          │ /home/nodeuser/.pm2/pids/proxyCors-0.pid     │
│ interpreter       │ node                                         │
│ interpreter args  │ N/A                                          │
│ script id         │ 0                                            │
│ exec cwd          │ /home/nodeuser/corsanywhere                  │
│ exec mode         │ fork_mode                                    │
│ node.js version   │ 10.11.0                                      │
│ node env          │ N/A                                          │
│ watch & reload    │ ✘                                            │
│ unstable restarts │ 0                                            │
│ created at        │ 2018-10-29T19:59:16.591Z                     │
└───────────────────┴──────────────────────────────────────────────┘
 Revision control metadata
┌──────────────────┬────────────────────────────────────────────────────────────┐
│ revision control │ git                                                        │
│ remote url       │ https://juanonlab@bitbucket.org/juanonlab/corsanywhere.git │
│ repository root  │ /home/nodeuser/corsanywhere                                │
│ last update      │ 2018-10-29T20:03:16.236Z                                   │
│ revision         │ e2c4bb47dc0a8b90a3b036b111b7884ffe2ca819                   │
│ comment          │ README.md edited online with Bitbucket                     │
│ branch           │ master                                                     │
└──────────────────┴────────────────────────────────────────────────────────────┘
 Code metrics value
┌────────────────────┬────────┐
│ Event Loop Latency │ 0.88ms │
│ Active handles     │ 4      │
└────────────────────┴────────┘
 Add your own code metrics: http://bit.ly/code-metrics
 Use `pm2 logs proxyCors [--lines 1000]` to display logs
 Use `pm2 env 0` to display environement variables
 Use `pm2 monit` to monitor CPU and Memory usage proxyCors

Es una herramienta muy sencilla de utilizar, a medida que añada más aplicaciones node.js me será de más utilidad. Dejo un enlace con la documentación de PM2.

 

Añadir nuevo comentario