使用pm2将节点0.12.x升级到nodejs 4.4.x

我使用PM2在生产环境中运行我的节点进程(在Ubuntu 14.04上)。 从节点0.12.x升级到nodejs 4.4.x后 ,运行节点(js)的命令从node更改为nodejs 。 我遵循节点资源分发安装说明中的说明。

 curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs 

即使新版本使用命令nodejs ,PM2仍然要调用node 。 我用这样的sim链接replace节点二进制文件来攻击它:

 mv /opt/bitnami/nodejs/bin/node /opt/bitnami/nodejs/bin/node.old ln -s /usr/bin/nodejs /opt/bitnami/nodejs/bin/node 

这似乎工作正常。 但是宁愿简单地改变PM2中的configuration来指向新的二进制文件。

使pm2兼容升级到nodejs 4.4.x的最好方法是什么?

更新 :这是服务器上存在node的地方

 root@ip-172-30-1-190:/usr/bin# find / -name "node" -type f /opt/bitnami/nodejs/bin/node /var/lib/dpkg/alternatives/node /usr/local/bin/node /usr/local/n/versions/node/4.4.1/bin/node 

我最初尝试使用本教程使用npm和n包升级节点, 该教程 /usr/local/n/versions/node/4.4.1/bin/node行。

如果你的系统上有nodenodejs ,你为什么要删除node
什么是/opt/bitnami/nodejs/bin/node ? 这是没有任何nodenodejs官方path。

在安装node.js 4.x的时候,Ubuntuconfiguration了你的系统,这样node就是新的nodejs二进制文件的一个替代名字,不会破坏现有的系统。 所以在你的情况下,你不应该创build符号链接。

这是你的系统应该如何configuration:

 root@server:~# update-alternatives --get-selections | grep node js auto /usr/bin/nodejs node auto /usr/bin/nodejs 

由于您手动删除了node链接,上述命令的输出可能是相同的,但可能是中断的。 除非你需要业余无线电分组无线电节点程序(节点) ,否则我build议你修复它,让Ubuntu维护确定默认命令的符号链接。

 # Remove the symlink and remove the rest of a broken "update-alterantive" configuration: unlink /opt/bitnami/nodejs/bin/node unlink /opt/bitnami/nodejs/bin/node.old update-alternatives --remove-all node update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10 

使用NVM,这是一个NodeJS包pipe理器,由许多贡献者和NodeJS社区接受。 https://github.com/creationix/nvm

这个问题也可以在Stackoverflow上得到解答: https : //stackoverflow.com/a/12570971/404699

警告nvm安装到用户的主目录中。 因此,如果您使用其他工具来pipe理节点进程(例如pm2) ,则需要指定节点进程的新名称( nodejs vs node )以便体验版本nvm集(如果从v0.12.x到例如v4.x)。 这是因为nvm仅在已安装的用户configuration文件下将node链接到nodejs