AWS EC2 배포하기

2023. 6. 24. 21:56AWS

선행작업

 

https://muyeon95.tistory.com/186

 

github SSH Repository [ git ]

- 우선 repository 를 생성한다. - SSH 키를 발급받는다. 생성한 repository 를 사용하기 위해서 로컬환경에서 깃허브를 사용하기 위해 인증을 받아야 한다. 첫째 Personal access token 을 등록하는 것 둘째 SSH

muyeon95.tistory.com


https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Home: 

 

https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Home:

 

ap-northeast-2.console.aws.amazon.com


EC2 Instance 생성

 

AWS EC2 에서는 컴퓨터 하나의 단위를 Instance 라는 이름으로 부른다.

 

인스턴스 시작 클릭

 

1. 왼쪽 메뉴에서 "인스턴스" 를 눌러 페이지를 이동

2. 우측 상단에 있는 "인스턴스 시작" 버튼을 눌러 페이지를 이동한다.

 

 

3. Ubuntu 선택, Ubuntu Server 22.04 LTS(HVM) 선택 , 아키텍처는 64비트

 

인스턴스 유형 선택

 

"프리 티어 사용 가능" 이라고 적혀있는 t2.micre 타입을 선택

 

"새 키 페어 생성" 선택 후 새 키 페어 생성 클릭 후 키페어 이름, 키페어 유형, 프라이빗 키 파일 형식을 설정한다. RSA, .pem

 

설정을 마치고 버튼을 누르면 생성한 키 페어 파일이 다운로드 된다.

 

** 키페어는 서버에 접속할 수 있도록 해주는 신분증이다. 공유 하면 안되고, 잃어버리면 다시는 발급받을 수 없다. EC2 Instance 를 지우기 전까지는 절대 분실하면 안된다.

 

 


EC2 Instance 종료하는 법

 

대상 인스턴스에 마우스 우클릭 > 인스턴스 중지 또는 종료 중 하나를 클릭하면 된다.


EC2 Instance 접속

 

AWS 에서는 Security Group 또는 보안 그룹 이라는 이름으로 방화벽을 제공한다.

 

SSH(Secure Shell) 는 일반적으로 다른 컴퓨터에 연결할 때 사용되는 프로그램, 다른 접속 방법보다 보안이 뛰어나 서버 연결을 위해 일반적으로 사용된다.

 

접속할 Instance 의 방화벽에서 22번 포트가 열려 있어야 접속 가능하다.

AWS EC2 의 경우, 기본적으로 생성하는 Instance 는 이미 22번 포트가 열려있다.

 


AWS EC2 접속

 

Mac 은 ssh 가 기본으로 설치되어 있어, 명령어로 바로 접근이 가능하다.

발급받은 Keypair 의 접근 권한을 바꾸어 준다.

cd Download

sudo chmod 400 sparta_keypair.pem

 

SSH 접속하기

// ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피

ssh -i sparta_keypair.pem ubuntu@54.180.114.211

Key fingerprint 관련 메시지가 나올 경우 Yes 입력

git bash 를 종료할 때는 exit 명령어를 입력하여 ssh 접속을 먼저 끊어준다.

 


Node.js 및 MongoDB 설치

 

node.js

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

sudo apt-get install -y nodejs
node -v
npm -v

 

 

mongoDB

curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

sudo mkdir -p /data/db

sudo chown -R 'ubuntu' /data/db

sudo apt-get update

sudo apt-get install -y mongodb-org
sudo service mongod start

sudo service mongod status


Github 에 있는 Repository Clone

 

git clone 여기에리포지토리주소복사

 

1. cd 폴더명

2. npm install

3. node app.js

 

 

브라우저에 주소 입력

 

http://복사한IP:3000

 하지만 접속이 되지 않는다.

 

서버 방화벽에서 접속을 허용하지 않았기 때문

 

EC2 Instance 가 가진 방화벽에서 3000번 포트를 막고 있기 때문에 node.js 로 서버를 아무리 켜도 접속할 수 없다.

 

https://console.aws.amazon.com/console/home

 

https://console.aws.amazon.com/console/home

 

console.aws.amazon.com

 

1. 인스턴스 페이지 접속

 

2. 생성된 EC2 선택하면 노출되는 하단 창에서 "Security" 탭 선택

이후 Security groups 라는 이름을 가진 링크를 누른다.

 

인바운드 규칙 변경

 

1. 인바운드 규칙 편집 클릭

 

 

2. 정보 입력 후 저장

Add rule 을 눌러 아래의 정보를 추가로 입력한다.

유형 : HTTP

소스 : Anywhere-IPv4

 

3. 

유형 : 사용자 지정 TCP

포트 범위 : 3000


EC2 Instance 포트 설정 : iptables

 

iptables : AWS 가 아닌 리눅스 운영체제 내부에서 방화벽 역할을 하는 프로그램

 

리눅스로 들어오는 모든 요청은 iptables 에 의해 정의된 규칙을 따라 처리되고, 이를 이용해 외부에서 80 포트로 들어오는 요청을 리눅스 내부에서 사용되는 3000 포트로 전달하도록 규칙을 설정한다.

 

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

 

이후 접속이 되는걸 확인 할 수 있다.

 

자주쓰는 리눅스 명령어 : https://muyeon95.tistory.com/192

 

자주 쓰는 리눅스 명령어

ls: 내 위치의 모든 파일을 보여준다. pwd: 내 위치(폴더의 경로)를 알려준다. mkdir: 내 위치 아래에 폴더를 하나 만든다. cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다. cd .. : 나를 상위 폴더로 이동시

muyeon95.tistory.com

 

이어서 터미널 접속이 끊기지 않게 하려면 아래 링크를 보면된다.

https://muyeon95.tistory.com/188

 

PM2 사용

node.js & mongoDB 를 우분투에서 계속 실행할 수 있는 방법에는 PM2 가 있다. node.js 를 실행하고 관리하도록 만들어진 pm2 를 이용한다. pm2 란 프로세스 매니징 도구로 node.js 를 편하게 관리할 수 있게

muyeon95.tistory.com