繁体   English   中英

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

[英]Has anyone been successful deploying a node (express) app with Amazon OpsWorks?

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

与Heroku上的Procfile类似,是否需要包含一个特殊的启动脚本类型文件,以便OpsWorks正确启动它?

请注意,我还没有使用Chef的经验,因此我希望能够使用默认选项,即不编写自定义Chef配方来完成它。

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

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

希望这会有所帮助。 如果没有,或者所有这一切都是显而易见的,我为我的愚蠢和责备缺乏睡眠道歉。 :)

ZachRabbit的答案很棒。 我想补充一点,OpsWorks现在支持为部署的应用程序进程设置环境变量(即process.env.PORT)。

添加应用程序(或编辑)时,如果您在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);
});

有关环境变量设置的更多信息,请访问:

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

确保文件名是server.js并将环境变量PORT设置为80对我来说就像一个冠军。

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

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

问候。

我也在玩这个游戏,希望我的成功之路能够帮助别人。 Node.js通常需要提升权限才能在端口80上运行,所以我发现虽然命名示例应用程序app.js很好,但您需要修改默认OpsWorks Node.js部署Chef recipe的第2行以使用sudo:

有点偏离主题可能,但我花了几个小时就这个,所以我认为值得分享:

OpsWorks上设置Hapi.js服务器时,我必须确保我没有使用主机名localhost ,而是将其设置为0.0.0.0 否则它只是默默地失败了。

希望能帮助任何人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM