web-dev-qa-db-ja.com

特定のノードバージョンでpm2を実行するにはどうすればよいですか?

Linuxサーバーで実行されているノードにはいくつかの異なるバージョンがあり、私のサービスはノードv0.11.14に基づいています。ただし、他の人のコードは、下位バージョンのノード(v0.11より前)で実行する必要があります。そうしないと、サービスが停止します。そのため、グローバルノードのバージョンをv0.11として定義できません。ノードv0.11に基づいてサービスを監視するためにpm2を実行したいだけです。

グローバルノードバージョンを変更せずにノードv0.11でpm2を実行する方法はありますか?ありがとう

14
hwoarangzk

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'
11
KEN

run複数のバージョンを同時に実行します。 pm2では、--interpreterオプションを使用して、必要なノードバージョンへのパスを指定できます。

バージョンにnを使用する場合は、n bin v4.2.0を実行して、このノードバージョンへのパスを取得します。

7
Sylvain

次のスレッドをお読みください: 各アプリケーションに対してnvmを介して異なるバージョンのノードを使用

Nvmをハックしたかったと思いますが、時間を大幅に節約できると思います。

異なるノードバージョンで複数のアプリを実行できることを示すpm2所有者自体からのスレッドでコメントを見つけることができます。JSONconfの内容は次のとおりです。

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

上記のソリューションに興味がある場合は、こちらのドキュメントをお読みください: PM2-プロセスファイル

PM2は、プロセス管理ワークフローを強化します。プロセスファイルを介して、各アプリケーションの動作、オプション、環境変数、ログファイルを微調整できます。これは、マイクロサービスベースのアプリケーションに特に役立ちます。

サポートされている構成形式は、JavaScript、JSON、YAMLです。

6
Dávid Horváth

インストール https://github.com/creationix/nvm

次に、特定のノードバージョンをインストールします。

nvm install 0.11.14

シェルよりも特定のバージョンを使用する:

nvm use 0.11.14

node -v // v0.11.14
0
Yevgen Safronov