Bare Minimum Requirement
- Sprint Repository의 소스코드를 이용하여, 어떤 구조로 구성되어 있는지 확인합니다.
- HTTP 스프린트의 테스트를 모두 통과해야 합니다.
- 웹 애플리케이션이 배포 상태에서 잘 작동해야 합니다.
Getting Started
- EC2, S3, RDS와 Repository의 소스코드를 가지고 웹 애플리케이션을 배포하기 위해 어떤 아키텍처를 가져야하는지 이해해야 합니다.
- 아키텍처에 따라 어떤 과정을 먼저 진행해야 할지 확인합니다.
- 먼저 각 client , server 디렉토리에서 dependencies를 npm install 을 통해 설치합니다.
- 클라이언트와 서버 디렉토리에 각각 위치한 .env.example 파일을 보며 어떤 환경변수들이 정의되어 있는지 확인합니다.
- .env.example 파일을 .env 파일로 생성하여 REACT_APP_API_URL에 EC2에 배포한 서버 주소로 설정합니다.
- S3를 통해 client 디렉토리에 있는 소스코드를 먼저 정적 웹 호스팅 방식으로 배포합니다.
- .env 파일의 테스트에 필요한 환경변수를 채워넣습니다.
- client 디렉토리에서 npm run test1 명령을 사용해 테스트를 전부 통과하는지 확인하고, 웹 애플리케이션이 정상적으로 배포되어 작동하는지 확인합니다.
- 테스트가 모두 통과되면 제출하고, 다음 HTTPS 스프린트로 넘어갑니다.
클라이언트 배포 (S3)
- S3 콘솔을 통해 버킷을 생성해야 합니다.
- 클라이언트 파일을 빌드하고 결과물을 버킷에 업로드 해야 합니다.
- 정적 웹 호스팅 기능을 이용하여 클라이언트 코드를 배포해야 합니다.
- 클라이언트 배포가 완료되면 다음과 같은 화면이 출력됩니다.
- S3를 이용한 정적 웹 호스팅을 하기 위한 레퍼런스를 첨부하니, 이를 참고하여 스프린트를 진행하기 바랍니다.
서버 배포 (EC2)
- EC2 콘솔을 통해 EC2 인스턴스를 생성해야 합니다.
- EC2 인스턴스 생성 후 SSH 프로토콜을 통해 인스턴스에 접속합니다.
- SSH 프로토콜 사용시 .pem파일의 권한을 확인하고, 적절하게 권한을 부여해야 합니다.
- 인스턴스에 접속한 후, 필요한 개발 환경(git, npm, node) 등을 구축합니다.
- EC2에 브라우저를 통해 접근하려면 어떤 주소로 접근해야 하나요?
- client 폴더의 .env 환경설정의 REACT_APP_API_URL 과 EC2의 주소는 어떤 관계가 있나요?
- 간단한 서버 애플리케이션을 생성하고 EC2 인스턴스에 코드를 가져와야 합니다.
- 소스코드와 테스트 코드를 참고하여, 서버 코드가 어떻게 구성되어 있는지 확인합니다.
- 서버를 실행시키고 브라우저에서 서버에 접속할 수 있어야 합니다.
- 애플리케이션 레이어에서 어떤 프로토콜을 사용하고 있나요?
- 터미널을 종료해도 서버가 계속 돌아가게 하려면 어떻게 해야하나요?
- listen EACCES: permission denied 0.0.0.0:80 에러메세지를 만났다면, 1024번 이하의 포트에 대해서 학습하세요.
- 보안그룹은 어떤 역할을 하고, 어떻게 설정해야 하나요?
- 브라우저에서 서버에 접속하면 다음과 같이 출력됩니다.
데이터베이스 연결 (RDS)
- S3, EC2, RDS의 아키텍처는 어때야 하는지 고민해보세요.
- 데이터베이스에 모든 사람들이 접근해도 괜찮을까요? 아니라면, 보안그룹과 퍼블릭 액세스는 어떻게 설정해야 할까요?
- RDS 콘솔을 통해 RDS 인스턴스를 생성해야 합니다.
- 이번에 사용할 데이터베이스는 mysql입니다. 데이터베이스에 연결하기 위한 명령은 레퍼런스를 참고하세요.
- 해당 스프린트에서 사용할 기본 데이터베이스는 test입니다.
- 로컬 터미널 혹은 EC2 인스턴스가 실행되고 있는 터미널을 통해 RDS 인스턴스에 연결해야 합니다.
- RDS 환경설정은 어떻게 해야 할까요?
- 데이터베이스 연결까지 완료하면 아래와 같은 화면이 출력되어야 합니다.
구현 결과
npm run test1 통과
S3 버킷을 통해 정적 웹사이트 호스팅
EC2 서버와 RDS 연동 성공
EC2 설정
S3 설정
RDS 설정
참고 자료
AWS EC2 서버에 ssh로 접속하여 GitHub와 연동
https://qhdl0224.tistory.com/2
ssh 접속
chmod 400 key-pair-name.pem
ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
서버 실행 시 listen EACCES: permission denied 0.0.0.0:80 오류 발생
-> sudo node app.js 로 실행 (gpt)
(나중에 엔지니어님이 다른 팀에게 말하는거 엿들었는데 저렇게 하는게 답이 맞는 것 같다)
처음에 진짜 감도 안와서 방황을 하다가 엔지니어님 모셔와서 여쭤봤다
뭘 해야될지 감이 안와서 방향성을 물어보고 싶은데, 어디서부터 어떻게 질문해야될지도 모르겠는 상태다
엔지니어님.. 우리가 궁금하던 부분을 아주 시원하게 긁어주셨다..
S3 버킷에 어떤 파일을 넣어야되는지 의견이 분분했는데 그것도 말씀해주시구
EC2 서버에 서버파일을 올려야되는건지 그냥 깃으로 클론 땡겨오면 되는 건지 궁금했는데 그것도 말씀해주시구
딱 필요하던 방향성을 잡아주셨다 ((정훈님 짱))
aws 실습은 처음인데.. 내가 사용하는 대로 과금에 연결되다 보니 굉장히 긴장하고 진행했다
버킷 만들 때 리전을 서울로 선택하는 곳이 있어서 나머지도 자동으로 서울로 설정될 줄 알고 진행했다
rds가 돈 많이 나간다해서 만들기 무서워서 엔지니어님을 호출해서 같이 만들었다
엔지니어님와 rds 만들다가 엔지니어님이 "잠만 이거 왜 시드니야" 하고 발견해주셨다.. ㅋㅋㅋ
확인해보니 ec2도 시드니로 만들었었다 .. ^^.. ㅋ.. 그래도 빨리 발견해서 다행이다..
ec2 새로 만들어서 키도 새로 설정하고 ssh 설정도 새로 해야되고 ..
노드 모듈이 뭐가 문제인지 18버전으로 안돼서 강제로 다운그레이드도 하고 그랬다
너무 어렵다 진짜 .. 저번 주 이론때 공부한 내용이랑 실습이랑 연결이 안된다
이론은 그냥 이런 상품이 있어요~ 느낌이었고 실습으로 직접 적용할라니까 뭐 어케하라는거야 싶은 느낌
공부 따로 해야겠다.. 근데 돈 나갈까봐 무섭다..
프리티어 계정 하나 새로 만들어야겠다..
'Code States > TIL' 카테고리의 다른 글
[0418] AWS - 서비스 노출 (0) | 2023.04.18 |
---|---|
[0418] AWS - 수평 확장 (0) | 2023.04.18 |
[0414] AWS - 스토리지 (0) | 2023.04.14 |
[0414] AWS - EC2 (0) | 2023.04.14 |
[0414] AWS - AWS 서비스 소개 (0) | 2023.04.14 |