如何在某个节点版本上运行 pm2?

问题描述 投票:0回答:5

我们的linux服务器上运行了几个不同版本的node,而我的服务是基于node v0.11.14的。但是,其他人的代码必须在较低版本的节点(低于 v0.11)上运行,否则他们的服务将停止服务。所以我无法将全局节点版本定义为 v0.11。我只想运行 pm2 来监控我基于节点 v0.11 的服务。

是否可以在不更改全局节点版本的情况下在节点 v0.11 上运行我的 pm2?谢谢

node.js pm2
5个回答
45
投票

使用 pm2 并使用带有节点版本绝对路径的 --interpreter 标志指定节点版本:

sudo pm2 start app.js --interpreter=/home/ken/.nvm/v4.4.2/bin/node

sudo pm2 start app.js --interpreter=/home/ken/.nvm/v7.4.0/bin/node

等..

如果您在我提到的任何地方更改节点版本

--interpreter="***.."
,该应用程序将以准确的节点版本运行。

完成上述验证方法后,请使用以下命令

sudo pm2 show 'app name'

12
投票

请阅读以下主题: 通过 nvm 为每个应用程序使用不同版本的节点

我相信你想破解 nvm,但相信我它可以节省你的大部分时间。

您可以在 pm2 所有者本身的线程中找到一条评论,其中声明您可以在不同节点版本上运行多个应用程序,这是一个 JSON conf 内容:

{ 
  apps : [{
    name : 'API',
    script : 'api.js',
    interpreter : '[email protected]'
 }]
}

如果您对上述解决方案感兴趣,请阅读此处的文档: PM2 - 过程文件

PM2 增强您的流程管理工作流程。它允许您通过进程文件微调每个应用程序的行为、选项、环境变量和日志文件。它对于基于微服务的应用程序特别有用。

支持的配置格式有Javascript、JSON和YAML。


11
投票

同时运行多个版本。在

pm2
中,您可以使用
--interpreter
选项并指定您想要的节点版本的路径。

如果您使用

n
作为版本运行
n bin v4.2.0
以获取此节点版本的路径。


0
投票

如果你想让pm2使用特定版本的节点,在你的

ecosystem.config.js
文件中使用以下两个指令:

{
    ...
    exec_mode: "fork",
    interpreter: "[email protected]", // or any installed version
    ...
}

必须使用

exec_mode: "fork"
,否则您的节点应用程序将被创建为您的主 pm2 进程的子进程,该进程使用系统当前使用的节点版本。


-3
投票

安装https://github.com/creationix/nvm

然后安装特定节点版本:

nvm install 0.11.14

比在 shell 中使用特定版本:

nvm use 0.11.14

node -v // v0.11.14
© www.soinside.com 2019 - 2024. All rights reserved.