当我用 pm2启动Nodejs应用程序时,其他服务器用户无法访问.进程。
即使我从自定义目录启动pm2 (不是当前用户的~/
,默认情况下pm2使用的是什么):
HOME=/var/www pm2 start app.js
任何用户都可以访问目录(与~/
相比,其他服务器用户仍然无法访问该进程。
当其他服务器用户执行pm2 list
时,它会显示他正在运行0进程--但是有(由另一个用户启动)。当其他用户尝试HOME=/var/www pm2 list
时,CLI抛出一个错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: connect EACCES
at errnoException (net.js:905:11)
at Object.afterConnect [as oncomplete] (net.js:896:19)
因此,我想知道如何确保用户能够访问其他服务器用户运行的pm2进程?还是应该以不同的方式处理?
我想知道为什么每个服务器用户都能够让git pull
从Git存储库中部署最新的源代码,但之后不能重新启动pm2
进程?只有启动pm2
进程的用户才能重新启动它,…真奇怪。
发布于 2015-10-07 15:03:31
我们是怎么绕过这个的。
只需创建一个组
pm2
或其他对您有用的名称
$ groupadd pm2
/var/www/
文件夹组所有者更改为组pm2
$ chgrp -R pm2 /var/www
$ usermod -aG pm2 bob
现在bob可以通过将pm2更改为/var/www来运行$HOME命令。
$ env HOME=/var/www pm2 list
或者(更好的)创建一个别名,就像@jcollum建议的那样
$ alias pm2='env HOME=/var/www pm2'
发布于 2016-09-11 15:02:28
好的,下面是我对同样问题的解决方案:
# 1. Create user PM2 and set his password
sudo useradd -d /opt/pm2 -m -s /bin/bash pm2
sudo passwd pm2
# 2. Add users you want to provide the access to PM2 to PM2 group
sudo usermod -aG pm2 <username>
# Note: if you added yourself to pm2 group, perform logout and login back to the host machine
# 3. Set the PM2_HOME variable
sudo touch /etc/profile.d/pm2.sh
sudo sh -c 'echo "export PM2_HOME=\"/opt/pm2/.pm2\"" > /etc/profile.d/pm2.sh'
source /etc/profile.d/pm2.sh
# 4. Install the PM2
# Check the npm prefix if fail:
# https://docs.npmjs.com/misc/config#prefix
sudo npm install pm2 -g
# 5. Make startup script
sudo pm2 startup ubuntu -u pm2 --hp /opt/pm2
sudo systemctl enable pm2-pm2 && \
sudo systemctl start pm2-pm2 && \
sudo systemctl status pm2-pm2
# 6. Change permission of PM2_HOME
sudo chmod -v g+w /opt/pm2/.pm2
# 7. Check the PM2
pm2 status
发布于 2016-03-24 08:36:05
PM2似乎将数据保存在用户的'~/. PM2‘文件夹下,因此其他用户无法看到具有“pm2状态”的PM2进程。
我为PM2创建了一个新的linux用户,所有用户在启动Pm2进程之前都使用'su pm2user‘:
$ sudo su pm2user
$ sudo pm2 start app.js
这是一种愚蠢的方法,但它很简单,而且效果很好。希望这会有所帮助:)
https://stackoverflow.com/questions/32178443
复制相似问题