Amazon Elastic Beanstalk节点和npm非标准安装位置

时间:2013-08-13 16:22:15

标签: node.js amazon-web-services npm elastic-beanstalk

Amazon Beanstalk将node和npm安装到非常模糊的地方 - 如果EB决定使用更新版本的节点,我不确定它们是否会改变,这会导致我的应用程序崩溃。

这些是node和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脚本中的内容。

如何为这些可执行文件获取一致的文件路径?为什么EB这样做?

供参考,我尝试在NodeVersion中设置.ebextensions/app.config选项,但它对安装位置没有影响。

5 个答案:

答案 0 :(得分:56)

您可以使用以下命令将最新的节点 npm 二进制文件添加到$ PATH:

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

我无法弄清楚如何防止beanstalk命令再次重置$ PATH。

如果您如此倾向,可以使用与上述类似的命令创建符号链接,并将其用作cron脚本等中的参考点。

同意,这非常令人讨厌。

答案 1 :(得分:27)

继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"
  • 我找到了最新版本的node install binary
  • 从中我在/ bin目录中创建了一个符号链接(它是$ PATH的一部分)

答案 2 :(得分:8)

我们遇到类似的问题"找不到节点",尝试在容器命令中运行节点。在EC2实例上运行ps aux后,我们看到EB可以访问$NODE_HOME env var:

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)

答案 3 :(得分:3)

我在项目文件夹中创建了文件/.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"

答案 4 :(得分:1)

Amazon Elastic Beanstalk

访问节点命令

  1. sudo su
  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 / bin中
  6. node -v(enjoy :)