我想让node
和npm
可用于系统上的任何用户。
在我们的团队中,当有人从git更新代码时,他们会运行:sudo -u www-data git pull
无论它是什么项目,我们总是通过www-data
用户。
现在我们有了新的Node项目,需要做同样的事情。在我们的生产服务器上,我们无法依赖一个用户处理节点的所有内容 - 如果他明天离开会怎么样?
因此我们不使用NVM,而是将节点作为根目录安装为described here
一切正常,所有用户都看到node
和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-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仍然会进入我的主文件夹?
答案 0 :(得分:3)
您可以从某个用户指定全局安装目录:
在prefix = ~/.where_to_install
~/.npmrc
然后在PATH变量中添加可执行文件的正确位置(如~/.npm/bin
)
顺便说一句,你的案例中www-data的主目录是什么?