web-dev-qa-db-ja.com

Amazon Elastic Beanstalkノードとnpmの非標準インストール場所

Amazon Beanstalkは、ノードと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である何かを見つけようとするとき、cronまたはmonitスクリプトの内容をgrepしたくありません。

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

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

40
dubeegee

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

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

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

あなたがそのように傾いているなら、おそらく上記と同様のコマンドでシンボリックリンクを作成し、それをcronスクリプトなどの参照ポイントとして使用できます。

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

56
Peter Johnson

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の一部です)
28
asaf am

「node not found」で同様の問題が発生し、コンテナコマンドでノードを実行しようとしました。 EC2インスタンスでps auxを実行した後、EBが$NODE_HOME env変数にアクセスできることがわかりました。

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'

(Alan Growに感謝)

9
dorianm

ファイルを作成しました/.ebextensions/node.config私のプロジェクトフォルダーで、ノードバージョンを宣言し、/ binフォルダーにシンボリックリンクを追加します。 .ebextensionsフォルダーの詳細については、次を参照してください。 http://docs.aws.Amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

option_settings:
  - option_name: NodeVersion
    value: 0.12.2
files:
  "/bin/node" :
    mode: "755755"
    content: "/opt/elasticbeanstalk/node-install/node-v0.12.2-linux-x64/bin/node"
  "/bin/npm" :
    mode: "755755"
    content: "/opt/elasticbeanstalk/node-install/node-v0.12.2-linux-x64/bin/npm"
3
Greg Tatum

Amazon Elastic Beanstalk

ノードコマンドへのアクセスのグランド

  1. 須藤す
  2. vipw
  3. nodejs:x:496:494 ::/tmp:/ bin/bash(変更を保存するには「:wq」)
  4. Sudo su nodejs
  5. PATH = $ PATH:ls -td /opt/elasticbeanstalk/node-install/node-* | head -1/置き場
  6. node -v(お楽しみください:)
1
Fupslot