Команда PM2 не найдена

Я установил node.js и npm на мой сервер centOS 7. Но у меня проблемы с pm2. На самом деле реальная проблема: у меня нет опыта в Linux, и я не знаю, как изменить путь. Вот структура папок.

* 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

Я ввел папку, набрав cd chat и установив pm2 с помощью npm install pm2.

После этого я попытался использовать pm2 для моего server.js, набрав pm2 server.js server, возвращает команду pm2, не найденную. Я могу использовать node.js без каких-либо проблем, но pm2 не работает.

Как я могу это решить?

Ответ 1

Установите PM2 глобально:

запустить с правами root:

npm i -g pm2

или если пользователь sudo-er

sudo npm i -g pm2

а затем вернитесь к пользователю (или оставайтесь в корне, если он был создан пользователем root) и запустите его:

pm2 start server.js

Ответ 2

PM2 диспетчер процессов для приложений Node.js. PM2 в основном управляет приложениями (запускает их в фоновом режиме как услугу). Таким образом, мы устанавливаем PM2 глобально с учетной записью sudo permissions

sudo npm install -g pm2

Параметр -g указывает npm для установки модуля по всему миру, так что он доступен для всей системы. После того, как это установлено, проверьте установленный путь как:

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

Теперь нам нужно добавить этот путь в startup bash script. Добавьте следующую строку в файл ~/.bashrc.

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

Теперь перейдите в систему или введите bash script следующим образом (чтобы bash script запускался и путь был установлен)

 source ~/.bashrc

и теперь он должен работать. проверьте статус pm2

pm2 status

Ответ 3

Ошибка при использовании порта 80 с PM2?

Неправильный способ обойти это пытается запустить с помощью sudo.

Правильный способ сделать это - войти в систему как root sudo su, а затем запустить pm2 start app.js --name "whatever" --watch.

При входе в систему с правами администратора нет необходимости настраивать файлы bashrc или профиля. Однако, как root, script может использовать функцию nodejs exec() опасно. Чтобы этого избежать, сначала создайте корневой файл с помощью script, затем опустите свою привилегию после некоторого таймаута:

// I use port 80 first.. at this point the script 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);

Ответ 4

Установите PM2 глобально и запустите все как пользователь root

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

Ты хорош идти

Ответ 5

Если вы использовали nvm для установки узла и npm, установите pm2 для обычного пользователя.

запустить от имени root:

sudo su
vim ~/.bashrc

добавьте код ниже, замените NVM_DIR на обычную домашнюю папку пользователя:

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

наконец:

source ~/.bashrc