[解決済み] ExpressJS - Elastic Beanstalk 502 Bad Gateway
質問
Amazon Elastic Beanstalk 上で Express.js アプリを実行しており、環境は正常に作成されましたが、Amazon が作成した URL を使用して自分の環境にアクセスすると
502 Bad Gateway nginx/1.6.2
というエラーが発生します。StackOverflow の他のリソースを読んだところ、メインファイルの名前を
server.js
から
main.js
を設定し
port
の中に
bin/www
フォルダーを使用する場合、これは私のアプリの解決策ではないような気がします。私は
node server.js
というコマンドだと思います。
Elastic Beanstalkを実行しても、うまくいかない(エラーメッセージ)。
node server.js
events.js:72
throw er; // Unhandled 'error' event
^
Error: failed to connect to [undefined:27017]
でENV変数を設定しているからです。
.env
ファイルでは、サーバーを動かすにはforemanを使うしかないのです。このことから、502エラーはElastic Beanstalkが変数を理解できず、サーバーを失敗させた結果だと考えています。この問題は、私のメインファイルの名前が
server.js
の中になく
bin/www
フォルダーに保存されますか?
以下は、私のコードです。
server.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);
と私のパッケージファイルです。
{
"name": "test",
"main": "server.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": "*"
}
}
解決方法は?
今夜、同じ問題が発生しました。ポータルサイトではノードアプリが実行されると主張しているにもかかわらず、ノードアプリが起動されていないことが判明しました。
npm start
をデフォルトで使用します。
以下は、それを修正するために行ったことです。
- プロジェクトのルートに.ebextensionsというディレクトリを作成します。
- .ebextensionsの中にnodecommand.configという名前のファイルを作成します。
- nodecommand.configの中に、以下のyamlを追加します。
option_settings: - namespace: aws:elasticbeanstalk:container:nodejs option_name: NodeCommand value: "npm start"
説明書の全文はこちらでご覧いただけます。 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html
関連
-
[解決済み】mongoError: トポロジーが破壊されました
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。
-
[解決済み] ExpressJS アプリケーションをどのように構成するか?
-
[解決済み】Amazon EC2とAWS Elastic Beanstalkの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】エラー TRK0005: 位置特定に失敗しました。"CL.exe"
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み] Expectアサーションの型エラー -> expect(...).toExistは関数ではない
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?