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?
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
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
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);
Diese Option hat mir geholfen:
Sudo npm i -g pm2
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
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