1. AWS에 로그인 (계정이 없다면 회원가입)
2. AWS 지역(Region) 변경
현재 AWS 지역이 버지니아 북부
로 되어있다.
우리는 서울 지역에 있는 AWS를 사용할 것이기 때문에 표시된 곳을 클릭하여 지역을 서울
로 바꿔주자.
3. ec2 인스턴스 생성하기
"ec2"
를 검색하여 ec2 서비스 페이지로 이동한다."인스턴스 시작"
버튼을 누르고 그 밑에 나오는 "인스턴스 시작"
을 눌러서 인스턴스 생성 페이지로 이동한다."이름 및 태그"
에서 인스턴스의 이름을 설정해준다."키 페어(로그인)"
에서 인스턴스에 접속할 때 필요한 키 페어를 생성해준다. 생성하고 나면 pem
파일이 하나 다운받아지는 걸 볼 수 있다."네트워크 설정"
에서 SSH
를 "위치 무관"에서 "내 IP"로 설정해주고 HTTPS
와 HTTP
트래픽 허용을 모두 체크해주자."인스턴스 시작"
버튼을 클릭하여 ec2 인스턴스를 생성하면 된다.4. RDS 생성하기
"rds"
를 검색하여 RDS 서비스 페이지로 이동한다."데이터베이스 생성'
버튼을 클릭하여 데이터베이스 생성 페이지로 이동한다."엔진 옵션"
에서 MySQL
을 선택한다."템플릿"
에서 프리 티어
를 선택한다."설정"
에서 DB 인스턴스 식별자
, 마스터 사용자 이름
, 마스터 암호
를 설정해준다."연결"
에서 EC2 컴퓨팅 리소스에 연결
을 선택한 뒤 EC2 인스턴스
에서 위에서 생성한 ec2 인스턴스를 선택해준다."데이터베이스 생성"
버튼을 눌러 데이터베이스 생성을 완료한다. 데이터베이스 생성까지는 몇 분 정도 걸린다.5. 터미널에서 SSH로 ec2 연결
"연결"
버튼을 클릭하여 "인스턴스에 연결"
로 이동한다. 여러가지 연결 방법 중 "SSH 클라이언트"
를 클릭한다."deploy-test.pem"
키 페어가 있는 위치로 이동한다. 이동한 위치에서 chmod 400 deploy-key.pem
명령으로 키 페어의 접근권한을 수정해준 뒤, ssh -i "deploy-key.pem" ec2-user@ec2-13-209-49-76.ap-northeast-2.compute.amazonaws.com
명령으로 ec2 인스턴스에 연결한다.6. DBeaver와 RDS 연결
MySQL
을 선택한 뒤 다음을 클릭한다."Main"
탭에서는 Server Host
, Username
, Password
를 설정해주면 된다. 이를 설정하기 위해서는 AWS의 RDS 서비스 페이지에서 아까 생성했던 DB의 상세 페이지로 들어간 뒤 엔드포인트를 복사하여 Server Host
에 붙여넣고 Username
과 Password
는 RDS를 만들 때 설정했던 마스터 사용자 이름
, 마스터 암호
를 각각 입력해주면 된다."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"
를 클릭한 뒤 노드 서버에서 사용할 데이터베이스를 하나 생성한다.7. ec2에 Node 설치하기
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
를 입력하여 nvm(노드 버전 관리자)을 설치한다.. ~/.nvm/nvm.sh
를 입력하여 nvm을 활성화한다.nvm install 16.0.0
를 입력하여 16.0.0 버전의 Node를 설치해준다.8. ec2에 Git 설치하기
sudo yum install git -y
를 입력하여 Git을 설치해준다.9. Git 레포지토리에 있는 폴더 가져오기
git clone
으로 레포지토리를 복사한다.npm i
명령으로 패키지를 다운받는다.vim
으로 .env
파일을 설정해준다. 데이터베이스 host는 위에서처럼 RDS의 엔드포인트로 해주면 된다.10. 포트 리디렉션
서버가 http 프로토콜을 이용하여 외부와 통신하려면 서버의 포트를 http 포트인 '80'
로 열어야 하지만 포트 번호를 '1024'
밑의 숫자로 설정하려면 과정이 복잡하다.
따라서 서버를 '8080'
포트로 연 뒤 '80'
포트로 들어오는 요청들을 '8080'
포트로 리디렉션하여 받을 것이다.
그러기 위해서는 sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
명령을 ec2와 연결된 터미널에 입력하면 된다.
만약 위 명령으로 했는데 ERROR error: err_connection_refused
에러가 발생한다면 sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
명령을 입력해보자.
참고로 ec2 인스턴스를 중지했다가 다시 시작할 경우, 포트 리디렉션 설정을 다시 해주어야 한다.
11. 코드 빌드 후 pm2로 서버 실행
npx pm2 log
로 서버가 잘 돌아가고 있는지 확인한다.12. Postman으로 테스트
퍼블릭 IPv4 주소
를 이용하면 된다.http://localhost:8080/tweet
이런식으로 요청을 보냈었다면, 이제는 http://{퍼블릭 IPv4 주소}/tweet
로 요청을 보내면 된다.