it-swarm.com.de

PM2-Befehl nicht gefunden

Ich habe node.js und npm auf meinem centOS 7-Server installiert. Aber ich habe Probleme mit pm2 . Eigentlich ist es ein echtes Problem, ich habe keine Erfahrungen mit Linux und ich weiß nicht, wie ich den Pfad ändern soll.

* 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

Ich habe den Ordner durch Eingabe von cd chat eingegeben und pm2 mit npm install pm2 installiert.

Danach habe ich versucht, pm2 für meine server.js zu verwenden, indem ich pm2 server.js eingibt. Der Server gibt "pm2 command not found" zurück. Ich kann node.js problemlos verwenden, aber pm2 funktioniert nicht.

Wie kann ich das lösen?

23
kenarsuleyman

Installiere PM2 global:

als root ausführen:

npm i -g pm2

oder wenn der Benutzer Sudo-er ist

Sudo npm i -g pm2

gehen Sie dann zu user (oder bleiben Sie in root, wenn es von root-user erstellt wurde) und führen Sie es aus:

pm2 start server.js
46
num8er

PM2 der Prozessmanager für Node.js-Anwendungen. Grundsätzlich verwaltet PM2 Anwendungen (führt sie als Dienst im Hintergrund aus). So installieren wir PM2 global mit dem Sudo-Berechtigungskonto

Sudo npm install -g pm2

Die Option -g weist npm an, das Modul global zu installieren, sodass es systemweit verfügbar ist ..__ Wenn das installiert ist, überprüfen Sie den installierten Pfad wie folgt:

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

Jetzt müssen wir diesen Pfad in das Start-Bash-Skript einfügen. Fügen Sie die folgende Zeile an einer beliebigen Stelle in der Datei ~/.bashrc hinzu. 

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

Melden Sie sich erneut wie folgt an, oder stellen Sie das bash-Skript wieder her (damit das bash-Skript ausgeführt wird und der Pfad festgelegt ist). 

 source ~/.bashrc

und jetzt sollte es laufen. Überprüfen Sie den Status von pm2

pm2 status
8
Nicks

Fehler bei der Verwendung von Port 80 mit PM2?

Die falsche Vorgehensweise ist, mit Sudo zu laufen.

Der richtige Weg wäre, sich als root Sudo su anzumelden und dann pm2 start app.js --name "whatever" --watch auszuführen.

Wenn Sie sich als Root anmelden, müssen Sie keine bashrc- oder Profildateien konfigurieren. Als root kann das Skript jedoch die Funktion exec() von nodejs gefährlich verwenden. Um dies zu vermeiden, führen Sie zunächst das Root-Zeug mit Ihrem Skript aus und senken Sie dann nach einiger Zeit Ihr Privileg.

// 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);
1
servercharlie

Diese Option hat mir geholfen:

Sudo npm i -g pm2
0
Alexander Ezhov

Wenn Sie Nvm zur Installation von Node und Npm verwendet haben, installieren Sie PM2 für normale Benutzer.

als root ausführen:

Sudo su
vim ~/.bashrc

fügen Sie den folgenden Code hinzu und ändern Sie NVM_DIR in den Basisordner Ihres normalen Benutzers:

export NVM_DIR="/home/[PLEASE CHANGE]/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  
# This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. 
"$NVM_DIR/bash_completion"  
# This loads nvm bash_completion

zu guter Letzt :

source ~/.bashrc
0
ke deng

Installieren Sie PM2 global und führen Sie alles als Root-Benutzer aus 

Sudo apt-get install npm
Sudo npm i -g pm2
Sudo ln -s /usr/bin/nodejs /usr/bin/node

Du bist startklar 

0
Ajith