突然抽風想升級服務器的nodejs版本,原服務器版本運行的8.x,而目前(2019年5月30日)nodejs官方最新版本已經更新到了12.x了,穩定版本也更新到了10.x。
然后就折騰了一把去升級服務器的nodejs,具體步驟如下
第一步:下載nodejs
下載地址 https://nodejs.org/en/download/
選擇LTS版本,畢竟適用於大多數用戶,current版本是當前最新版,可嘗試nodejs的最新特性。
第二步:上傳服務器
將下載的node-v10.16.0-linux-x64.tar.xz文件上傳到服務器,你也可以解壓之后再上傳,但是解壓之后文件大小從一二十兆飆到四五十兆大小了,所以還是建議傳到服務器再解壓。
第三步:解壓
解壓命令:
#查看當前控制台所在目錄 pwd #如果不在上傳文件目錄,則需要cd到上傳目錄去解壓,也可以不cd過去,解壓命令直接帶上絕對路徑 cd xxxx #解壓,據說可忽略xz命令,直接執行tar命令 xz -d ./node.xxx.tar.xz #再解壓 tar -xvf ./node.xxx.tar #進入到解壓目錄下的bin目錄 cd ./node.xxx/bin #查看node版本 node -v #如果正常顯示版本號表示node成功解壓,否則重新再來吧
第四步:建立符號鏈接
ln -sf /node-xxx/bin/node /usr/bin/node ln -sf /node-xxx/bin/npm /usr/bin/npm
#任意目錄執行以下命令
node -v
npm -v
#如果正常顯示版本號表示node安裝成功!!
-s表示建立軟連接(符號鏈接),-f表示強制執行,-sf就表示建立符號鏈接,如果鏈接已存在則刪除重建!
這兒有大佬建議將符號連接到 /usr/local/bin/ 目錄,然而我試了沒成功,環境變量也有,如下:
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
所以還是建議將符號鏈接到 /usr/bin/ 下面!!!
以上升級nodejs則已完成,下面說說重新安裝pm2。
升級完nodejs之后pm2命令不存在了,但是運行中的pm2不受影響,意思就是如果你沒手動停止pm2,那么你的網站還是可以正常訪問的。
#新版本nodejs安裝pm2 npm install -g pm2
安裝成功之后再建立符號鏈接
ln -sf /node-xxx/bin/pm2 /usr/bin/pm2
更新pm2運行中的版本!!!可無縫銜接升級nodejs,升級之前不需要停掉pm2!!
#運行該命令即可更新運行中的版本
pm2 update
到此pm2版本已經更新,也可以再重啟下pm2
pm2 restart all
折騰到此的時候,又有點抽風了,因為pm2用了pm2-logrotate插件切割日志,就想看看這個插件安裝位置在哪,是否需要重新安裝!!
百度了一番,並沒有找到介紹pm2的插件安裝目錄的文章,因為pm2的插件安裝命令執行的是 pm2 install pm2-logrotate 跟npm install是有區別的!!
不揪出這個安裝目錄感覺心里總是不舒服,然后就各種搜索源碼,各種搜索關鍵字之后,終於找到了一段代碼,github源碼位置
代碼指出了這個安裝目錄位置,跟node環境變量PM2_HOME || HOME || HOMEPATH有關,你可以使用命令查看你自己的環境變量
#執行node命令,不帶任何參數 $ node > console.log(process.env) #即可查看node的所有環境變量
最終找到了我的pm2插件安裝目錄在 /root/.pm2/modules/ 下面躺着,也就是說:更新pm2之后可以不用重新安裝插件