背景: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了。