2016-07-10 77 views
1

我想在启动时运行pm2没有成功..pm2在ubuntu中不启动

我在ubuntu 16.04上安装。

我的npm目录位于:〜/ .npm-global。

在那里,我可以看到pm2 -> ../lib/node_modules/pm2/bin/pm2

没有转储文件。

我PM2目录是〜/ .pm2:

在那里,我可以看到dump.pm2和rpc.sock

如果我做的:

sudo $(which pm2) start app.js 
sudo $(which pm2) startup ubuntu -u $USER 
sudo $(which pm2) save 

它让我看到:

Generating system init script in /etc/init.d/pm2-init.sh 
[PM2] Making script booting at startup... 
[PM2] -ubuntu- Using the command: 
     su -c "chmod +x /etc/init.d/pm2-init.sh && update-rc.d pm2-init.sh defaults" 


[PM2] Done. 
[PM2] Saving current process list... 
[PM2] Successfully saved in /home/theUser/.pm2/dump.pm2 

我可以看到该应用运行正常。

如果我这样做虽然,sudo ~/.npm-global/bin/pm2 start /etc/init.d/pm2-init.sh,它给了我:

events.js:160 
     throw er; // Unhandled 'error' event 
      ^
Error: connect EACCES ~/.pm2/rpc.sock 
    at .... 

/etc/init.d/pm2-init.sh有:

NAME=pm2 
PM2=/home/theUser/.pm2 
USER=theUser 
DEFAULT=/etc/default/$NAME 

export PATH=/usr/bin:$PATH 
export PM2_HOME="/home/theUser/.npm-global/lib/node_modules/pm2/bin/" 

我试着也使用:export PM2_HOME="/home/theUser/.pm2

,当我开始从素文字它说它不能转储(可能是因为转储只存在于〜/ .pm2目录中)

如果我尝试:

sudo $(which pm2) start app.js 
    sudo $(which pm2) startup systemd -u $USER 
    sudo $(which pm2) save 

和手动执行(因为它无法找到PM2作为普通用户):

须藤〜/ .npm全局/ PM2倾倒& &〜/。 NPM-全球/ PM2杀& & systemctl守护重装& & systemctl启用〜/ .npm全局/ PM2 & & systemctl启动〜/ .npm全局/ PM2

所以,

1)我不知道如果我要运行sudo $(which pm2) startup systemd -u $USERsudo $(which pm2) startup ubuntu -u $USER

2)PM2和PM2_HOME我应该怎么办?

3)如何将sudo路径添加~/.npm-global/bin,或者当我将pm2作为sudo运行时,一般如何使用此路径。注意,我不想更改/ etc/sudoers。

回答