生产服务器上的 NodeJS - 权限

Tom*_*mas 5 linux git ubuntu node.js

我希望系统上的任何用户都可以使用它nodenpm

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

所以无论是什么项目,我们总是要经过www-data用户。

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

因此,我们不使用 NVM,而是按照此处所述以 root 身份安装 Node

一切都很好,所有用户都可以看到node并且npm可执行。当我们真正尝试使用它们时,问题就开始了。

你想做的是:

cd /var/www/node_project
sudo -u www-data git pull
sudo -u www-data npm install
Run Code Online (Sandbox Code Playgroud)

这在最后一个命令上失败,因为npm正在尝试lock在我的主目录中写入文件。所以:/home/user/.npm而不是全局某个地方或者/var/www/.npmwww-data 用户的主目录。

类似的,安装后

sudo npm install -g typings

然后运行sudo -u www-data typings install你会得到一个错误,因为它正在尝试写入/home/user/.config/configstore/insight-typings.json

有人可以详细说明如何在服务器上实际正确安装节点吗?如果我运行,sudo -u www-data为什么 npm ins 仍然进入我的主文件夹?

loa*_*age 2

您可以指定某个用户的全局安装目录:

设置prefix = ~/.where_to_install~/.npmrc

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

顺便说一句,您的情况下 www-data 的主目录是什么?