2016-07-10 75 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。

回答