生产服务器上的NodeJS - 权限

时间:2016-02-26 12:59:07

标签: linux node.js git ubuntu

我想让nodenpm可用于系统上的任何用户。

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

无论它是什么项目,我们总是通过www-data用户。

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

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

一切正常,所有用户都看到nodenpm可执行文件。当我们真正尝试使用它们时会出现问题。

您想要做的是:

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-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仍然会进入我的主文件夹?

1 个答案:

答案 0 :(得分:3)

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

prefix = ~/.where_to_install

中设置~/.npmrc

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

顺便说一句,你的案例中www-data的主目录是什么?