2016-07-04 177 views
12

我将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不工作。

我该如何解决这个问题?

回答

25

安装PM2全球:

运行为根:

npm i -g pm2 

,或者如果用户是须藤洱

sudo npm i -g pm2 

,然后回去用户(或留根,如果它由root用户创建)并运行它:

pm2 start server.js 
+1

非常感谢您的明确指示。它为我工作。我在5分钟内接受这个答案。 –

+1

我们可以使用PM2创建生产模式吗? – Deep

+1

@DeepKakkar其实pm2是运行/监控nodejs应用程序进程的软件包。您正在寻找构建工具,请看看:webpack,gulp,grunt,它们可以自动化部署/打包。 PM - 代表进程管理器,不代表软件包管理器。 – num8er

3

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 
+1

当你安装它时,不需要将其路径添加到'.bashrc'中,因为它会生成可执行文件'/ usr/bin/pm2'或'/ usr/local/bin/pm2'。也许在另一个分配中,它不会放在那里,或者可能在编译源代码后忘记了:'make install'或者您已经将所有结果手动复制到'/ opt/node'。所以在这种情况下为什么不这样做:'sudo ln -s/opt/node/bin/pm2/usr/bin/pm2' – num8er

+1

Thanks @ num8er,我会试试这个。很好的澄清,但:-) – Nicks

0

使用端口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); 
+0

似乎你没有理解这个问题。 (: – num8er