有没有人成功地使用Amazon OpsWorks部署节点(快速)应用程序?

正如标题所示,我一直在玩Amazons新的OpsWorkspipe理系统,但是我一直无法弄清楚如何让节点服务器开始在实例上运行。 从端口的应用程序层也有访问我假设我需要监听端口80,但我觉得问题是,正确的文件没有启动。

与Heroku上的Procfile类似,是否有一个特殊的启动脚本types文件需要包含在OpsWorks中才能正确启动?

请注意,我还没有与厨师的经验,所以我希望得到它与默认选项,即不写一个自定义的厨师食谱来做到这一点。

我花在这上面的时间是令人尴尬的,但无论如何我都会分享,希望能够拯救别人的生命,否则这些时间会被亚马逊偷走。

  • 要回答你的问题,是的,我确实让我的节点/快递应用程序运行。
  • 如果您使用任何types的process.env方法来select端口号,请将您的监听端口更改为80(或443,如果适用)。
  • 最重要的是,亚马逊并不关心你的main文件是什么。 将其重命名为server.js并将其放在应用程序的根目录中。 这是monit试图运行的文件。

希望有帮助。 如果没有,或者如果所有这一切都很明显,我为我的愚蠢和责备缺乏睡眠道歉。 🙂

来自ZachRabbit的很好的回答。 我只想补充一点,OpsWorks现在支持为已部署的应用程序进程设置环境variables(即process.env.PORT)。

当您添加应用程序(或编辑)时,您可以继续设置一个环境variables,如果您在server.js中使用以下内容,则使用PORT的值和值为80的值:

 !/usr/bin/env node var debug = require('debug')('my-app'); var app = require('app'); app.set('port', process.env.PORT || 3000); var server = app.listen(app.get('port'), function() { debug('Express server listening on port ' + server.address().port); }); 

有关环境variables设置的更多信息可以在这里find:

http://docs.aws.amazon.com/opsworks/latest/userguide/apps-environment-vars.html

确保文件名是server.js,并将环境variablesPORT设置为80就像我的冠军。

只需复制AWS OpsWorks页面即可configurationnode.js应用程序:

“默认情况下,我们希望Node.js应用程序监听端口80.另外,我们传递给节点的文件必须命名为”server.js“,并且应该位于应用程序的根目录中。

问候。

我也玩了一下,希望我的成功之路能够帮助别人。 Node.js通常需要提升权限才能在端口80上运行,所以我发现在命名示例应用程序app.js时没有问题,您需要修改默认OpsWorks Node.js部署厨师配方的第2行以使用sudo:

  • AWS原文: https : //github.com/aws/opsworks-cookbooks/blob/master/opsworks_nodejs/templates/default/node_web_app.monitrc.erb#L2

  • 修改: https : //github.com/nationalfield/opsworks-cookbooks/blob/master/opsworks-nodejs/templates/default/node_web_app.monitrc.erb#L2

也许有点话题,但我花了几个小时,所以我觉得值得分享:

在OpsWorks上设置Hapi.js服务器时,我必须确保我没有使用hostname localhost ,而是将其设置为0.0.0.0 。 否则,它只是一直在失败的默默。

希望能帮助任何人。