2016-07-04 61 views
12

Ho installato node.js e npm sul mio server centOS 7. Ma ho problemi con pm2. In realtà il problema reale è che non ho esperienze in linux e non so come cambiare percorso. Ecco la struttura delle cartelle.Comando PM2 non trovato

* bin 
* code 
* error_docs 
* httpdocs 
* lib64 
* logs 
* tmp 
* var 
* chat(my node.js folder) 
    * node_modules 
     * pm2 
     * sockjs 
    * server.js 
* dev 
* etc 
* lib 
* local 
* sbin 
* usr 

sono entrato cartella digitando cd chat e installato PM2 con npm install pm2.

Successivamente ho provato a utilizzare pm2 per il mio server.js digitando il server pm2 server.js restituendo "comando pm2 non trovato". Posso usare node.js senza problemi ma pm2 non funziona.

Come posso risolvere questo?

risposta

25

Installare PM2 globalmente:

esecuzione come root:

npm i -g pm2 

o se l'utente è sudo-er

sudo npm i -g pm2 

e poi tornare a utente (o rimanere in radice se è stato creato dall'utente root) ed eseguirlo:

pm2 start server.js 
+1

Grazie mille per queste chiare istruzioni.Ha funzionato per me. Lo accetto come risposta in 5 minuti. –

+1

possiamo creare build per la modalità di produzione usando PM2? – Deep

+1

@DeepKakkar in realtà pm2 è un pacchetto per l'esecuzione/monitoraggio dei processi dell'app nodejs. Sei alla ricerca di strumenti di sviluppo, quindi dai un'occhiata a: webpack, gulp, grunt che automatizzano l'implementazione/packaging. PM - sta per Process Manager, non Package Manager. – num8er

3

PM2 il gestore dei processi per le applicazioni Node.js. PM2 gestisce fondamentalmente le applicazioni (eseguirle in background come servizio). Quindi questo è il modo in cui installiamo PM2 a livello globale con i permessi sudo spieghiamo

sudo npm install -g pm2 

L'opzione -g dice NPM di installare il modulo a livello globale, in modo che sia disponibile a livello di sistema. Una volta che questo è installato, controllare il percorso installato come:

whereis pm2 
pm2: /opt/node/bin/pm2 /opt/node/lib/node_modules/pm2/bin/pm2 

Ora, abbiamo bisogno di aggiungere questo percorso in bash script di avvio. Aggiungi aggiungi la seguente riga ovunque nel file ~/.bashrc.

export PATH=$PATH:/opt/node/lib/node_modules/pm2/bin 

Ora nuovamente il login o fonte script bash come segue (in modo che bash script viene eseguito e il percorso è impostato)

source ~/.bashrc 

e ora dovrebbe funzionare. controllare lo stato di pm2

pm2 status 
+1

Non c'è bisogno di aggiungere il suo percorso a '.bashrc', perché quando lo installi, rende il file eseguibile'/usr/bin/pm2' o '/ usr/local/bin/pm2'. Forse in un altro distributore non lo mette lì, o forse dopo averlo compilato da fonti che hai dimenticato di fare: 'make install' o hai copiato tutti i risultati manualmente in'/opt/node'. quindi, in questo caso, perché non farlo: 'sudo ln -s/opt/node/bin/pm2/usr/bin/pm2' – num8er

+1

Grazie @ num8er, proverò questo. Bella precisazione però :-) – Nicks

0

Errore nell'utilizzo della porta 80 con PM2?

Il modo sbagliato di andare su questo sta cercando di funzionare con sudo.

Il modo corretto per farlo sarebbe quello di accedere come utente root sudo su, quindi eseguire pm2 start app.js --name "whatever" --watch.

Accesso come root, non è necessario configurare alcun file bashrc o di profilo. Tuttavia, come root, lo script può utilizzare la funzione exec() del nodo pericolosamente. Per evitare questo, fai prima le cose di root con il tuo script, poi abbassa i tuoi privilegi dopo qualche timeout:

// I use port 80 first.. at this point the script's UID is root. 

app.listen(80); 

// After 2 seconds we switch to UID `azureuser`, which obviously isn't root anymore. 

setTimeout(function() { 
    process.setuid("azureuser"); 
}, 2000); 
+0

Sembra che tu non abbia capito la domanda. (: – num8er