web-dev-qa-db-fra.com

Commande PM2 non trouvée

J'ai installé node.js et npm sur mon serveur centOS 7. Mais j'ai des problèmes avec pm2 . En fait, le vrai problème est que je n'ai aucune expérience sous Linux et que je ne sais pas comment changer de chemin .

* 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

J'ai entré le dossier en tapant cd chat et installé pm2 avec npm install pm2.

Après cela, j'ai essayé d'utiliser pm2 pour mon server.js en tapant pm2 server.js server renvoie "pm2 command not found". Je peux utiliser node.js sans aucun problème mais pm2 ne fonctionne pas.

Comment puis-je résoudre ça?

23
kenarsuleyman

Installez PM2 globalement:

lancer en tant que root:

npm i -g pm2

ou si l'utilisateur est Sudo-er

Sudo npm i -g pm2

puis retournez à l'utilisateur (ou restez à la racine s'il a été créé par l'utilisateur root) et exécutez-le:

pm2 start server.js
46
num8er

PM2 le gestionnaire de processus pour les applications Node.js. PM2 gère essentiellement les applications (les exécute en arrière-plan en tant que service). Voilà comment nous installons PM2 globalement avec le compte d'autorisations Sudo

Sudo npm install -g pm2

L'option -g indique à npm d'installer le module globalement, afin qu'il soit disponible dans tout le système . Une fois installé, vérifiez le chemin d'installation comme suit:

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

Maintenant, nous devons ajouter ce chemin dans le script de démarrage bash. Ajoutez la ligne suivante n'importe où dans le fichier ~/.bashrc. 

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

Maintenant reconnectez-vous ou sourcez le script bash comme suit (pour que le script bash s'exécute et que le chemin soit défini) 

 source ~/.bashrc

et maintenant cela devrait fonctionner. vérifier l'état de pm2

pm2 status
8
Nicks

Erreur d'utilisation du port 80 avec PM2?

La mauvaise façon de procéder consiste à utiliser Sudo.

Pour ce faire, vous devez vous connecter en tant que root Sudo su, puis exécuter pm2 start app.js --name "whatever" --watch.

En vous connectant en tant qu'utilisateur root, il n'est pas nécessaire de configurer les fichiers bashrc ou profile. Cependant, en tant que root, le script peut utiliser dangereusement la fonction exec() de nodejs. Pour éviter cela, commencez par créer le contenu racine avec votre script, puis réduisez votre privilège après un certain délai:

// 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

Installez PM2 globalement et lancez tout en tant qu'utilisateur root 

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

Tu es prêt 

0
Ajith