502 Bad Gateway Déploiement d'Exprimer un Modèle de Générateur sur Elastic Beanstalk

J'ai utilisé l'express générateur pour créer une simple express app, qui, lorsqu'il a commencé à dev fonctionne très bien sur localhost:3000.

Quand je le pousser à l'elastic beanstalk à l'aide de l'eb commande-- git aws.pousser, cependant, je reçois une erreur 502 sur le serveur de production.

À la recherche dans les journaux, l'erreur que j'obtiens est:

2014/04/01 19:29:40 [error] 24204#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.2.178, server: , request: "GET /HTTP/1.1", upstream: "http://127.0.0.1:8081/", host: "macenvexp-env-hqv9ucmzev.elasticbeanstalk.com"
2014/04/01 19:29:40 [error] 24204#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.2.178, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8081/favicon.ico", host: "macenvexp-env-hqv9ucmzev.elasticbeanstalk.com"

Je suis en utilisant la valeur par défaut de configuration de nginx. Lorsque je lance un node.js exemple d'application, sans l'autorisation Expresse, il fonctionne très bien. Voici l'express code app.js:

var express = require('express');
var http = require('http');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes');
var users = require('./routes/user');
var app = express();
//view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(app.router);
app.get('/', routes.index);
app.get('/users', users.list);
///catch 404 and forwarding to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
///error handlers
//development error handler
//will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.render('error', {
message: err.message,
error: err
});
});
}
//production error handler
//no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.render('error', {
message: err.message,
error: {}
});
}); 
module.exports = app;

Et voici le colis.fichier json:

{
"name": "macEnvExp",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "DEBUG=macEnvExp node bin/www"
},
"dependencies": {
"express": "~3.4.8",
"static-favicon": "~1.0.0",
"morgan": "~1.0.0",
"cookie-parser": "~1.0.1",
"body-parser": "~1.0.0",
"debug": "~0.7.4",
"jade": "~1.3.0"
}
}

Et voici bin/www:

#!/usr/bin/env node
var debug = require('debug')('my-application');
var app = require('../app');
app.configure(function(){
app.set('port', process.env.PORT || 3000);
});
console.log(app.get('port'));
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
  • Résolu. Je crois que le problème ici est que AWS était en train de faire de noeud app.js AVANT de mnp commencer. nœud app.js ne donne pas une erreur, mais il n'a pas d'ouvrir tous les ports. Donc la solution est de renommer app.js à autre chose (j'ai utilisé main.js) et de référence que dans/bin / www. Il travaille maintenant correctement.
  • Cette solution a été extrêmement utile (j'ai passé plusieurs heures sur ce sujet). Merci un tas. Veuillez préciser comment vous trouver "AWS était en train de faire de noeud app.js AVANT de mnp démarrer"
  • Avec express via AWS tutoriel docs.aws.amazon.com/elasticbeanstalk/latest/dg/... je n'ai pas seulement eu pour renommer app.js à autre chose, mais j'ai également eu à point dans mon /bin/www fichier: var app = require('../app');' pour 'var app = require('../main');'
  • Merci cela a contribué à une tonne! J'ai fait un autre énorme & erreur stupide que j'essayais de résoudre ce problème... j'ai été en utilisant git aws.pousser à pousser mes modifications, mais n'avait pas fait commis de mes changements de git/github. J'ai donc été faire un vieux code, sans aucune modification. :/ De toute façon finalement obtenu il fixé avec votre aide. --Pensez que vous pouvez faire que la réponse officielle au lieu de simplement un commentaire?
InformationsquelleAutor user3486588 | 2014-04-01