我将node.js和npm安装到我的centOS 7服务器上。但我对pm2有疑问。 其实真正的问题是我没有linux的经验,也不知道如何改变路径。 这是文件夹结构。
close: function (srcCmd) {
var closeResult = true;
asyncThing(function(result) {
if (result)
closeResult = true;
else
closeResult = false;
});
if (closeResult !== false) {
this.closeDialog();
}
},
我输入了文件夹* 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命令"来使用pm2作为我的server.js。我可以使用node.js而没有任何问题,但pm2无法正常工作。
我该如何解决这个问题?
答案 0 :(得分:52)
全球安装PM2:
以root身份运行:
npm i -g pm2
或者如果用户是sudo-er
sudo npm i -g pm2
然后返回用户(如果是root用户创建的话,则保留在root用户中)并运行它:
pm2 start server.js
答案 1 :(得分:8)
PM2 Node.js应用程序的进程管理器。 PM2基本上管理应用程序(在后台作为服务运行它们)。这就是我们使用sudo权限帐户全局安装PM2的方法
emails = regmatches(df, gregexpr("([_a-z0-9-]+(\\.[_a-z0-9-]+)*@enron.com)", df))
-g选项告诉npm全局安装模块,以便它在系统范围内可用。 安装完成后,请将安装的路径检查为:
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 1, 2, 0, 5
现在,我们需要在启动bash脚本中添加此路径。添加在〜/ .bashrc文件中的任何位置添加以下行。
sudo npm install -g pm2
现在重新登录或获取bash脚本,如下所示(以便运行bash脚本并设置路径)
whereis pm2
pm2: /opt/node/bin/pm2 /opt/node/lib/node_modules/pm2/bin/pm2
现在它应该运行。检查pm2的状态
export PATH=$PATH:/opt/node/lib/node_modules/pm2/bin
答案 2 :(得分:2)
就我而言,我使用 zsh shell 运行 MacOs Big Sur。 您需要做的第一件事是获取 npm-global 路径的前缀:
npm config get prefix
然后这将返回如下内容:
/Users/your_user/npm-global
复制此路径,并在最后添加/bin -> /home/your_user/npm-global/bin。然后我们将这个路径导出到 bash 配置中。
export PATH=$PATH:/Users/your_user/npm-global/bin
我相信你所有的全局 npm 包现在都可以正常工作了。
答案 3 :(得分:1)
将端口80与PM2一起使用时出错?
错误的解决方法是尝试使用sudo
。
执行此操作的正确方法是以root sudo su
身份登录,然后运行pm2 start app.js --name "whatever" --watch
。
以root用户身份登录,无需配置任何bashrc
或个人资料文件。但是,作为root用户,脚本可以危险地使用nodejs的exec()
函数。要避免这种情况,请先使用脚本执行root操作,然后在超时后降低权限:
// 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);
答案 4 :(得分:1)
该选项对我有帮助:
sudo npm i -g pm2
答案 5 :(得分:0)
全局安装PM2并以root用户身份运行所有内容
sudo apt-get install npm
sudo npm i -g pm2
sudo ln -s /usr/bin/nodejs /usr/bin/node
您很高兴
答案 6 :(得分:0)
如果您使用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
答案 7 :(得分:0)
sudo npm i -g pm2
对我有用。
答案 8 :(得分:0)
如果您是通过NPM安装的,则无法正常运行,也可以创建符号链接:
ln -s /<your-user>/.npm-global/lib/node_modules/pm2/bin/pm2 /usr/bin/pm2
之后,您将可以拨打电话:
pm2