我正在尝试在启动时运行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时,它说它无法转储(可能是因为转储仅存在于〜/ .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守护进程重新加载&& 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)如何在sudo路径中添加
~/.npm-global/bin
,或者当我将pm2作为sudo运行时,通常如何使用该路径。注意,我不想更改/ etc / sudoers。 最佳答案
我无法回答您所有的问题,但是我遇到了同样的问题,这对我有用:
http://www.anicehumble.com/2016/05/pm2-must-not-be-ran-with-sudo.html
关于node.js - pm2无法在ubuntu中启动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38294100/