Linux 上安装 nvm node npm pm2 全家桶

Dianthe ·
更新时间:2024-11-14
· 941 次阅读

背景:nodejs中台服务需要迁移到新的服务器上,为此需要搭建一套用pm2管理node服务的环境。统一用户名为kredit。

安装node/npm

方法一:下载安装包,可用wget下载。但是安装目录什么的比较麻烦,所以考虑用自动化安装工具。

方法二:自动化安装工具apt-get

apt-get 下载安装:

sudo apt-get install nodejs

但是下载的node/npm版本异常的老。原本以为是源的问题(因为源是指向公司内网库的),把源修改成阿里的源再试,还是老版本。
查资料说apt再下一些插件可以提高版本,但是对Ubuntu 16.04.6版本好像不太ok,没做尝试。先把apt下载的低版本node卸掉吧(https://www.jianshu.com/p/53a1e12bb790)

方法三(推荐):安装nvm,再由此安装node/npm。

linux 安装 nvm

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

默认安装在用户目录下 /home/kredit/.nvm 

由 nvm 安装指定版本 node(顺带会把匹配的 npm 安装了)

$ nvm install v12.14.1

由 node 全局安装 pm2 

npm install pm2 -g
配置环境变量

假如你是用 kredit 用户完成这一切的,那么现在只有kredit用户有node/npm的环境变量。

但是我们的目标是root(即sudo)和其他用户都有node/npm环境变量。

自然考虑在全局变量文件 /etc/profile 里添上

sudo vim /etc/profile
#文件末尾加上
export PATH=$PATH:/home/kredit/.nvm/versions/node/v12.14.1/bin

然蛾,当你执行如下语句发现如下结果,就会得到以下结论。

root用户,node指向/usr/bin/node。是默认的配置,哪里改还没研究。
# which node		    /usr/bin/node
$ sudo which node           /usr/bin/node
而普通用户,因为etc/profile的配置,指向/home/kredit/.nvm/versions/node/v12.14.1/bin/node
$ which node		    /home/kredit/.nvm/versions/node/v12.14.1/bin/node
$ whereis node              /home/kredit/.nvm/versions/node/v12.14.1/bin/node

但是,/usr/bin/node下根本没有node和npm,我们的执行文件目录在 /home/kredit/.nvm/versions/node/v12.14.1/bin上。

所以当你执行sudo npm -v的时候会报错 “/usr/bin/env: node: No such file or directory”。

解决办法是,创建一个软连接将自己的node的执行文件指到/usr/bin/node上,于是修改如下:

sudo ln -s /home/kredit/.nvm/versions/node/v12.14.1/bin/npm /usr/bin/npm
sudo ln -s /home/kredit/.nvm/versions/node/v12.14.1/bin/node /usr/bin/node

好了,现在无论是公共用户kredit,还是小伙伴自己登陆的账户,还是root,都可以有全局变量node和npm了。


作者:landiyaaa



npm 全家 Linux 安装 pm2 nvm node

需要 登录 后方可回复, 如果你还没有账号请 注册新账号