1. EC2 세팅하기 - 기본 설정
- 이름 및 태그 : 컴퓨터가 어떤 역할을 하는지 알 수 있게 작성
- instagram-server
- Application and OS Images ( Amazon Machine Image)
- Ubuntu 선택 - 프리 티어 선택가능한 버전으로
- 선택이유 : 가장 가벼운 OS
- Ubuntu 선택 - 프리 티어 선택가능한 버전으로
- Instance 유형 : 컴퓨터 한대의 사양
- 프리 티어에 해당하는 t2.micro를 사용
- 키 페어 (로그인)
- 빌린 컴퓨터에 접속할 때 사용하는 비밀번호
- 옵션 선택
- 유형 : RSA
- 프라이빗 키 파일 형식 : .pem
- 설정 후 받은 파일은 접속할 때 필요하므로 꼭 보관
- 옵션 선택
- 빌린 컴퓨터에 접속할 때 사용하는 비밀번호
2. EC2 세팅하기 - 보안그룹 설정
- 네트워크 설정
- 편집 → Firewall (security groups)을 설정
- 외부와 내부에서 발생하는 트랙픽에서 어떤 트래픽을 허용할지 설정하는 것
- 편집 → Firewall (security groups)을 설정
- Inbound traffic ( 외부 → EC2 instance로 접근하는 트래픽)
- 규칙 1 : ssh - 22번 포트 - 위치무관
- ssh는 원격 접속을 위한 용도
- 위치무관이라는 것은 모든 요청을 보내는 ip를 허용한다는 것
- 규칙 2 : HTTP - 80번 포트 - 위치무관
- 규칙 3: HTTPS - 433번 포트 - 위치무관
- 규칙 3: custom TCP - 3000번 포트 - 위치무관
- 규칙 1 : ssh - 22번 포트 - 위치무관
3. EC2 세팅 하기 - 스토리지 구성
- 스토리지 구성 - volume
- EBS (Elastic Block Storage) : EC2 안에 부착되어 있는 일종의 하드디스크
- 셋팅
- 30 GiB - gp3 : 가성비 및 프리 티어에서 제공해 주는 용량 선택
- 추후에 증가 가능
- 30 GiB - gp3 : 가성비 및 프리 티어에서 제공해 주는 용량 선택
-
- EC2 접속하기
- 생성된 인스턴스 정보 해석
- 퍼블릭 IPv4 주소 ( EC2 인스턴스가 생성되면서 부여받은 IP 주소)
- EC2 인스턴스에 접근하기 위한 IP 주소
- 인스턴스 상태 ( 현재 컴퓨터의 상태 설명)
- 컴퓨터 켜짐 : 실행 중
- 주의 : 종료 - 해당 EC2 인스턴스를 삭제한다는 의미, 취소 불가능
- 퍼블릭 IPv4 주소 ( EC2 인스턴스가 생성되면서 부여받은 IP 주소)
- EC2에 접속하기
- 인스턴스에 연결 - EC2 instance Connect을 사용하여 연결 선택
4. ssh 클라이언트로 EC2 접속하기
ssh -i "생성한-key-pair-파일.pem" ubuntu@ec2-3-36-70-252.ap-northeast-2.compute.amazonaws.com
- 위 명령어는 생성한 key pair이 있는 곳에서 실행
- -i : 'identity file'을 의미
- 사용자가 서버에 접속할 때 사용할 특정한 개인 키 파일을 지정하는 데 사용
- 파라메터 : "ddota-key-pair.pem"
- 접속위치 : ubuntu@ec2-3-36-70-252.ap-northeast-2.compute.amazonaws.com
- 의미:
- 원격으로 파라메터에 있는 파일을 이용하여서 접속위치에 접속을 한다.
- 파마메터: 비밀번호
- 접속위치: 리눅스 컴퓨터
- 원격으로 파라메터에 있는 파일을 이용하여서 접속위치에 접속을 한다.
5. 탄력적 IP 연결하기
- 탄력적(Elastic) IP : EC2 인스턴스를 잠시 중지시키고 다시 실행시켜도 IP 가 변하지 않도록 하는 기능
- ip의 부족현상으로 인해 만들어진 시스템
- 인스턴스를 중지시키면 이전에 할당받은 ip가 삭제되므로 탄력적 ip를 이용하여 고정 ip 주소를 획득
- 연결방법
- Elastic IPs 메뉴 선택
- 할당받은 ip 주소를 클릭 -> Associate Elastic IP address 클릭 -> 원하는 Instance 선택
6. Express 서버를 EC2에 배포하기
- node.js 설치 : 만든 앱에서 적용된 node.js 버전에 맞게 설치
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\sudo apt-get install -y nodejs
- Github으로 해당 레포지토리 clone 하기
$ git clone 깃허브-레포지토리-HTTPs주소
$ cd 복사된-레포지토리-폴더이름
$ npm i
npm i 의미 → package.json 에 있는 라이브러리를 설치!!
- pm2 설치해서 서버 실행시키기
$ sudo npm i -g pm2
$ sudo pm2 start app.js
7. Nest.js로 만든 애플리케이션 배포하기
- git hub에서 해당 레포지토리 클론
- node.js 설치
- pm2 설치
- nest.js 설치
$ sudo npm i -g @nestjs/cli
- ( 레포지토리가 복사된 폴더로 이동)
- pacakge.json 에 있는 라이브러리 설치
- 애플리케이션 bulild
$ npm i
$ npm run build
- Clone 한 폴더에 dist라는 폴더가 생성된다.
- 추가로 필요한 .env.prod 파일을 생성
- 애플리케이션 작성 시 설정했던 정보를 Production 모드에 맞게 입력.
추가 정보
- 현재 주소 확인 명령어 : curl ifconfig.me
- pm2 명령어
pm2 list //실행중인 앱 리스트 확인
pm2 logs 0 // id 0 앱에 관련된 로그 확인
pm2 stop 0 // id 0 앱 중지
pm2 delete 0 // id 0 앱 삭제
pm2 kill // pm2 를 종료
'서버 & 웹 개발 노트 > AWS' 카테고리의 다른 글
[ AWS ] RDS 와 DBeaver 에 연결하기 (0) | 2024.08.06 |
---|---|
[ AWS ] RDS 사용하기 (0) | 2024.08.06 |
[ AWS ] 맥북에서 alias로 설정한 명령어로 ec2접속하는 방법 (0) | 2024.06.07 |
[ aws ] mysql 설치하기 (0) | 2024.05.29 |
[ AWS ] 용어 정리 (0) | 2024.03.09 |