Команда 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