我刚刚安装了pm2(在Debian 9上),我需要运行几个用户的NodeJS服务器。每个用户都有自己的NodeJS服务器,我需要在它们下运行。不是根。
例如我有用户“user1”:
pm2 startup
pm2仍适用于user1,但重启后我无法控制pm2和Iam收到此错误:
[PM2][ERROR] Permission denied, to give access to current user:
$ sudo chown user1:user1 /home/user1/.pm2/rpc.sock /home/user1/.pm2/pub.sock
如果我在root上执行此命令,我可以再次控制user1上的pm2,但所有NodeJS服务器都以root身份执行!!
我需要在每次重启时'授予'权限..
如何解决这个问题?
答案 0 :(得分:0)
我发现自己为什么不行。我的用户名是dot(domain.com),systemd没有将其识别为有效用户名...因为该服务是在root下启动的。
快速解决方法是在systemd中找到自动生成的服务,并将用户名替换为id -u <user>
找到的用户ID
答案 1 :(得分:0)
我不确定以下方法是否有任何风险,但确实解决了我面临的同样问题。
1- open new terminal (fresh, without sudo permission)
2- sudo chmod -R 777 /home/user1/.pm2 (gives permission to the .pm2 folder)
3- pm2 start index.js (Note that there is no sudo here)
4- pm2 save
5- pm2 startup
6- Restart your computer and check pm2 monit
7- It should list your index process now. If not, try from 1-5, 8, and then 6.
8- paste the command listed in step 5
答案 2 :(得分:0)
您可能使用root启动了pm2任务。因此,通过以下方式检查您正在使用的系统进程:
sudo systemctl -a
如果找到一个单元名称pm2-root,则需要将其删除。运行命令sudo systemctl stop
pm2-root和sudo systemctl disable pm2-root
。然后使用您的用户名开始该过程。
请确保您使用 pm2-sammy ,并且将 sammy 作为用户名。