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?
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
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
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);
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