2020. 08. 03. AWS_2_1

달밤·2020년 8월 3일
1

TIL

목록 보기
88/110
post-thumbnail

오늘 배운 것

AWS 1/2

Amazon Web Services(AWS)

  • 클라우드 : 인터넷을 통해 제공되는 서버와 해당 서버에서 실행되는 소프트웨어 및 데이터베이스를 나타낸다.
  • 클라우드 컴퓨팅 : 클라우드 컴퓨팅(Cloud Computing)은 클라우드를 통해 가상화된 컴퓨터의 시스템 리소스를 즉시 제공하는 것이다.
  • Deployment(배포) : 어플리케이션을 클라우드 서비스에 설치 하는 것

1. S3

Simple Storage Service의 약자로 파일 서버의 역할을 하는 서비스이다.

A. 버킷 만들기

  1. react의 경우 npm run build 명령어를 통해 정적 파일을 생성해야한다.
  2. S3를 통해서 SPA 정적파일을 제공하기 위해서는 버킷을 만든다.
  3. 버킷에 정적 파일을 업로드한다.

B. 버킷 환경설정

  1. 속성 -> 정적 웹 사이트 호스팅 카드에서 웹 호스팅이 가능하도록 설정을 바꾸고 endpoint를 설정해준다.
  2. 권한 탭에서 모든 퍼블릭 액세스 차단 체크를 풀어준다.
  3. 권한-> 버킷정책 에 정책 생성기를 통해 생성한 JSON형식의 정책을 써준다.
    • SPA의 경우 S3 bucket policy를 선택하고, principle, ARN에 생성한 버킷 이름을 조합해서 적어준다.
    • 생성된 정책을 복사해서 붙여넣으면 끝!
  4. 속성 -> 정적 웹 사이트 호스팅 카드에서 엔드 포인트를 확인하고 접속하면 된다.

2. EC2

Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장식 컴퓨팅을 제공합니다. <AWS 설명 중>

즉 서버를 실행하기 위해서 내 컴퓨터를 사용하는 대신 클라우드에 있는 가상의 컴퓨터를 이용하는 것. 그런 서비스를 제공하는 클라우드 서비스.

A. 내 PC와 인스턴스에 연결

  1. 배포하고 싶은 서버를 생성한다.
  2. 인스턴스를 만든다. *인스턴스 : 가상 컴퓨팅 환경
  3. 이제 내가 만든 인스턴스와 연결하기 위해 연결 탭을 확인한다.
    • 인스턴스를 만들면서 생성된 .pem 파일을 다운로드 받고, 루트 디렉토리에 있는 .ssh 폴더로 복사한다.
    • chmod 400 <생성된 pem 파일 이름 >
    • 퍼블릭 DNS(IPv4)IPv4 퍼블릭 IP를 이용해 인스턴스와 연결한다.
  4. 인스턴스 연결에 성공했다!

B. 인스턴스에서 서버 실행

  1. 최초 연결된 인스턴스에는 Git만 설치되어 있을 뿐 런타임인 Node.js 나 패키지 설치매니저 NPM은 깔려있지 않다.
  2. 서버를 실행하기 위해서 Node.jsnpm을 설치한다.
  3. 현재 보안 규칙은 기본값으로 설정되어 있는 상태이다. 인스턴스 보안그룹 -> 인바운드 규칙을 수정해야한다.
    • 우선 HTTP 요청을 수행할 수 있어야하므로 HTTP 프로토콜을 모든 IP에서 요청할 수 있도록 수정하고,
    • 서버를 켤 때 PORT를 지정해 주었으므로, 사용자 지정 TCP에서 해당 포트 숫자를 적어주도록 하자.
  4. 연결된 인스턴스에서 git을 이용해 서버를 다운받고, 서버를 실행시키자.
  5. 이제 인스턴스의 IPv4 퍼블릭 IP + :<사용하고 있는 PORT> 를 통해서 접속할 수 있을 것이다.
  6. 하지만 이 경우 인스턴스의 터미널을 끄면, 서버 실행도 종료된다. 이 문제를 해결하기 위해서 PM2를 글로벌로 깔아준다음 서버를 실행하면 터미널을 종료해도 서버는 계속해서 실행되는 모습을 확인할 수 있다.
    • npm install pm2 -g *설치가 안되면 sudo 권한을 주어서 다시 시도해보자
    • pm2 start <서버 실행 파일> 으로 서버를 실행하고
    • pm2 list, pm2 stop, pm2 delete등을 통해 서버실행 상태를 확인거나 지우거나 할 수 있다.

참고문헌

profile
다 늦은 밤, 달밤의 개발일기

0개의 댓글