与Heroku上的Procfile类似,是否需要包含特殊的启动脚本类型文件以使OpsWorks正常启动它?
请注意,我还没有使用Chef的经验,因此希望使用默认选项使其工作,即不编写自定义Chef配方来完成它。
我在这上面花费的时间让我很尴尬,但是我仍然会分享,希望能为其他人节省时间,防止亚马逊偷走他们的生命。
process.env
方法来选择端口号,请将监听端口更改为80(如果适用,则为443)。main
文件。请将其重命名为 server.js
并放在应用程序的根目录中。那是monit尝试运行的文件。希望这可以帮到你。如果不能或者这些都很明显,那我道歉我的糊涂并归咎于睡眠不足。 :)
ZachRabbit的回答非常好。我想补充一下,OpsWorks现在支持为部署的应用程序进程设置环境变量(即process.env.PORT)。
当您添加应用程序(或进行编辑)时,您可以设置一个环境变量,其中键为PORT,值为80,如果您在server.js中使用以下代码之类的内容:
!/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。此外,我们传递给node的文件必须命名为“server.js”,并且应位于应用程序的根目录中。”
谢谢。
可能有点跑题,但我花了几个小时在这上面,所以我觉得值得分享:
在OpsWorks上设置Hapi.js服务器时,我必须确保不使用主机名localhost
,而是将其设置为0.0.0.0
。否则它就会默默地失败。
希望这能帮助到任何人。
我也曾经尝试过这个,希望我的成功之路能够帮到别人。Node.js通常需要提升的权限才能在80端口上运行,因此我发现,虽然将示例应用程序命名为app.js是可以的,但您需要修改默认OpsWorks Node.js部署chef配方的第2行以使用sudo: