"연결"에서 EC2 컴퓨팅 리소스에 연결을 선택한 뒤 EC2 인스턴스에서 위에서 생성한 ec2 인스턴스를 선택해준다.
맨 밑에 있는 "데이터베이스 생성" 버튼을 눌러 데이터베이스 생성을 완료한다. 데이터베이스 생성까지는 몇 분 정도 걸린다.
5. 터미널에서 SSH로 ec2 연결
ec2 서비스 페이지로 이동하여 인스턴스 목록을 확인한다. 그리고 위에서 생성한 인스턴스의 ID를 클릭하여 인스턴스 상세 페이지로 이동한다.
"연결" 버튼을 클릭하여 "인스턴스에 연결"로 이동한다. 여러가지 연결 방법 중 "SSH 클라이언트"를 클릭한다.
터미널을 열고 아까 다운로드 받았던 "deploy-test.pem" 키 페어가 있는 위치로 이동한다. 이동한 위치에서 chmod 400 deploy-key.pem 명령으로 키 페어의 접근권한을 수정해준 뒤, ssh -i "deploy-key.pem" [email protected] 명령으로 ec2 인스턴스에 연결한다.
6. DBeaver와 RDS 연결
DBeaver를 실행한다(없으면 DBeaver를 설치해주자).
아래 사진에 표시된 버튼을 클릭한다. DBeaver에서 관리할 새로운 DB를 연결하는 역할의 버튼이다.
MySQL을 선택한 뒤 다음을 클릭한다.
데이터베이스를 연결하기 위해 여러가지를 설정하는 창이 나온다. 먼저 "Main"탭에서는 Server Host, Username, Password를 설정해주면 된다. 이를 설정하기 위해서는 AWS의 RDS 서비스 페이지에서 아까 생성했던 DB의 상세 페이지로 들어간 뒤 엔드포인트를 복사하여 Server Host에 붙여넣고 Username과 Password는 RDS를 만들 때 설정했던 마스터 사용자 이름, 마스터 암호를 각각 입력해주면 된다.
현재 RDS는 외부에서 접속할 수 없고 ec2 인스턴스를 통해서만 접속할 수 있다. 따라서 "SSH"탭으로 이동한 뒤 Use SSH 터널을 체크해주고 Host/IP, User Name에 ec2 연결 페이지에 있는 퍼블릭 IP 주소와 사용자 이름을 각각 입력해주고, Authentication Method를 "Public Key"로 설정한 뒤 위에서 다운로드 받았던 deploy-test.pem 키 페어를 설정해준다.
"Test tunnel configuration" 버튼을 눌러 ec2와의 연결을 테스트한다.
"Test Connection" 버튼을 눌러 RDS와의 연결을 테스트한다.
"완료" 버튼을 눌러 설정을 끝내고 새로 연결된 RDS를 더블클릭 하여 연결해준 뒤 데이터베이스 목록을 확인한다. 아직 생성한 데이터베이스가 없기 때문에 sys를 제외하고는 아무것도 뜨지 않는다.
데이터베이스 목록에서 오른쪽 마우스를 눌러 "Create New Database"를 클릭한 뒤 노드 서버에서 사용할 데이터베이스를 하나 생성한다.
vim으로 .env 파일을 설정해준다. 데이터베이스 host는 위에서처럼 RDS의 엔드포인트로 해주면 된다.
10. 포트 리디렉션
포트번호를 1024 밑으로 열려고 하면 설정이 복잡하기 때문에 Node 서버를 8080포트로 연 뒤 80포트로 들어오는 요청들을 8080 포트로 리디렉션하여 받을 것이다. 그러기 위해서는 sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 이 명령을 ec2와 연결된 터미널에 입력하면 된다.
11. 코드 빌드 후 pm2로 서버 실행
설정한 스크립트로 빌드 후 서버를 실행한다.
npx pm2 log로 서버가 잘 돌아가고 있는지 확인한다.
DBeaver에서 테이블이 잘 생성되었는지 확인한다.
12. Postman으로 테스트
host는 ec2의 퍼블릭 IPv4 주소를 이용하면 된다.
로컬에서 http://localhost:8080/tweet 이런식으로 요청을 보냈었다면, 이제는 http://{퍼블릭 IPv4 주소}/tweet로 요청을 보내면 된다.