42

Amazon Beanstalk は node と npm を非常に目立たない場所にインストールします。また、EB がより新しいバージョンのノードを使用することを決定した場合、それらが変更されないかどうかはわかりません。これにより、アプリケーションが破損する可能性があります。

ノードと npm の場所は次のとおりです。

/opt/elasticbeanstalk/node-install/node-v0.8.24-linux-x64/bin/node
/opt/elasticbeanstalk/node-install/node-v0.8.24-linux-x64/bin/npm

0.8.24部分の変更が心配で、通常は/usr/bin/XXX.

これらの実行可能ファイルの一貫したファイルパスを取得するにはどうすればよいですか? なぜEBはこれを行うのですか?

参考までに、 でNodeVersionオプションを設定してみ.ebextensions/app.configましたが、インストール場所には影響しませんでした。

4

5 に答える 5

62

次のようなコマンドを使用して、最新のノードnpmバイナリを $PATH に追加できます。

PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin

Beanstalk コマンドが $PATH を再びリセットするのを防ぐ方法がわかりませんでした。

どうしてもやりたい場合は、上記のようなコマンドでシンボリック リンクを作成し、それを cron スクリプトなどの参照ポイントとして使用できます。

同意しました、それは非常に迷惑です。

于 2013-09-25T17:09:50.260 に答える
30

Peter Johnson と Greg Tatum の返信に従って、最新のノード実行可能ファイルへのシンボリック リンクを作成しました。

container_commands:
  01_node_binary:
    command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /bin/node"
  • ノード インストール バイナリの最新バージョンを見つけました
  • それから、/bin ディレクトリ ($PATH の一部) にシンボリック リンクを作成します。
于 2015-07-26T13:13:09.970 に答える
10

コンテナ コマンドでノードを実行しようとすると、「ノードが見つかりません」という同様の問題が発生しました。ps auxEC2 インスタンスで実行した後、EB が環境変数にアクセスできることがわかりました$NODE_HOME

su -s /bin/sh -c PATH=$PATH:$NODE_HOME/bin $EB_NODE_COMMAND 2>&1 nodejs

これは .ebextensions で使用できます。例:

container_commands:
  your_node_script:
    command: 'env PATH="$PATH:$NODE_HOME/bin" ./bin/your_node_script'

(アラン・グローに感謝)

于 2016-10-06T20:32:39.807 に答える