Nik*_*iko 25 node.js multiple-users forever pm2 server
当我开始与我的应用程序的NodeJS PM2,其他服务器的用户都无法访问该进程.
即使我从自定义目录(不是当前用户~/,默认情况下pm2正在使用)启动pm2 :
HOME=/var/www pm2 start app.js
Run Code Online (Sandbox Code Playgroud)
任何用户都可以访问目录(与之相比~/,但是其他服务器用户仍然无法访问该进程.
当其他服务器用户这样做时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)
Run Code Online (Sandbox Code Playgroud)
所以我想知道如何确保用户能够访问其他服务器用户运行的pm2进程?或者它应该以不同的方式接近?
我想知道为什么每个服务器用户都能够git pull从Git存储库部署最新的源代码,但pm2之后无法重启进程?只有启动pm2进程的用户才能重启...很奇怪.
vin*_*ayp 12
这是我们绕过这个的方式.
只需创建一个组
创建一个新组pm2或任何适合您的名称
$ groupadd pm2
将/var/www/文件夹组所有者更改为组pm2
$ chgrp -R pm2 /var/www
将其他用户(比方说bob)添加到pm2
$ usermod -aG pm2 bob
现在bob可以通过将$ HOME更改为/ var/www来运行pm2命令
$ env HOME=/var/www pm2 list
或者(更好的是)创建@jcollum建议的别名
$ alias pm2='env HOME=/var/www pm2'
小智 8
PM2 似乎是将数据保存在用户的“~/.pm2”文件夹下,因此其他用户无法通过“pm2 status”看到您的 PM2 进程。
我为 PM2 创建了一个新的 linux 用户,所有用户在启动 Pm2 进程之前都使用“su pm2user”:
$ sudo su pm2user
$ sudo pm2 start app.js
Run Code Online (Sandbox Code Playgroud)
这是一种愚蠢的方法,但它很简单,而且效果很好。希望这会有所帮助:)
好的,这是我针对相同问题的解决方案:
# 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
Run Code Online (Sandbox Code Playgroud)
小智 5
假设您将 pm2 运行为www-data. 为了访问该 pm2 实例,我这样做:sudo -u www-data HOME=/var/www pm2 list例如。当然,您可以创建一个脚本(例如supm2)来为您执行此操作,这样您就可以supm2 list这样做。
我也遇到过类似的问题。原因可能是您没有所需的权限,或者您不拥有 pm2 创建的 pid 和 sock 文件。就我而言,当我从命令行而不是启动启动 pm2 时,它工作正常。当我使用启动时,它默认以 root 用户身份运行。所以 root 是 pid、sock 文件的所有者
| 归档时间: |
|
| 查看次数: |
19004 次 |
| 最近记录: |