ローカルでのアプリ作成
プロジェクト作成
npm init -y
package.jsonのscriptsの中に下記の行を追加してください。
"start": "node index.js",
必要なライブラリをインストール
npm i express mysql2 dotenv sequelize --save
npm i sequelize-cli -D
.
MySQLの設定
mysqlにログインし、データベースを作成しましょう。
mysql -u root -p
create database dev;
ここでユーザー名、パスワード、デーベース名を控えておきましょう。
sequelizeの設定
プロジェクトルートに「.sequelizerc」ファイルを作成し、
下記のように記述してください
// .sequelizerc const path = require('path'); module.exports = { 'config': path.resolve('db/config', 'config.js'), 'models-path': path.resolve('db', 'models'), 'seeders-path': path.resolve('db', 'seeders'), 'migrations-path': path.resolve('db', 'migrations') };
npx sequelize-cli init
生成されたフォルダを確認しましょう。
さらに、「db/config/config.json」を削除し、「db/config/config.js」を作成してください。
require('dotenv').config(); module.exports = { "development": { "username": process.env.RDS_USERNAME, "password": process.env.RDS_PASSWORD, "database": process.env.RDS_DB_NAME, "host": process.env.RDS_HOSTNAME, "dialect": "mysql" }, "test": { "username": "root", "password": null, "database": "database_test", "host": "127.0.0.1", "dialect": "mysql" }, "production": { "username": "root", "password": null, "database": "database_production", "host": "127.0.0.1", "dialect": "mysql" } };
.
環境変数の設定
プロジェクトルートに「.env」を作成しましょう。
RDS_HOSTNAME=<ここにデータベースのホスト名(ローカルならlocalhost)> RDS_USERNAME=<ここにデータベースのユーザー名> RDS_PASSWORD=<ここにデータベースのパスワード> RDS_DB_NAME=<ここにデータベース名>
.
テーブルの構築
sequelizeでユーザー情報を格納するモデルを作成します。
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
マイグレーションを行います。
npx sequelize-cli db:migrate
次に初期データの投入を行うため、seedを作成します。
npx sequelize-cli seed:generate --name demo-user
「db/seeders」フォルダに新たにファイルが生成されるので、次のように修正してください。
'use strict'; module.exports = { up: async(queryInterface, Sequelize) => { /** * Add seed commands here. * * Example: * await queryInterface.bulkInsert('People', [{ * name: 'John Doe', * isBetaMember: false * }], {}); */ return queryInterface.bulkInsert('Users', [{ firstName: 'Mike', lastName: 'Doe', email: 'example@example.com', createdAt: new Date(), updatedAt: new Date() }]); }, down: async(queryInterface, Sequelize) => { /** * Add commands to revert seed here. * * Example: * await queryInterface.bulkDelete('People', null, {}); */ } };
次に、実際にテーブルへデータ投入します。
npx sequelize-cli db:seed:all
.
index.jsの作成
プロジェクトルートにindex.jsを作成しましょう。
const express = require('express'); const mysql = require('mysql2'); require('dotenv').config(); const app = express(); const port = process.env.PORT; const db_setting = { host: process.env.RDS_HOSTNAME, user: process.env.RDS_USERNAME, password: process.env.RDS_PASSWORD, database: process.env.RDS_DB_NAME, }; app.get('/', (req, res) => { const connection = mysql.createConnection(db_setting); connection.query( 'SELECT * FROM Users;', function(err, results, fields) { if (!!err) { console.log(err); res.send('Database Error.'); return; } res.send('Hello World!' + ' I am ' + results[0].firstName + '.'); } ); }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });
ここまで作成できたら、下記のコマンドでアプリを実行してください。
多分、正常に動作すると思います。
ここまでできたら、Beanstalkへのデプロイをおこなっていきます。
Beanstalkへのデプロイ
Beanstalk環境構築
AWSのbeanstalkを開き、Create Applicationをクリックします。
https://ap-northeast-1.console.aws.amazon.com/elasticbeanstalk/home?region=ap-northeast-1#/welcome
順に設定を指定していきます。
環境構築が完了したら、作成された環境を開きましょう。
こちらのような画面が表示されていればokです。
.
RDSの設定
画面左側のメニューから設定->データベース->編集を選択します。
データベースの情報を入力する画面が表示されるので、
ユーザー名とパスワードを入力しましょう。(新規に作成するデータベースなので、任意のものでokです。)
入力できたら「適用」をクリックします。
.
Nodejsアプリをzip化してアップロード
プロジェクトルートに「.ebextensions」フォルダを作成し、
「migration.config」ファイルを作成する。
container_commands: 01_migrate: command: "npx sequelize-cli db:migrate" 01_seed: command: "npx sequelize-cli db:seed:all"
プロジェクトフォルダの「.env」ファイル以外をすべて選択し、zip化してください。
Beanstalkの画面から作成したzipをアップロードします。