Linux 生产服务器上的NodeJS-权限

Linux 生产服务器上的NodeJS-权限,linux,node.js,git,ubuntu,Linux,Node.js,Git,Ubuntu,我想让节点和npm可用于系统上的任何用户 在我们的团队中,当有人从git更新代码时,他们会运行:sudo-u www-data-git-pull 因此,无论是什么项目,我们总是通过www-datauser 现在我们有了新的节点项目,需要做同样的事情。在我们的生产服务器上,我们不可能依靠一个用户来处理节点的所有事情——如果他明天离开呢 因此,我们不使用NVM,而是将节点作为根安装为 一切正常,所有用户都可以看到节点和npm可执行文件。当我们真正尝试使用它们时,问题就开始了 您要做的是: cd /v

我想让
节点
npm
可用于系统上的任何用户

在我们的团队中,当有人从git更新代码时,他们会运行:
sudo-u www-data-git-pull

因此,无论是什么项目,我们总是通过
www-data
user

现在我们有了新的节点项目,需要做同样的事情。在我们的生产服务器上,我们不可能依靠一个用户来处理节点的所有事情——如果他明天离开呢

因此,我们不使用NVM,而是将节点作为根安装为

一切正常,所有用户都可以看到
节点
npm
可执行文件。当我们真正尝试使用它们时,问题就开始了

您要做的是:

cd /var/www/node_project
sudo -u www-data git pull
sudo -u www-data npm install
上一个命令失败,因为
npm
正在尝试在我的主目录中写入
lock
文件。因此:
/home/user/.npm
而不是全局某个地方或
/var/www/.npm
,后者将是www数据用户的主目录

与此类似,安装后

sudo npm安装-g打字

然后运行
sudo-uwww-data-typings install
您会收到一个错误,因为它试图写入
/home/user/.config/configstore/insight-typings.json


有人能详细说明一下如何在服务器上正确安装node吗?如果我运行
sudo-u www-data
为什么npm ins仍然进入我的主文件夹?

您可以从某些用户处指定全局安装目录:

~/.npmrc

然后将PATH变量添加到可执行文件的正确位置(如
~/.npm/bin


顺便说一句,在您的情况下,www数据的主目录是什么?

但我不希望每个用户群安装全局软件包。我希望为每个人安装它们,目前正在运行,唯一的问题是全局包仍在试图将某些内容写入用户的本地目录和错误的用户。如果我以用户user1
sudo-uwww-data-tsc
tsc的身份运行命令,那么tsc应该将它需要的任何内容写入www-data-home目录,而不是user1-home目录。www数据主目录是
/var/www
hmm,
用户
用户与www数据具有相同的id?两个用户如何具有相同的id?实际上,在UNIX中,它们是两个不同的操作系统用户。这很奇怪,为什么
sudooneuser
想从另一个用户那里做点什么呢?…我检查了一下,只是为了确定一下<代码>www数据具有id 33
user1
具有id 1003