【问题标题】:How to deploy a node.js app into AWS Elastic Beanstalk如何将 node.js 应用程序部署到 AWS Elastic Beanstalk
【发布时间】:2015-07-17 15:35:01
【问题描述】:

我正在尝试通过 AWS 控制台在 AWS Elastic Beanstalk 中部署示例 Nodejs 应用程序。我的 Nodejs 应用程序仅包含 HelloWorld 消息。 我的问题是单击 Elastic Beanstalk URL 时没有收到 Hello world 消息。我还检查了日志,但 Nodejs.logs 和 Error.logs 中没有错误消息。 当我检查 Elastic Beanstalk URL 时收到 "Connection Refused-due to Internal Server Error" 。我正在使用 JSON 模板通过控制台创建堆栈,我的模板包含应用程序、应用程序版本、环境和 ConfigurationTemplate 资源类型。我的 ConfigurationTemplate 资源类型 包含以下选项设置,如下所示-

"OptionSettings": [

                    {
                        "Namespace": "aws:autoscaling:asg",
                        "OptionName": "MinSize",
                        "Value": "1"
                    },
                    {
                        "Namespace": "aws:autoscaling:asg",
                        "OptionName": "MaxSize",
                        "Value": "2"
                    },
                    {
                        "Namespace": "aws:autoscaling:launchconfiguration",
                        "OptionName": "EC2KeyName",
                        "Value": { "Fn::FindInMap": [ "Environments",{"Ref": "EnvironUsed"},"InstanceKeyName" ]  }
                    },
                    {
                            "Namespace": "aws:autoscaling:launchconfiguration",
                            "OptionName": "IamInstanceProfile",
                            "Value": {"Fn::FindInMap": ["Environments",{"Ref": "EnvironUsed"},"IamRoleProfile"]}
                    },
                    {
                        "Namespace": "aws:autoscaling:launchconfiguration",
                        "OptionName": "InstanceType",
                        "Value": "t2.micro"
                    },
                    {
                        "Namespace": "aws:autoscaling:launchconfiguration",
                        "OptionName": "SecurityGroups",
                        "Value": { "Fn::FindInMap": [ "Environments",{"Ref": "EnvironUsed"},"BeanstalkSecurityGroup" ] }
                    },
                    {
                        "Namespace": "aws:ec2:vpc",
                        "OptionName": "VPCId",
                        "Value": { "Fn::FindInMap": ["Environments", {"Ref": "EnvironUsed"},"VPC" ]}
                    },
                    {
                        "Namespace": "aws:ec2:vpc",
                        "OptionName": "Subnets",
                        "Value": { "Fn::FindInMap": [ "Environments",{"Ref": "EnvironUsed"},"PrivateSubnet"]}
                     },
                    {
                        "Namespace": "aws:ec2:vpc",
                        "OptionName": "ELBSubnets",
                        "Value": { "Fn::FindInMap": [ "Environments", {"Ref": "EnvironUsed"}, "PrivateSubnet" ]}
                    },
                    {
                        "Namespace": "aws:ec2:vpc",
                        "OptionName": "ELBScheme",
                        "Value": "internal"
                    },
                    {
                        "Namespace": "aws:elasticbeanstalk:environment",
                        "OptionName": "EnvironmentType",
                        "Value": "LoadBalanced"
                    },
                    {
                        "Namespace": "aws:autoscaling:trigger",
                        "OptionName": "MeasureName",
                        "Value": "CPUUtilization"
                    },
                    {
                        "Namespace": "aws:autoscaling:trigger",
                        "OptionName": "Unit",
                        "Value": "Percent"
                    },
                    {
                        "Namespace": "aws:autoscaling:trigger",
                        "OptionName": "UpperThreshold",
                        "Value": "50"
                    },
                    {
                        "Namespace": "aws:autoscaling:trigger",
                        "OptionName": "LowerThreshold",
                        "Value": "49"
                    }
                ],

以下是我的示例 Nodejs 应用程序 -

var express = require('express');
var http=require('http');

var app = express();


app.set('port', process.env.PORT || 8081);


app.get('/',function(req,res){

 res.send('Hello World');

});


http.createServer(app).listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
});

由于我对这个 AWS 服务比较陌生,请指导我如何解决这个错误,因为我按照 AWS 文档中给出的所有说明来创建这个 Elastic Beanstalk 来部署应用程序。

【问题讨论】:

  • 请回答这个问题。
  • 我也有这个问题,有解决办法吗?

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


【解决方案1】:

我会检查安全组允许的端口 8081(或其他)上的连接

【讨论】:

  • 对不起,我没明白你的意思。请你解释清楚为什么 Elastic beanstalk URL 不起作用。
  • 安全组(在你的例子中是 BeanstalkSecurityGroup)代表了管理网络流量的规则,就像防火墙一样。默认情况下,它们非常严格,您可能必须允许端口上的连接。
  • 但是我使用的是默认安全组,它允许所有流量和所有端口。这里的问题是当我点击弹性 beanstalk URL 时 servcie 没有命中,因为我没有在日志中收到任何错误。不是了解为什么服务没有点击这里并且 EB URL 需要很长时间才能显示消息,例如 - “内部服务器错误 - 连接终止”。请帮我解决这个问题。
  • 对不起,如果不是安全组,我不知道会是什么。
猜你喜欢
  • 2013-12-15
  • 2021-02-11
  • 2018-12-07
  • 2022-06-11
  • 2014-12-25
  • 2018-07-13
  • 2018-04-21
  • 2017-04-14
  • 2016-09-05
相关资源
最近更新 更多