簡體   English   中英

502錯誤的網關NodeJS / MongoDB AWS Elastic Beantstalk

[英]502 Bad Gateway NodeJS/MongoDB AWS Elastic Beantstalk

我在嘗試在Elastic Beanstalk上運行我的NodeJS應用程序時遇到502 Bad Gateway問題。 我試圖遵循一個stackoverflow答案,該答案告訴我將啟動腳本從server.js更改為main.js ,但這沒有用。 我正在使用在不是git存儲庫一部分的.env文件中設置的env變量,這可能會導致此錯誤,還是更多是由於啟動腳本引起的?

是否應該將我的配置儀表板中的這一部分更改為我的起始文件?

在此處輸入圖片說明

這是我的應用設置:

框架:Expressjs

數據庫:MongoDB

Elastic Beanstalk服務器:運行Node.js的64位Amazon Linux 2014.09 v1.2.0

我檢查了日志,在/var/log/nginx/error.log沒有發現任何內容,唯一的錯誤部分中我只能找到有關可能導致錯誤的信息。

{"status":"SUCCESS","api_version":"1.0","truncated":"false","results":[{"status":"SUCCESS","msg":"","returncode":0,"events":[{"msg":"No start scripts located in package.json. Node.js may have issues starting. Add start scripts or place code in a file named server.js or app.js.","severity":"ERROR","timestamp":1425234947517}]}]}

這是我的package.json文件:

{
  "name": "expressjs-blog",
  "main": "main.js",
  "dependencies": {
    "body-parser": "1.6.5",
    "ejs": "^1.0.0",
    "express": "^4.6.1",
    "express-paginate": "0.0.2",
    "mongoose": "~3.6.15",
    "mongoose-paginate": "^3.1.0",
    "serve-favicon": "*",
    "passport" : "~0.1.17",         
    "passport-local" : "~0.1.6",
    "connect-flash" : "~0.1.1",     
    "bcrypt-nodejs" : "latest",
    "morgan": "~1.0.0",
    "cookie-parser": "~1.0.0",
    "method-override": "~1.0.0",
    "express-session": "~1.0.0",
    "aws-sdk": "*" 
  }
}

這是我的main.js文件:

//Load express
var express = require('express');
var app = express();
var router = express.Router(); // get an instance of the router
var bodyParser = require('body-parser'); // configure app to use bodyParser()
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var aws = require('aws-sdk');

app.use(bodyParser.urlencoded({ extended: true})); // get data from a POST method
app.use(bodyParser.json());
app.use(morgan('dev'));
app.use(cookieParser());


var port = process.env.PORT || 8080; // set the port

var DB_CONFIG = process.env.DB_CONFIGURATION;
var AWS_ACCESS_KEY = process.env.AWS_ACCESS_KEY;
var AWS_SECRET_KEY = process.env.AWS_SECRET_KEY;
var S3_BUCKET = process.env.S3_BUCKET;

var blogDB = require('./config/blogDB.js');
mongoose.connect(blogDB.url);




require('./config/passport.js')(passport);


app.set('view engine', 'ejs'); // set ejs as the view engine

app.use(express.static(__dirname + '/public')); // set the public directory

app.use(session({ secret: 'thisisatest' }));
app.use(passport.initialize());
app.use(passport.session());

app.use(flash());


var routes = require('./app/routes');

app.use(routes); // use routes.js


app.listen(port);
console.log('magic is happening on port' + port);

----------- 更新 ------------

我將env變量添加到Amazon配置儀表板,這將使它可以查看在何處連接數據庫和其他變量。 我現在收到一個錯誤日志:

/var/log/nginx/error.log

2015/03/04 17:12:03 [error] 15978#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xxx.xx, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8081/", host: "xxxxx-d-xxxxxx-env-xxxxx.elasticbeanstalk.com"
2015/03/04 17:12:03 [error] 15978#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xxx.xx, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8081/favicon.ico", host: "xxxxx-d-xxxxx-env-xxxxxx.elasticbeanstalk.com"
2015/03/04 17:16:27 [error] 15978#0: *4 connect() failed (111: Connection refused) while connecting to upstream, client: xxx.xxx.xx.xx, server: , request: "GET /phpMyAdmin/translators.html HTTP/1.1", upstream: "http://127.0.0.1:8081/phpMyAdmin/translators.html", host: "xx.xxx.xx.xx"
2015/03/04 17:20:02 [error] 15978#0: *6 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xx.xx, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8081/", host: "xxx-d-philxxxxlips-env-rqsrxxe92stf.elasticbeanstalk.com"
2015/03/04 17:20:03 [error] 15978#0: *6 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xxx.xx, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8081/favicon.ico", host: "xxxx-d-xxx-env-rqsre92xxxstf.elasticbeanstalk.com"

當您在本地運行npm start時會發生什么? 錯誤消息表明您尚未指定啟動腳本。 AWS可能使用npm start服務器,並且該命令似乎失敗。

嘗試將其添加到package.json中:

"scripts" : {
     "start" : "node main.js"
}

固定! 我要做的就是進入“配置”>“容器選項”,並將node命令設置為node main.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM