正如标题所示,我一直在使用Amazons新的OpsWorks管理系统来部署应用程序,但是我无法弄清楚如何让节点服务器开始在实例上运行。从端口应用程序层也可以访问我假设我需要在端口80上侦听,但我觉得问题是没有正确的文件被启动。
与Heroku上的Procfile类似,是否需要包含一个特殊的启动脚本类型文件,以便OpsWorks正确启动它?
请注意,我还没有使用Chef的经验,因此我希望能够使用默认选项,即不要编写自定义Chef配方来执行此操作。
答案 0 :(得分:28)
我花在这上面的时间令人尴尬,但无论如何我都会分享,希望能挽救其他人的生命时间,否则会被亚马逊偷走。
process.env
方法选择端口号,请将您的侦听端口更改为80(如果适用,请更改为443)。main
文件是什么。将其重命名为server.js
并将其放在应用程序的根目录中。这是monit尝试运行的文件。 希望这会有所帮助。如果没有,或者所有这一切都是显而易见的,我为我的愚蠢和责备缺乏睡眠道歉。 :)
答案 1 :(得分:4)
ZachRabbit的精彩回答。我想补充一点,OpsWorks现在支持为部署的应用程序进程设置环境变量(即process.env.PORT)。
当您添加应用程序(或编辑)时,您可以继续设置环境变量,其密钥为PORT,如果您在server.js中使用以下内容,则设置值为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,对我来说就像一个冠军。
答案 2 :(得分:1)
只需复制AWS OpsWorks页面即可配置node.js应用程序:
“默认情况下,我们希望您的Node.js应用程序在端口80上侦听。此外,我们传递给节点的文件必须命名为”server.js“,并且应该位于应用程序的根目录中。”
问候。
答案 3 :(得分:0)
我也在玩这个游戏,希望我的成功之路能帮助别人。 Node.js通常需要提升权限才能在端口80上运行,所以我发现虽然命名示例应用程序app.js很好,但您需要修改默认OpsWorks Node.js部署Chef recipe的第2行以使用sudo:
答案 4 :(得分:0)
可能有点偏离主题,但我花了几个小时才这个,所以我觉得值得分享:
在OpsWorks上设置Hapi.js服务器时,我必须确保我没有使用主机名localhost
,而是将其设置为0.0.0.0
。否则它就会一直无声地失败。
希望能帮助任何人。