2015-09-24 17 views
6

Sto usando pm2 per avviare un processo node.js e vorrei che questo processo fosse avviato automaticamente quando il sistema (Ubuntu 14.04 su processore Intel Atom) viene avviato. Ho seguito le istruzioni sullo pm2 web site ma senza successo. My dump.pm2 sembra essere corretto, ma il demone pm2 non viene mai avviato. Ho provato sia le opzioni ubuntu e linux a pm2 startup, sia il rilevamento automatico, con o senza un utente specificato. I file (collegamenti) S20pm2-init.sh sono stati creati in /etc/rc[2-5].d ma non viene avviato nulla. Non riesco a trovare nessun messaggio di errore evidente nel registro di sistema.Ubuntu 14.04 - pm2 avvio non avviato dopo il riavvio

Qualche idea?

Modifica per aggiungere

Trovo che service pm2-init.sh start avvia correttamente il demone, quando viene eseguito dal mio account di accesso, che è lo stesso di quello definito dalla USER= nel file /etc/init.d/pm2-init.sh. Mi sono assicurato che la definizione di PM2_HOME in questo file punti anche nel posto corretto. Tuttavia, non si avvia ancora all'avvio del sistema!

+2

Sto usando pm2 su Ubuntu 15.04, ho provato tutte le soluzioni possibili avviare il salvataggio ma nulla quando il riavvio del mio server, per favore consigli? –

risposta

2

Bene, penso che questo ha funzionato, comunque. Inizialmente cercavo di avviare come utente di sistema (nessuna shell di login) chiamato node-red eseguendo l'applicazione nodo con lo stesso nome e, quando non funzionava, ho provato a iniziare come utente normale max. Dopo alcuni problemi con le cose improvvisamente ha iniziato a lavorare, ma su questo lento processore Atom, l'applicazione del nodo inizia solo un paio di minuti dopo la visualizzazione del desktop.

Per farlo funzionare con l'utente del sistema: innanzitutto, effettuato il login come max, ho eliminato tutti i processi PM2 e ho eseguito pm2 save per creare un file di dettagli vuoto. Poi ho fatto:

sudo npm install [email protected] -g 
pm2 update 

Per ottenere l'ultima versione, nel caso in cui aiutato. Mi sono trasferito da 0.14.7 a 0.15.7

Poi corsi

sudo su -c "env PATH=$PATH:/usr/bin pm2 startup ubuntu -u node-red" 

e modificati /etc/init.d/pm2-init.sh correggere la riga che imposta la directory PM2_HOME alla home directory di node-red:

export PM2_HOME="/home/node-red/.pm2" 

Poi Sono diventato una versione di accesso dell'utente node-red, ho cambiato la directory principale dell'utente, ho avviato il lavoro e salvato l'elenco dei processi:

sudo -H -u node-red bash -l 
cd 
pm2 start /usr/local/bin/node-red --node-args="--max-old-space-size=128" -- -v -u /home/node-red/.node-red 
pm2 save 

Poi sono uscito dalla shell di node-red, riavviato e (dopo un minuto o così di ritardo) l'applicazione funzionava bene!

Si noti che questa era ubuntu 14.04, che utilizza il sistema init/upstart. Versioni successive penso che utilizzare l'approccio systemd e potrebbe aver bisogno del parametro ubuntu modificato in systemd durante la creazione dello script di avvio.

Non sono ancora sicuro del motivo per cui non ha funzionato correttamente la prima volta.

+0

questa riga 'export PM2_HOME ="/home/node-red/.pm2 "' era la soluzione per me. è stato 'export PM2_HOME ="/root/.pm2 "' per qualche ragione – neelabh

5

Per l'avvio PM2 al lavoro, c'è un comando critica sepolto in documentation e here.

Devi 1) avviare tutti i processi, 2) creare lo script di avvio, e 3) eseguire pm2 save

Riferimento a @lazlojuly's answer here.

+0

Questo funziona perfettamente per me - senza alcun hack personalizzato o personalizzazione per lo script di avvio nel droplet Digital Ocean Ubuntu. – Red

+0

+1 Pazzo questo non è incluso nella loro [documentazione di avvio] (http://pm2.keymetrics.io/docs/usage/quick-start/) – ow3n

0

ho cercato per lavoro in giro per uscire, mentre fino sono venuto a questa soluzione

dopo l'esecuzione PM2 Salva

  1. questo file verrà creato -> /etc/init.d/pm2-init .SH
  2. poi su scheda cron radice @reboot /etc/init.d/pm2-init.sh iniziare questo equivale ad eseguirlo su cmd ma innescato su ripartenza

questo sta funzionando bene per me ora