Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Amazon Elastic Beanstalk节点和npm非标准安装位置_Node.js_Amazon Web Services_Npm_Amazon Elastic Beanstalk - Fatal编程技术网

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

Node.js Amazon Elastic Beanstalk节点和npm非标准安装位置,node.js,amazon-web-services,npm,amazon-elastic-beanstalk,Node.js,Amazon Web Services,Npm,Amazon 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部分的变化,我不想在cro

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
部分的变化,我不想在cron或monit脚本中查找通常只是
/usr/bin/XXX
的内容

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


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

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

PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
我不知道如何防止beanstalk命令再次重置$PATH

如果您愿意,您可能可以使用类似于上面的命令创建一个符号链接,并将其用作cron脚本等中的参考点


同意,这非常烦人。

我在我的项目文件夹中创建了文件
/.ebextensions/node.config
,以声明我的节点版本并将符号链接添加到/bin文件夹。有关.ebextensions文件夹的详细信息,请参见:


在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的一部分)

我们在“未找到节点”方面遇到了类似的问题,试图在容器中运行节点命令。在EC2实例上运行
ps aux
后,我们看到EB可以访问
$NODE\u 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)

亚马逊弹性豆茎 “访问节点”命令
  • sudo su
  • 威普
  • nodejs:x:496:494::/tmp:/bin/bash(“:wq”保存更改)
  • 小须藤
  • PATH=$PATH:
    ls-td/opt/elasticbeanstalk/node-install/node-*| head-1
    /bin
  • 节点-v(享受:)

  • 我假设这些位置不在路径中?是的,这是正确的,它们不是。下次部署应用程序时,此脚本将失败Hanks@h-kippo我更新了它,因此它会强制创建符号链接(如果它已经存在)(如果这是问题)为了澄清,应该将其放入类似
    .ebextensions/nodepath.config
    ,的文件中,对吗?当我使用ssh连接到eb实例时,这确实允许我从任何路径运行npm和node,但由于某些原因,该命令永远不会“接受”参数。例如,
    npm install
    只列出了npm的所有可能选项。这是因为这些选项被评估为shell脚本,而不是符号链接。尝试
    模式:“100755”
    代替。根据最新文档,您必须以“120xxx”开始创建符号链接:这似乎比公认的答案更可靠,因为它使用节点版本设置,而不仅仅是选择最近安装的版本(或任意排序顺序)
    命令:“env PATH”=“$PATH:$NODE_HOME/bin”sh-c'npm run build'
    工作正常。谢谢这对我来说似乎不起作用,因为NODE_HOME似乎没有设置:(堆栈溢出没有呈现所需的反向标记,(请参阅Peter Johnson的回答)或者只需使用dorianm的answersudo ln-sf
    ls-td/opt/elasticbeanstalk/NODE install/NODE-*| head-1中建议的环境变量
    $NODE\u HOME
    /bin/NODE/bin/NODE
    container_commands:
      your_node_script:
        command: 'env PATH="$PATH:$NODE_HOME/bin" ./bin/your_node_script'