티스토리 뷰

공지사항

AWS EC2 배포하기

StartCoriny 2024. 2. 2. 05:57

일단 AWS에 가입이 되어있고 카드 등록이 다 된상황이라고 가정하고 시작 합니다.

 

EC2 Instance 생성

    • AWS EC2에서는 컴퓨터 하나의 단위를 Instance라는 이름으로 부릅니다. 즉, EC2를 생성한다는것 = 서버컴퓨터 대여

 

1. 콘솔 홈으로 들어갑니다.

로그인을 하게 된다면 바로 이 콘솔 홈으로 이동하게 됩니다.

 

 

2. Region(지역) 선택 - EC2 Instance가 어떤 지역에서 켜질지 선택합니다.

    지역이 가까울수록 접속 속도가 빨라집니다.

서울을 클릭해줍니다.

 

 

3. EC2 Instance 생성 : EC2 서비스 페이지로 이동합니다.

   상단 검색창에 EC2를 입력해 첫번째로 나오는 것을 클릭해 이동합니다.

버튼을 눌러서 이동
이 창으로 들어오면 됩니다.

 

 

4. EC2 Instance 생성: 운영체제 선택

왼쪽 인스턴스 탭에서 인스턴스를 누르면 이 창으로 들어오게 되는데 오른쪽 인스턴스 시작을 눌러줍니다.
인스턴스 시작창으로 들어와 집니다.

 

 

4 - 1. 애플리케이션 및 OS이미지 선택합니다.

ubuntu 선택

Amazon Machine Image(AMI) - Ubuntu Server 22.04 LTS(HVM) 선택

아키텍처 - 64비트(x86) 선택

 

 

4 - 2. 아래로 내려가서 인스턴스 유형을 선택합니다.

'프리티어 사용가능'이라고 적혀있는 t2.micro 타입을 선택합니다.

 

 

4 - 3. 키페어(keypair)이름 지정 및 다운로드를 합니다.

새 키페어 생성을 눌러주고
키페어 이름을 정해준뒤 키페어 유형 RSA와 프라이빗 키 파일 형식 .pem으로 정해주고 키페어 생성을 누릅니다.

키페어 파일이 다운로드 받아지면 잘 저장해 둡니다.

키페어는 서버에 접속할 수 있도록 해주는 신분증의 개념이므로 공유하면 안되고

다시 발급도 안되므로 EC2인스턴스를 지우기 전까지는 잃어버리지 않게 주의 하여야 합니다.

 

 

4 - 4. 인스턴스를 시작합니다.

인스턴스 시작 클릭
인스턴스를 시작했습니다 라는 문구가 뜨고 옆에 생성된 인스턴스를 클릭하면
생성된 인스턴스로 들어가는걸 확인 할 수 있습니다.

 

 

5. EC2 Instance 접속하기

SSH(Secure Shell)는 일반적으로 다른 컴퓨터에 연결할 대 사용되는 프로그램입니다.

  - 다른 접속 방법보다 보안이 뒤어나 서버 연결을 위해 일반적으로 사용됩니다.

  - 로컬 저장소에서 Github의 원격 저장소를 사용하기 위해 SSH Key를 발급했던 것과 동일합니다.

EC2 Instance 의 방화벽에서 22번 포트 가 열려있어야 접속 가능 (인바운드규칙 포트범위 22인것을 확인)

 

 

6. AWS EC2에 접속하기 

Windows는 ssh가 없으므로 git bash프로그램을 이용합니다.

git bash를 실행후 아래 코드를 입력합니다.

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

ex) ssh -i cd/desktop/coriny_Keypair ubuntu@12.123.456.78

이렇게 입력을하면 key fingerprint관련 메시지가 나옵니다.
Key fingerprint 관련 메시지가 나올 경우 Yes 를 입력한다면 위와 같이 됩니다.

 

 

7. AWS EC2 Node.js설치

Node.js v18을 설치해주는 명령어

apt-get 

  - 리눅스 운영체제에서 지원하는 패키지 매니저에서 원하는 패키지를 설치하는 명령어입니다.

  - apt는 리눅스 운영체제의 대표적인 패키지 관리 도구중 하나 입니다.

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

를 먼저 해준뒤

sudo apt-get install -y nodejs

를 해줍니다.

 

node가 잘 깔렸는지 확인 해줍니다.

# 설치된 Node.js 버전 확인하기
node -v
# 설치된 npm 버전 확인하기
npm -v

 

 

7. 서버 프로그램 실행 및 웹사이트 접속

 git clone을 하기 위한 래포지토리 주소를 가져 옵니다.

주소를 복사해 줍니다.

 

 

7 - 1. EC2 Instance 터미널에 접속해서 클론을 받아 줍니다.

# 원격 저장소로 부터 코드 가져오기
git clone <Github Repository URL>

ex) git clone https://github.com/startcoriny/product_REST_API.git

 

 

7 - 2. 해당 프로젝트로 이동하고 패키지를 깔아준뒤 실행합니다.

# 원격 저장소로부터 가져온 프로젝트로 이동
cd < 프로젝트명 >

ex) cd product_REST_API

# yarn을 사용하기 위한 전역 yarn 설치
ex ) sudo npm install -g yarn

# 원격 저장소로부터 가져온 프로젝트의 의존성 및 패키지 설치
ex ) yarn

# 프로젝트 실행
ex ) node app.js

DB에러 생기는 이유 - 환경변수로 설정한 파일들은 올라가지 않기 때문에 연결을 해주려면 리눅스 내에 환경변수 설정을 해주어야 합니다.

 

 

7 - 3 . vim을 통해 .env 파일 설정하기

 

git clone한 폴더 즉, 배포할 프로젝트 폴더로 들어갑니다.

# vim사용한 환경변수 설정
sudo vim .env

 

명령어를 실행하면 환경변수 편집하는곳으로 들어가집니다.

여기에서 로컬프로젝트에 있는 .env파일의 내용을 복사 붙여 넣기 하면 됩니다.

명령 모드의 vim

• 명령모드 : 복사 붙여 넣기가 가능하고 vim을 저장 및 종료할 수 있습니다. " I "를 통해 입력 모드로 갈 수 있습니다.

• 입력모드 : 글자를 쓸수 있고 왼쪽아래에 INSERT라는 글자가 보입니다. ESC를 통해 명령모드로 갈 수 있습니다.

• 저장하고 나가기 - :wq + enter 

• 저장하지 않고 나가기 - :q!

• 파일 저장하기 - :w

env내용을 복붙한뒤 저장하고 나갑니다.

 

그런뒤 프로젝트 파일 경로에서 node app.js를 실행한다면 연결된걸 확인 할 수 있습니다.

하지만 서버는 설정을 안했기 때문에 url은 연동이 안됩니다.

 

7 - 4. 웹 사이트 연동시키기

EC2 Instance의 방화벽에서 해당 포트 번호를 막고 있기 때문에 서버를 작동시켜도 url접속이 되지 않습니다.

 

인바운드 규칙 변경

콘솔 > 인스턴스 > 인스턴스ID를 클릭합니다.
보안을 클릭한뒤 보안 그룹을 눌러줍니다.
오른쪽 상단의 인바운드 규칙 편집을 눌러줍니다.

 

규칙추가 버튼을 눌러 정보를 추가합니다.

유형 : 사용자 지정 TCP

포트범위: 3000 (개인의 서버 포트 번호 ex) Node.js )

소스 : Anywhere-IPv4 , 0.0.0.0/0 

위 정보들을 입력해준위 규칙저장을 눌러줍니다.

 

 

위 주소를 복사합니다.

http://<복사한IP>:3000

위 처럼 경로를 만들어준다음 이동하면 접속하는 걸 확인 할 수 있습니다.

 

8. PM2 서버 실행 프로그램 적용 시키기

위 작업까지 끝내면 웹사이트에 접속 할 수 있지만 서버의 작동이 끊기는 순간 웹사이트 접속이 불가능해 집니다.

그렇기 때문에 Node.js를 실행하고 관리하도록 만들어진  pm2를 이용.

 

pm2

  - 프로세싱 매니징 도구로 Node.js를 편하게 관리할 수 있게 도와주는 라이브러리입니다.

  - 터미널을 종료하더라고 웹 서버가 실행 될 수 있게 하거나 Log정보들을 실시간으로 확인하여

    현재 서버의 상황을 더욱 빠르고 명확하게 관리할 수 있습니다.

 

pm2설치

# Linux의 관리자 계정으로 전환합니다.
sudo -s

 

# yarn을 사용하여 pm2 라이브러리를 전역 프로그램으로 설치합니다.
yarn global add pm2

 

# pm2 로 app.js 파일을 실행합니다.
pm2 start app.js

위 명령어를 실행하면 위 사진과 같이 뜨게되는데 이렇게 되면 성공적으로 실행 된 것 입니다.

 

 

pm2 명령어

pm2 delete [pid number]           ex) pm2 delete 0 id가 0인 프로세스를 종
pm2 restart [idNumber]             ex) pm2 restart app.js app.js 재실행
pm2 restart [idNumber]             ex) pm2 restart 0 id가 0인 프로세스 재실
pm2 list pm2로 관리되는 모든 서비스의 목록을 출력
pm2 log 모든 서비스의 로그를 출력
pm2 logs --lines [number]         ex) pm2 logs --lines 100 마지막으로 발생한 로그 순서대로 100개를 출력
pm2 reload all 코드에 수정사항이 있을경우 다시 읽고 반영
pm2 reload [id Number]            ex) pm2 reload 0 해당 id(서버)에다가 변경사항을 다시 로드한뒤 반영

 

 

ec2서버에서 변경사항있는 깃허브 코드 가져오기

# root@ 경로에서는 
git pull

# ubuntu@ 경로에서는 
sudo git pull
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함