[S4]Chapter9. [Deploy] Amazon Web Service

박현석·2022년 12월 7일
1

코드스테이츠

목록 보기
37/40
post-thumbnail

Amazon Web Service

Cloud Computing

기존의 서버 방식



Cloud




Deploy



작성한 코드가 다른 환경에서 정상 작동할 수 있게 하려면?

  • 절대경로 대신 상대경로를 사용
  • 환경에 따라 포트를 분기할 수 있도록 환경변수를 설정
  • (Advanced) Docker 와 같은 개발 환경 자체를 통일시키는 솔루션을 사용

EC2








RDS




S3










Deploy Strategy



빌드

  • 붎필요한 데이터를 없애고, 통합/압축하여 배포하기 최적화된 상태를 만드는 것
  • 데이터의 용량이 줄어들고 웹 사이트 로딩 속도가 빨라진다.







백엔드 배포 실습

  • AWS 로그인한다.
  • 리젼을 서울로 설정한다.
  • AWS 콘솔에 EC2 를 클릭하여 대시보드로 이동한다.
  • EC2 인스턴스를 클릭하고 연결한다. 만약 인스턴스가 없다면 인스턴스 시작을 눌러 만들어준다.
  • 인스턴스에 들어가 세션 매니저를 이용하여 접속하면 브라우저 환경에서 터미널이 실행이된다.
  • bash -> cd ~ 를 해준다.

Create & Access EC2 Instance


  • 용도에 맞게 AMI를 선택하는 과정
  • 프리 티어 사용 가능 태그를 확인하여 과금이 되지 않도록 유의
  • 인스턴스 유형을 선택하는 과정
  • 생성되는 인스턴스를 원격으로 제어하기 위해서는 SSH 연결을 통한 원격접속이 필요하다.
  • 원격접속을 위해서 필요한 Key를 생성하고 다운로드하는 과정
  • 새 키 페어 생성 메뉴를 확인한 후 키 페어의 이름을 정한 뒤 키 페어를 다운로드하면 인스턴스 시작 버튼이 활성화
  • SSH 프로토콜은 서로 다른 PC가 인터넷과 같은 Public Network를 통해 통신을 할 때 보안상 안전하게 통신을 하기 위한 통신 규약
  • 주고받는 데이터를 암호화해서 해당 키 페어를 가지지 않은 사람은 통신되는 데이터를 알아볼 수 없기 때문에 보안상 안전한 통신 방법
  • 다운로드 한 파일은 SSH 통신을 위한 키 페어 중 프라이빗 키가 기록된 파일이고, .pem 확장자를 가지고 있다.
  • 해당 키 페어 파일은 EC2 인스턴스에 연결을 할 때 사용하는 암호가 담긴 파일이다.
    따라서 pem 파일은 관리에 유의해야한다.















EC2 인스턴스 상에서 서버 실행

1. 인스턴스에 개발 환경 구축하기

  • EC2 인스턴스와 연결한 터미널에 sudo apt update 명령어를 입력
    - 패키지 매니저가 관리하는 패키지의 정보를 최신 상태로 업데이트하기 위해서 아래 명령어
  • curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash (명령어 입력)
  • export NVM_DIR="([z"([ -z "{XDG_CONFIG_HOME-}" ] && printf %s "HOME/.nvm"printf{HOME}/.nvm" || printf %s "{XDG_CONFIG_HOME}/nvm")"
    [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
  • nvm 설정 벨로그에서 코드가 이상하게 나오니 https://github.com/nvm-sh/nvm#install--update-script / Install & Update Script 참조
  • nvm install node (명령어 입력)
  • sudo apt install npm (명령어 입력)

2. git을 통해 서버 코드 클론 받기

  • 로컬 컴퓨터에 git clone을 위해 진행했던 SSH등록이 필요하다.

SSH 키 생성

  • ssh-keygen (명령어 입력)

공개키(Public Key) 복사

  • cat ~/.ssh/id_rsa.pub (명령어 입력)

Github에 공개키 등록




예시 (공개키 등록후)

  • cd ~ 명령어로 홈 디렉토리로 이동
  • git clone https://github.com/codestates-seb/fe-sprint-practice-deploy.git 클론할 레포지토리 클론
  • ls 명령어를 입력하여 폴더명이 보이면 정상적으로 다운로드가 완료
  • cd fe-sprint-practice-deploy/server/ 이동후 npm i 명령어를 입력해서 필요한 모듈 다운

3. EC2 인스턴스에서 서버 실행하기

  • npm i 를 설치 과정이 완료되면 npm start 명령어를 이용해서 서버를 실행하면 위 사진과 같이 오류가 뜬다.
    오류가 보이는 이유는 아래의 포트 번호를 이용해서 서버를 실행하려면 관리자 권한이 필요하기 때문이다.
    관리자 권한으로 서버를 시작하기 위해서는 sudo npm start 명령어를 입력해야한다.

  • 퍼블릭 IPv4 주소와 퍼블릭 IPv4 DNS는 형태만 다를 뿐 같은 주소

Security Group









PM2





  • npm install pm2 -g
  • pm2 start 파일 이름

  • sudo apt-get update
  • sudo apt-get install authbind
  • sudo touch /etc/authbind/byport/80
  • sudo chown ubuntu /etc/authbind/byport/80
  • sudo chmod 755 /etc/authbind/byport/80
  • authbind --deep pm2 update

프론트엔드 배포 실습

  • AWS 콘솔에서 S3를 검색
  • 나의 버킷이 있으면 있는 버킷을 사용하고 없다면 버킷 만들기
  • 이건 아까 EC2 에 있던 서버를 클라이언트 폴더 .env 파일에 넣어놓은 작업
  • 클라이언트 폴더도 npm i 를 해주고 npm run build 를 합니다.
  • 빌드 폴더이 만들어지는데, 빌드 폴더 자체를 넣지 않고, 스택틱 폴더와 각종 파일들을 넣는다.

Hosting a Static Website

































profile
선한 영향력을 주는 사람

0개의 댓글