2013-03-17 121 views
9

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

有没有人有什么问题可能是一个好主意?该应用程序在本地运行良好。

在此先感谢您的帮助!

回答

14

我遇到同样的问题,凯文的解决方案为我解决了这个问题,但引入了另一个问题:由EB自动缩放产生的新实例也需要手动配置。这是我为解决这两个问题而对凯文的方法进行的修改:

另一种解决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

+2

极好的补充!谢谢 – 2013-03-24 14:31:41

+0

我还必须添加:'gcc','make','libxml2'和'libxml2-devel'来让我的npm install工作,下面是我的app.config中的yum部分:[npm install error ](https://forums.aws.amazon.com/thread.jspa?messageID=437520񪴐)。 – shaond 2013-03-28 22:01:06

+4

嗨@sHz,我又用不同的项目有同样的问题。我必须再次添加额外的软件包,但我真的想避免试错,找到正确的软件包。你是如何弄清楚你需要的依赖性的? – jakeorr 2013-04-24 14:08:43

1

我发现问题是什么。这是解释。

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

1. SSH与我的Node.js的弹性青苗例如

首先我相关的EC2实例,去掉“终止保护”你的EC2实例(点击你的EC2实例,然后查找“Change Termination Protection”,然后,你需要添加一个“KeyPair”到EC2实例,为此,进入ELB管理器并编辑你的ELB应用程序的配置文件。 ,检查此链接(SSH to Elastic Beanstalk instance

2.安装缺少的库 (在我的情况,因为bcrypt NPM包被需要它)

sudo yum update 

sudo yum install openssl-devel 

希望这有助于!

+1

准确地说我的问题和100%解决。请注意,在添加密钥对时,eb将一切红色标记为正常状态,并让仪表板看起来像它的死亡,直到全新的部署被推高为止 - 在您登录并修复问题之后。 – Catalyst 2013-11-26 05:58:18

+8

如果您正在阅读并遵循此操作,请避免在弹性beanstalk实例上手动安装包 - 当您自动缩放或重建环境时,它们不会在那里。相反,按照jakeorr的回答,将包添加到.ebextensions配置中,以便它自动安装。 – 2015-03-16 22:46:57

+2

downvoted。这违背了使用EB的目的。新配置的实例将失去这些更改。 – 2016-08-12 11:25:24

1

我遇到了这个问题,并通过简单地选择下一个更大的实例类型解决了这个问题。

相关问题