有没有人成功地使用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
。 否则,它只是一直在失败的默默。
希望能帮助任何人。