Linuxサーバーで実行されているノードにはいくつかの異なるバージョンがあり、私のサービスはノードv0.11.14に基づいています。ただし、他の人のコードは、下位バージョンのノード(v0.11より前)で実行する必要があります。そうしないと、サービスが停止します。そのため、グローバルノードのバージョンをv0.11として定義できません。ノードv0.11に基づいてサービスを監視するためにpm2を実行したいだけです。
グローバルノードバージョンを変更せずにノードv0.11でpm2を実行する方法はありますか?ありがとう
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'
run複数のバージョンを同時に実行します。 pm2
では、--interpreter
オプションを使用して、必要なノードバージョンへのパスを指定できます。
バージョンにn
を使用する場合は、n bin v4.2.0
を実行して、このノードバージョンへのパスを取得します。
次のスレッドをお読みください: 各アプリケーションに対してnvmを介して異なるバージョンのノードを使用
Nvmをハックしたかったと思いますが、時間を大幅に節約できると思います。
異なるノードバージョンで複数のアプリを実行できることを示すpm2所有者自体からのスレッドでコメントを見つけることができます。JSONconfの内容は次のとおりです。
{
apps : [{
name : 'API',
script : 'api.js',
interpreter : '[email protected]'
}]
}
上記のソリューションに興味がある場合は、こちらのドキュメントをお読みください: PM2-プロセスファイル
PM2は、プロセス管理ワークフローを強化します。プロセスファイルを介して、各アプリケーションの動作、オプション、環境変数、ログファイルを微調整できます。これは、マイクロサービスベースのアプリケーションに特に役立ちます。
サポートされている構成形式は、JavaScript、JSON、YAMLです。
インストール https://github.com/creationix/nvm
次に、特定のノードバージョンをインストールします。
nvm install 0.11.14
シェルよりも特定のバージョンを使用する:
nvm use 0.11.14
node -v // v0.11.14