pm2不在ubuntu启动
我想在启动时运行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
并手动执行(因为它不能像普通用户那样findpm2):
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 $USER
或sudo $(which pm2) startup ubuntu -u $USER
2)我应该有什么PM2和PM2_HOME?
3)如何将~/.npm-global/bin
到sudopath,或者当我将pm2作为sudo运行时,一般如何使用这个path。注意,我不想改变/ etc / sudoers。
我不能回答你所有的问题,但是我遇到了同样的问题,这对我有用: http : //www.anicehumble.com/2016/05/pm2-must-not-be-ran-with-sudo.html