はじめに
プログラミング初学者です。
アプリ開発会社で短期インターンをしながらエンジニア転職を目指して日々勉強しています。
間違いなどありましたらご指摘いただけますと幸いです🙏
初めて作成したアプリをAWSへデプロイしようとしましたが色々とハマってしまいました。。。
まずはデモ用のアプリをデプロイしてみたのでまとめてみました。
環境・前提
- Amazon Elastic Beanstalkでアプリケーション作成済み
- AWS CLIとEB CLIインストール済み
- Express
やったこと
1. デモ用のExpressアプリを準備
# ディレクトリ構成
├── index.js
├── package-lock.json
├── package.json
└── .gitignore
index.js
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("demo用のアプリです。");
});
app.listen(3000, () => console.log("3000番ポートで起動中。"));
package.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
// 追記
"start": "node index.js"
}
# ローカルで起動確認。
$ node index.js
2. デプロイ実行
$ eb init
$ eb deploy
デプロイは成功したがアクセスできない。。。
ヘルスを確認すると、、、
ログを確認してみる。
----------------------------------------
/var/log/nginx/error.log
----------------------------------------
2023/03/18 08:35:58 [error] 4183#4183: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.24.8, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "172.31.45.211"
ポート番号が8080になっておらず接続に失敗しているっぽい。
index.js
を以下のように修正して再度デプロイしてみる。
index.js
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("demo用のアプリです。");
});
// 修正
app.listen(8080, () => console.log("8080番ポートで起動中。"));
参考記事