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

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

我用PM2在生产环境中运行我的节点进程(在 Ubuntu 14.04 上)。从节点 0.12.xnodejs 4.4.x,运行node(js)的命令从 更改nodenodejs我按照 nodesource 分发安装说明中的说明进行操作。

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

PM2 仍然需要调用node,即使新版本使用了命令nodejs。我通过将节点二进制文件替换为 sim 链接来破解它,如下所示:

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

这似乎工作正常。但我更愿意简单地更改 PM2 中的配置以指向新的二进制文件。

使 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

n我最初尝试使用 npm 和包升级节点使用本教程,这解释了这/usr/local/n/versions/node/4.4.1/bin/node条线。

答案1

如果您的系统上有nodenodejs,为什么要删除node?这
是什么/opt/bitnami/nodejs/bin/node? 这既不是 也不是 的官方node路径nodejs

安装 node.js 4.x 时,Ubuntu 会配置您的系统,因此这node只是新nodejs二进制文件的替代名称,以免破坏现有系统。因此,对于您来说,您不必创建符号链接。

您的系统应这样配置:

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

由于您手动删除了node链接,上述命令的输出可能相同,但可能已损坏。除非您需要业余分组无线电节点程序(节点),我建议你修复它并让 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

答案2

使用 NVM,它是一个拥有众多贡献者并得到 NodeJS 社区认可的 NodeJS 包管理器。 https://github.com/creationix/nvm

Stackoverflow 上也回答了这个问题: https://stackoverflow.com/a/12570971/404699

警告nvm安装到用户的主目录中。因此,如果您使用其他工具来管理节点进程,例如pm2,则需要指定节点进程的新名称(nodejsvs node)才能体验 nvm 设置的版本(例如,如果从 v0.12.x 升级到 v4.x)。这是因为 nvm 仅链接nodenodejs已安装用户的配置文件下。

相关内容