未找到PM2命令
我将node.js和npm安装到了我的centOS 7服务器上。但我在pm2有问题。 其实真正的问题是我没有在Linux的经验,我不知道如何改变路径。 这里是文件夹结构。未找到PM2命令
* 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
进入文件夹,并用npm install pm2
安装PM2。
之后,我尝试通过键入pm2 server.js
服务器返回“pm2命令未找到”使用pm2为我的server.js。我可以使用node.js没有任何问题,但pm2不工作。
我该如何解决这个问题?
安装PM2全球:
运行为根:
npm i -g pm2
,或者如果用户是须藤洱
sudo npm i -g pm2
,然后回去用户(或留根,如果它由root用户创建)并运行它:
pm2 start server.js
PM2 Node.js应用程序的进程管理器。 PM2主要管理应用程序(在后台作为服务运行它们)。所以这是我们如何使用sudo权限安装在全球占PM2
sudo npm install -g pm2
-g选项告诉NPM在全球范围内安装模块,所以它的系统范围内可用。 一旦被安装,检查安装的路径为:
whereis pm2
pm2: /opt/node/bin/pm2 /opt/node/lib/node_modules/pm2/bin/pm2
现在,我们需要添加启动bash脚本这条道路。在〜/ .bashrc文件的任何位置添加以下行。
export PATH=$PATH:/opt/node/lib/node_modules/pm2/bin
现在重新登录或源bash脚本如下(使bash脚本运行和路径设置)
source ~/.bashrc
,现在它应该运行。检查pm2的状态
pm2 status
使用端口80与PM2时出错?
这样做的错误方法是尝试运行sudo
。
正确的做法是以root身份登录sudo su
,然后运行pm2 start app.js --name "whatever" --watch
。
以root身份登录,不需要配置任何bashrc
或配置文件。但是,作为root用户,脚本可能会危险地使用nodejs的exec()
函数。为避免出现这种情况,请先在脚本中先执行根目录,然后再在一段时间后降低您的权限:
// 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);
似乎你没有理解这个问题。 (: – num8er
非常感谢您的明确指示。它为我工作。我在5分钟内接受这个答案。 –
我们可以使用PM2创建生产模式吗? – Deep
@DeepKakkar其实pm2是运行/监控nodejs应用程序进程的软件包。您正在寻找构建工具,请看看:webpack,gulp,grunt,它们可以自动化部署/打包。 PM - 代表进程管理器,不代表软件包管理器。 – num8er