AWS EC2 배포

AFDB·2024년 9월 12일

AWS EC2 배포를 위한 순서 및 유의점

1. AWS 인스턴스 생성 및 키페어 다운로드

  • ubuntu로 생성
  • 인스턴스 유형은 일단 프리티어가 제공되는 t2.micro로 사용
    ❗ 규모에 따라 필요 시 스케일 업하면 된다.
  • 생성하려는 키페어 이름 입력 후 다운로드

❗ 키페어는 .pem으로 다운로드 받아서 ppk로 만들 수 있다. 인스턴스 시작 버튼으로 인스턴스 시작

❗ 키페어 파일을 프로젝트에 추가하기
다운로드된 키 페어 파일을 프로젝트의 루트 경로에 추가될 경우, 깃허브에 노출되지 않도록 .gitignore에 키 페어 이름 .pem(or .ppk)를 추가

2. putty로 서버 접속

Host Name에는 인스턴스를 시작해서 나온 퍼블릭 IP주소를 입력하고 Save Sessions에는 임의로 지어준다.(지금 생성하는 설정을 저장하는 것이다.)

다운로드받았던 키페어를 Credentials의 Public-Key에 넣어준다.
(❗putty니까 ppk 파일)

❗ 여기서 그냥 open누르면 안되고, 카테고리 최상단의 Session을 눌러서 Host Name을 넣었던 화면으로 돌아야한다.

  • 지금은 첫 생성이니까 save하고,

  • 다음 접속할 때는 저장된 Dapji EC2Load한 후, open한다.

  • putty 터미널에서 로그인한다.

❗ 사용자이름은 보통 ubuntu

3. 접속 후 git, nginx, npm, node, mysql 등 필요한 패키지 설치

4. 백, 프론트 (재)빌드 과정

- 기존 디렉토리 삭제

  • 프론트엔드 디렉토리 삭제: rm -rf ~/frontend/front
  • 백엔드 디렉토리 삭제: rm -rf ~/backend/back

- 프론트엔드 클론 및 빌드

  1. 프론트 파일 클론할 위치로 이동: cd ~/frontend
  2. 프론트 깃 클론: git clone https://github.com/Dap-JI/front.git
  3. 환경변수(env) 설정 touch .env (❗방금 클론한 front경로인지 확인) 후, nano .env로 에디터 열어서 env 코드 복사
  4. 의존성 패키지 설치(npm) npm install
  • ❓이 과정에서 서버가 멈출 때!
    AWS의 EC2 프리티어 t2.micro의 RAM이 1GB 밖에 안돼서 램을 많이 사용하는 작업에서는 서버가 죽을 수도 있다.
  • ✅ 스왑 파일을 설정해서 스왑 메모리가 활성화되면, 물리적인 RAM이 부족할 때 디스크의 스왑 영역을 활용하여 메모리 부족으로 인한 시스템 다운이나 성능 저하를 방지할 수 있다.
//현재 스왑 활성화 상태 확인
//출력에 Swap 이 0 또는 비어있다면 스왑이 설정되지 않은 상태
free -h

// 2GB 스왑 파일 생성
sudo fallocate -l 2G /swapfile

// 권한 설정
sudo chmod 600 /swapfile

//스왑 영역으로 설정
sudo mkswap /swapfile

//스왑 활성화
sudo swapon /swapfile

//부팅 시 스왑 파일이 자동으로 활성화되도록 fstab 파일에 추가
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  1. 빌드 경로 초기화 sudo rm -rf /var/www/html/* 후, 프론트엔드 빌드 npm run build
  2. 빌드된 파일을 Nginx 루트 디렉토리로 복사 sudo cp -r .next/* /var/www/html/
  3. pm2로 실행(프론트 경로에서) pm2 start npm --name "next-app" -- start, pm2 save

- 백엔드 클론 및 구동

  1. 백엔드 파일 클론할 위치로 이동 cd ~/backend
  2. 백엔드 깃 클론 git clone https://github.com/Dap-JI/back.git
  3. 환경변수(env) 설정 touch .env (❗방금 클론한 back경로 확인) 후, nano .env 에디터 열어서 env 코드 복사
  4. 백엔드 app.js 에서 변경해야 할 포트번호나 IP주소 확인 후 수정 nano app.js
  5. 의존성 패키지 설치(npm) 설치 cd ~/backend/back , npm install
  6. pm2로 백엔드 애플리케이션 실행(❗백엔드 경로에서) pm2 start app.js --name backend, pm2 save
  7. nginx 서버 재시작 sudo systemctl restart nginx

0개의 댓글