我用PM2在生产环境中运行我的节点进程(在 Ubuntu 14.04 上)。从节点 0.12.x到nodejs 4.4.x,运行node(js)的命令从 更改node
为nodejs
。 我按照 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
如果您的系统上有node
和nodejs
,为什么要删除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,则需要指定节点进程的新名称(nodejs
vs node
)才能体验 nvm 设置的版本(例如,如果从 v0.12.x 升级到 v4.x)。这是因为 nvm 仅链接node
到nodejs
已安装用户的配置文件下。