AWS의 EC2를 통해 서버를 배포하고, 로컬DB와 RDS를 연결하는 방법은 다음과 같다.
(프로젝트 때의 배포 경험을 토대로 작성하였다.)
EC2 인스턴스에 접속하여 local의 git repository 주소를 clone한다.
엔진옵션은 로컬DB와 같은 종류인 MySQL로 선택하였다.
mysql -u [마스터 이름] --host [엔드포인트 주소] -P 13306(포트번호) -p
const models = require("./models/index.js");
models.sequelize.sync().then(() => {
console.log("DB 연결 성공");
}).catch(err => {
console.log("연결 실패");
console.log(err);
})
RDS 정보 입력시에는 Port 번호를 추가로 설정해줘야 한다.
const dotenv = require("dotenv");
dotenv.config();
module.exports = {
development: {
username: "root",
password: process.env.DATABASE_PASSWORD,
database: "bemo_development",
host: "127.0.0.1",
dialect: "mysql"
}, // 로컬 DB 정보
production: {
username: "admin",
password: process.env.DATABASE_PASSWORD,
database: "bemo",
host: "first-project-bemo.ckcoqv8wgkzy.ap-northeast-2.rds.amazonaws.com",
dialect: "mysql",
port: '13306'
} // RDS 정보
}
Sequelize Migration을 실행하여 RDS에 DB와 테이블이 생성되도록 한다.
npx sequelize-cli db:migrate
git add .
, git commit -m '메세지'
, git push origin dev
후, PR 및 merge
이 때 remote 연결되어 있는 git주소를 잘 확인해야 한다.(대소문자 구분)
git remote add upstream 프로젝트주소
git pull upstream dev
EC2 인스턴스에서 해당 프로젝트 폴더 내에 env파일을 생성하고 RDS인스턴스 생성시 설정하였던 정보로 수정해준다.
touch .env //.env파일 생성 및 ls -a로 해당 파일 생성 확인
vim .env // .env파일 수정, i(수정), :wq!(저장), :q!(종료)
DATABASE_PASSWORD='RDS인스턴스_비밀번호'
DATABASE_USERNAME= RDS인스턴스_사용자이름
DATABASE_NAME='RDS_DB이름'
EC2 인스턴스의 해당 프로젝트 폴더 내 index.js파일이 잘 설정되었는지 확인한다.
npm start
로 서버를 실행하여 'DB연결 성공'이 콘솔창에 뜨고 EC2 인스턴스의 퍼블릭 IPv4 주소로 접속하여 화면이 정상적으로 로딩되면 성공!