Amazon Elastic Beanstalk上的Node.js部署问题

时间:2013-03-17 12:47:00

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

我正在尝试使用Amazon Elastic Beanstalk服务部署node.js应用。按照本教程(http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.sdlc.html),我设法部署了应用程序。但是,一旦在亚马逊上传,该应用程序就无法启动。调查日志会显示以下错误:“无法运行npm install”。

有谁知道问题可能是什么?该应用程序在本地运行良好。

提前感谢您的帮助!

4 个答案:

答案 0 :(得分:15)

我遇到了同样的问题,Kevin的解决方案为我解决了问题,但又引入了另一个问题:EB为自动扩展生成的新实例也需要手动配置。这是我为解决这两个问题所做的Kevin方法的修改:

解决Kevin问题的另一种方法是将所需的包添加到应用程序的配置文件中。使用扩展名.config(例如,myapp.config)创建配置文件,并将其放在源包的.ebextensions顶级目录中。为了要求openssl-devel包,请在配置文件中包含以下行:

packages:
    yum:
        openssl-devel: []

有关配置文件的位置的详细信息:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_custom_container.html

有关在配置文件中包含软件包(以及更多)的详细信息: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

答案 1 :(得分:1)

我发现了问题所在。这是解释。

npm包管理器无法安装某些包的原因是由于某些包需要首先安装linux库(即OpenSSL-devel)。为了解决这个问题,我不得不:

<强> 1。 SSH到我的与Node.js Elastic Beanstalk实例关联的EC2实例

首先,删除EC2实例上的“终止保护”(单击您的EC2实例,然后查找“更改终止保护”。然后,您需要向EC2实例添加“KeyPair”。为此,请转到ELB管理器并编辑ELB应用程序的配置文件。有关详细说明,请查看此链接(SSH to Elastic Beanstalk instance

<强> 2。安装缺少的库 (在我的情况下,因为 bcrypt npm包需要它)

sudo yum update

sudo yum install openssl-devel

希望这有帮助!

答案 2 :(得分:1)

我遇到了这个问题,只需选择下一个更大的实例类型就可以解决它。

答案 3 :(得分:0)

我发现了一个类似的问题,对我来说,错误是因为未成功安装节点软件包,所以当我从我的package.json中删除该节点软件包时,因为我真的不需要它,所以它起作用了!