2015-09-24 18 views
6

Ich benutze PM2, um einen node.js Prozess zu starten, und ich möchte diesen Prozess automatisch gestartet werden, wenn das System (Ubuntu 14.04 auf Intel Atom-Prozessor) gestartet wird. Ich habe die Anweisungen auf der pm2 web site aber ohne Erfolg befolgt. Mein dump.pm2 scheint korrekt zu sein, aber der PM2-Daemon wurde nie gestartet. Ich habe sowohl die ubuntu und linux Optionen zu pm2 startup, als auch Autodetect, sowohl mit als auch ohne einen angegebenen Benutzer versucht. Dateien (Links) S20pm2-init.sh wurden in /etc/rc[2-5].d erstellt, aber nichts wird gestartet. Ich kann keine offensichtlichen Fehlermeldungen im Systemprotokoll finden.Ubuntu 14.04 - PM2 Start nicht nach Neustart

Irgendwelche Ideen?

bearbeiten hinzufügen

Ich finde, dass service pm2-init.sh start den Daemon korrekt gestartet wird, wenn von meinem Login-Account laufen, die die gleiche wie die von USER= in der Datei /etc/init.d/pm2-init.sh definiert ist. Ich habe sichergestellt, dass die PM2_HOME Definition in dieser Datei auf den richtigen Ort verweist. Es startet jedoch immer noch nicht beim Systemstart!

+2

Ich benutze pm2 auf Ubuntu 15.04, versuchte ich alle möglichen Lösungen starten die speichern, aber nichts beim Neustart meines Servers, bitte beraten? –

Antwort

2

Nun, ich denke, das hat sowieso funktioniert. Ich habe ursprünglich versucht, als Systembenutzer (keine Login-Shell) node-red mit der Knoten-Anwendung mit dem gleichen Namen zu starten, und wenn das nicht funktioniert habe ich versucht, als normaler Benutzer max starten. Nach einigem Hantieren mit den Dingen fing es plötzlich an zu arbeiten, aber auf diesem langsamen Atom-Prozessor, startet die Knoten-Anwendung nur ein paar Minuten, nachdem der Desktop erscheint.

Um es unter dem Systembenutzer ausgeführt: zuerst, als max eingeloggt, löschte ich alle PM2-Jobs und pm2 save ausgeführt, um eine leere Dump-Datei zu erstellen. Dann tat ich:

sudo npm install [email protected] -g 
pm2 update 

Um die neueste Version zu bekommen, falls das half. Ich zog von 0.14.7 bis 0.15.7

Dann lief ich

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

und bearbeiten /etc/init.d/pm2-init.sh die Linie zu korrigieren, die das PM2_HOME Verzeichnis in das Home-Verzeichnis von node-red setzt:

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

Dann Ich wurde eine Login-Version des Benutzers node-red, wechselte zum Home-Verzeichnis dieses Benutzers, startete meinen Job und speicherte die Prozessliste:

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 

Dann habe ich von node-red Shell verlassen, neu gestartet, und (nach einer Minute oder so Verzögerung) gab es die Anwendung läuft gut!

Beachten Sie, dass dies ubuntu 14.04 war, das das System init/upstart verwendet. Spätere Versionen, die ich denke, verwenden systemd Ansatz und möglicherweise müssen die ubuntu Parameter in systemd beim Erstellen des Startskript geändert werden.

Ich bin mir immer noch nicht wirklich sicher, warum es beim ersten Mal nicht richtig funktioniert hat.

+0

diese Zeile hier Export PM2_HOME = "/ home/node-red/.pm2" war die Lösung für mich. Es war 'export PM2_HOME ="/root/.pm2 "' aus irgendeinem Grund – neelabh

5

Zur Inbetriebnahme PM2 zu arbeiten, gibt es ein kritischer Befehl begraben in documentation und here.

Sie müssen 1) beginnen alle Prozesse, 2) das Startskript, und 3) laufen erstellen pm2 save

Referenz auf @lazlojuly's answer here.

+0

Das funktioniert gut für mich - ohne jeden benutzerdefinierten Hack oder Anpassung an Startskript in meinem Digital Ocean Ubuntu Tröpfchen. – Red

+0

+1 Crazy dies ist nicht in ihrer [Startup-Dokumentation] enthalten (http://pm2.keymestrics.io/docs/usage/quick-start/) – ow3n

0

ich für die Arbeit gesucht, um für beenden, während bis ich zu dieser Lösung kam

nach wird erstellt PM2 speichern

  1. diese Datei ausgeführt wird -> /etc/init.d/pm2-init .sh
  2. dann auf cron tab @reboot root /etc/init.d/pm2-init.sh starten dies äquivalent auf cmd zu der Ausführung, aber beim Neustart ausgelöst

das funktioniert gut für mich jetzt

Verwandte Themen