首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何运行pm2,以便其他服务器用户能够访问该进程?

如何运行pm2,以便其他服务器用户能够访问该进程?
EN

Stack Overflow用户
提问于 2015-08-24 09:10:18
回答 6查看 47.7K关注 0票数 39

当我用 pm2启动Nodejs应用程序时,其他服务器用户无法访问.进程。

即使我从自定义目录启动pm2 (不是当前用户的~/,默认情况下pm2使用的是什么):

代码语言:javascript
运行
复制
HOME=/var/www pm2 start app.js

任何用户都可以访问目录(与~/相比,其他服务器用户仍然无法访问该进程。

当其他服务器用户执行pm2 list时,它会显示他正在运行0进程--但是有(由另一个用户启动)。当其他用户尝试HOME=/var/www pm2 list时,CLI抛出一个错误:

代码语言:javascript
运行
复制
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进程的用户才能重新启动它,…真奇怪。

EN

回答 6

Stack Overflow用户

发布于 2015-10-07 15:03:31

我们是怎么绕过这个的。

只需创建一个组

  • 创建一个新的组pm2或其他对您有用的名称 $ groupadd pm2
  • /var/www/文件夹组所有者更改为组pm2 $ chgrp -R pm2 /var/www
  • 将另一个用户(比如bob )添加到pm2中 $ usermod -aG pm2 bob

现在bob可以通过将pm2更改为/var/www来运行$HOME命令。

$ env HOME=/var/www pm2 list

或者(更好的)创建一个别名,就像@jcollum建议的那样

$ alias pm2='env HOME=/var/www pm2'

票数 29
EN

Stack Overflow用户

发布于 2016-09-11 15:02:28

好的,下面是我对同样问题的解决方案:

代码语言:javascript
运行
复制
# 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
票数 15
EN

Stack Overflow用户

发布于 2016-03-24 08:36:05

PM2似乎将数据保存在用户的'~/. PM2‘文件夹下,因此其他用户无法看到具有“pm2状态”的PM2进程。

我为PM2创建了一个新的linux用户,所有用户在启动Pm2进程之前都使用'su pm2user‘:

代码语言:javascript
运行
复制
$ sudo su pm2user
$ sudo pm2 start app.js

这是一种愚蠢的方法,但它很简单,而且效果很好。希望这会有所帮助:)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32178443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档