0

我需要安装一个单独的框架,该框架是我在弹性 beantalk 上运行的节点 js 应用程序中创建的。

我尝试将脚本放在我的主 package.json 文件中,但安装时出现权限错误。

所以我创建了一个配置文件并尝试从 container_commands 运行 npm install。它不想运行 npm,因为它说命令丢失。我尝试将正确的环境路径变量添加到 npm,它在通过 ssh 手动完成时工作,但它给出了相同的错误,即找不到 npm 命令。

所以最后。

我通过安装应用程序的 ebextension 创建了一个 bash 脚本,然后从 container_commands 运行该脚本。

该脚本被正确创建但从未运行。如果我 ssh 进入实例并作为 sudo 手动执行它,它就可以工作。该应用程序部署没有错误,但似乎从未执行脚本,我知道这一点,因为从未创建 node_modules 文件夹。

我不确定在我的日志中在哪里寻找错误,当我尝试时,我没有发现任何有用的东西。

这是我的 ebextension:

files:
    "/tmp/install_application.sh":
        mode: "000755"
        owner: root
        group: root
        content: |
            #!/bin/bash
            export PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
            eval "cd /var/app/current/library/server && npm install --production"
            eval "cd /var/app/current && npm install --production"

container_commands:
    00-install-application:
    command: "sh /tmp/install_application.sh"
4

1 回答 1

1

我设法找到了答案。我对脚本有一些问题。

  1. 旧脚本仍位于先前尝试的 hooks 文件夹中。
  2. 我在项目尚未解压缩之前触发了脚本,或者我在项目部署后触发了脚本。
  3. 我正在将模块安装到最终目的地 /var/app/current,一旦安装了部署的应用程序,它就会被覆盖。

这是最终的脚本。

files:
   "/opt/elasticbeanstalk/hooks/appdeploy/enact/00-install-application.sh":
   mode: "000755"
   owner: root
   group: root
   content: |
       #!/bin/bash
       PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
       cd "/tmp/deployment/application/library/server"
       npm install --production
于 2016-06-16T14:07:28.303 回答