【问题标题】:How to run 2 application with different node version using pm2如何使用 pm2 运行 2 个具有不同节点版本的应用程序
【发布时间】:2022-08-18 20:16:48
【问题描述】:

我正在为我的应用程序遵循微服务架构。

我在节点上运行了 7 个微服务,还有一些在 python 上运行。 2 个微服务有多个实例(即以集群模式运行)。

所有微服务都由 PM2 管理。

现在我正在一一升级服务的节点版本。无论我在互联网上看到什么,它都说我只能在 fork 模式下使用 2 个版本。如何在集群模式下在两个不同版本上运行 pm2 服务?

我不想使用负载均衡器或 docker。

    标签: javascript node.js microservices pm2 node-dev


    【解决方案1】:

    您可以使用 nvm 来管理您需要的不同节点版本,它们用于启动节点应用程序,这样做:

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

    当然,根据您的情况替换 node nvm path 。

    用于安装 nvm:https://github.com/nvm-sh/nvm#installing-and-updating

    一旦安装安装节点版本:

    // Install last 16.x
    nvm install 16
    
    // Spécific version
    nvm install 16.14.2
    
    // List installed 
    nvm list
    

    更新

    如果--interpreter 在集群模式下不可用,你可以试试这个技巧。

    1 - localize pm2 binary with ``which pm2`` command
    2 - Change directory to the pm2 binary directory: ``cd /path/to/pm2``
    3 - make a copy of pm2 binary: ``cp pm2 pm2-node-xx`` replace xx with node version you want
    4 - verify that copied binary have executable flag, if not make a ``chmod +x`` on it
    5 - edit the copied binary file an on first line modify the shebang. Replace ``#!/usr/bin/env node`` by ``#!/home/ubuntu/.nvm/versions/node/v13.14.0/bin node``
    

    完成此操作后,您应该有一个使用另一个节点版本的新 pm2 二进制文件。您将能够使用pm2-node-xx start app.js 启动节点脚本。

    您将运行两个 pm2 守护程序,每个节点版本一个。您可以为您需要的所有节点版本重现此配方。

    【讨论】:

    • 我试过这个,但在集群模式下,它只使用一个版本,即使在使用 nvm 更改节点版本之后也是如此。
    • 您是否更改了--interpreter 路径参数中的版本号?
    • 我已经用另一种运行摆脱集群模式的多节点版本的方式更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多