[AWS] EC2, S3 배포

Lia·2024년 6월 22일
0
post-thumbnail

1. EC2 인스턴스 설정 및 서버 배포

EC2 인스턴스 생성

  1. AWS Management Console에 로그인 후, EC2 서비스로 이동
  2. 새로운 EC2 인스턴스를 생성
  3. 인스턴스 유형 선택
  4. 키 페어 생성 및 다운로드 (SSH 접속을 위해 필요)
  5. 네트워크 설정에서 보안 그룹 설정

서버 코드 준비 및 배포

  1. EC2 인스턴스에 SSH로 접속

    ssh -i <your-key-pair>.pem ubuntu@<your-ec2-public-ip>
  2. 서버 코드 클론

    git clone <your-repo-url>
    cd <your-repo-directory>
  3. 필요한 패키지 설치

    npm install
  4. 서버 실행

    node server.js

PM2를 사용한 서버 관리

터미널 세션이 종료될 때 서버도 종료되기 때문에, PM2를 사용해 보았습니다.

  • 해결 방법: PM2는 프로세스 매니저로, 서버를 백그라운드에서 실행하고, 터미널 세션 종료와 상관없이 서버를 계속 실행시킬 수 있습니다.
  • 추가 기능: PM2는 서버 프로세스를 모니터링하고, 서버가 다운되면 자동으로 재시작하는 등의 기능도 제공합니다.
  1. PM2 설치

    sudo npm install -g pm2
  2. 서버를 PM2로 실행

    pm2 start server.js --name "my-app"
  3. PM2 상태 확인

    pm2 status
  4. PM2 로그 확인

    pm2 logs "my-app"
  5. PM2 종료

    pm2 stop my-app
  6. 다시 시작

    pm2 restart my-app

2. 프론트엔드 배포

S3 버킷 생성 및 설정

  1. AWS Management Console에서 S3 서비스로 이동
  2. 새로운 S3 버킷을 생성
  3. 버킷에서 정적 웹 호스팅을 활성화하고, 인덱스 문서와 오류 문서를 index.html로 설정

빌드된 프론트엔드 파일 업로드

  1. 로컬에서 React 애플리케이션 빌드

    npm run build
  2. S3 버킷에 빌드된 파일 업로드

    • AWS Management Console에서 S3 버킷으로 이동.
    • build 폴더 내의 모든 파일을 업로드.

버킷 정책 설정

  1. 퍼블릭 액세스 차단 설정 해제
  2. 버킷 정책을 추가하여 퍼블릭 읽기 권한을 부여

3. 발생한 에러 및 해결 방법

1. HTTP 405 오류

  • 문제: 클라이언트에서 서버로의 HTTP 요청이 405 오류를 반환하였습니다.
  • 원인: API 엔드포인트가 잘못된 경로로 설정되어 있었습니다.
  • 해결 방법: API 엔드포인트를 로컬호스트에서 EC2 인스턴스의 퍼블릭 DNS로 변경했습니다.

2. 404 Not Found 오류

  • 문제: S3 버킷에서 index.html 파일을 찾을 수 없었습니다.
  • 원인: 빌드된 파일이 정확히 업로드되지 않았거나, 정적 웹 호스팅 설정이 잘못되었습니다.
  • 해결 방법: 빌드된 파일을 정확히 업로드하고, 정적 웹 호스팅 설정에서 인덱스 문서와 오류 문서를 index.html로 설정했습니다.

3. 모듈 오류

  • 문제: 서버 실행 시 node_modules의 모듈 관련 오류가 발생했습니다 (invalid ELF header).

  • 원인: 로컬 환경에서 설치된 모듈이 EC2 인스턴스의 환경과 호환되지 않았습니다.

  • 해결 방법: EC2 인스턴스에서 직접 node_modules를 삭제하고 다시 설치했습니다.

    # 기존 node_modules 폴더 삭제
    rm -rf node_modules
    
    # package-lock.json 파일 삭제
    rm package-lock.json
    
    # 패키지 다시 설치
    npm install

다음엔,, CloudFront 배포를 해보겠습니다!

profile
https://lia-portfolio.vercel.app/

0개의 댓글