pm2在ubuntu

时间:2016-07-10 16:32:37

标签: node.js pm2

我试图在启动时运行pm2但没有成功..

我在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

当我从/etc/init.d/pm2-init.sh启动scipt时,它表示它无法转储(可能因为dump只存在于〜/ .pm2目录中)

如果我尝试:

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

并手动执行(因为它无法像普通用户那样找到pm2):

sudo~ / .npm-global / pm2 dump&& 〜/ .npm-global / pm2 kill&& systemctl daemon-reload&& systemctl enable~ / .npm-global / pm2&& systemctl start~ / .npm-global / pm2

所以,

1)我不确定是否必须运行sudo $(which pm2) startup systemd -u $USERsudo $(which pm2) startup ubuntu -u $USER

2)我应该拥有什么PM2和PM2_HOME?

3)如何将~/.npm-global/bin添加到sudo路径,或者当我将pm2作为sudo.Note运行时,通常如何能够使用此路径,我不想改变/ etc / sudoers中。

1 个答案:

答案 0 :(得分:1)

我无法回答您的所有问题,但我遇到了同样的问题,这对我有用: http://www.anicehumble.com/2016/05/pm2-must-not-be-ran-with-sudo.html