node.jsの非常に簡素なアプリケーションをAWS ElasticBeanstalkを用いて公開するやり方をまとめていく。
これは下の動画に従ったものであるので下の動画を見てもいい。また、公式のドキュメントにもnode.jsとExpressを用いたアプリケーションの公開の仕方があった。この記事では最低限のことしか書かないので実際に実用性のあるアプリケーションを公開する際には公式ドキュメントを参照してほしい。
まず、作業に移る前に必要なことがいくつかある。
Gitへの登録とAWSアカウントの作成である。
こちらは行っていることを前提に進めていく、難しい作業ではないので各自調べて行ってほしい。
そして、ElasticBeansをコマンド上で操作するためにEB CLIのダウンロードをする必要がある。
こちらのサイトを参考にインストールしてほしい。
ターミナル上で以下のコマンドを打てば良い。
$ pip install awsebcli --upgrade --user
なお、私の場合上手くインストールできなかったので--userを省いてインストールすることで上手く動作するようになった。
インストールされているかどうかはターミナル上で
eb --version
と打てば良い。インストールが完了していればebcliのバージョンを返してくれる。
上手くいかなければ上に貼り付けた公式のドキュメントを参照してほしい。
その後、ターミナルを開いてアプリケーション用のディレクトリを作成していく。
さらに、.gitリポジトリを作成し,コードエディタを開く。
$ mkdir nodejs-project1
$ cd nodejs-project1
$ git init
$code .
そして、プロジェクトディレクトリの中に.gitignoreファイルを作成してその中に以下のように書き込む。
ここに書き込まれたファイルはGitの処理の対象にはならない。
node_modules/
.gitignore
.elasticbeanstalk/
そして、ターミナル上でelasticbeansの利用を始める
eb init --platform node.js --region ap-northeast-1
ここでのリージョンはアカウント作成時に指定したリージョン。
AWSのコンソール画面の右上。下の画像だとTokyoと書かれた部分をクリックすると自分のリージョンが分かる。
そして、Enterを押すとアカウントのIdとSecret Idが求められる。
それは、AWSのコンソール画面右上の今度はYusuke Someyaと書かれている部分のSecurity Credentialwを選択してスクロースしていくとAccess keysというところがあるのでそこからCreate access keyを選択してコピペする。secretの方も同時に作成される。
これを実行すると、.elasticbeanstalkというフォルダが作成され、中にconfig.ymlが作成される。
ファイルの中は最初nullという値が多くある。これを今度は埋めていく。
今回はnullの部分にデフォルトの値を入れいていく。
eb create --sample nodejs-project1-env
サンプルの値をnodejs-project1-envという環境名で設定する。
するとこんな感じに埋まる。
そして、プロジェクトディレクトリ直下に.ebextensionsというフォルダを作成する。
そして、そのフォルダの中にProcfileというものを作成する。
web: npm start
そして、Procfileの中にこの記述をする。
その後、node.jsのパッケージをインストールする。ターミナル上で以下のコードを打つ。
npm init
entry pointだけapp.jsに変更してそれ以外かすべてEnterキーを押せば良い。
package.jsonファイルが作成されたと思うので、その中のScriptの中に、"start": "node .",と書き加える。すなわち、package.jsonの中身は以下のようになる。
{
"name": "nodejs-project",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "node .",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
}
}
そうしたら、ターミナル上でExpressをダウンロードする。
npm i express
そうしたら、プロジェクト直下にapp.jsを作成して記述していく。
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("This is my first node.js project :)")
})
app.listen(process.env.PORT || 3000);
これで準備ができたので、ターミナル上でgit上にcommitしていく。
そして、elasticbeanstalkでデプロイをする。環境名とともに以下のコードを入力する。
git add .
git commit -m"first express app"
eb deploy nodejs-project1-env
正常にデプロイが完了したら、
eb open
とすると、作成したアプリケーションが表示される。
これしか表示されないが上手く出来たのである。以上。