Error Handling with AWS 배포

untitiled

서버 배포(EC2)

  • EC2 콘솔을 통해 EC2 인스턴스를 생성
  • 간단한 서버 애플리케이션을 생성하고 EC2 인스턴스에 코드를 배포
  • 서버를 실행시키고 브라우저에서 서버에 접속 .pem : SSH 통신을 위한 키 페어 중 프라이빗 키가 기록된 파일 소유자에게만 권한 부여 해야함
  1. 인스턴스에 접속 했다면 개발 환경 구축
  2. 코드 클론 받기
  3. 서버 실행하기

EC2 인스턴스에서 실행 중인 서버가 인터넷에서 요청을 받을 수 있도록 인바운드 규칙을 설정

PM2는 node.js로 실행되는 프로그램(프로세스)를 관리해 주며, 백그라운드에서 실행되게 만들 수 있음 인스턴스 서버 환경에서 pm2 설치했으나 1024번 아래의 포트 번호를 이용해서 서버를 실행시키는 경우, 관리자 권한이 필요. => authbind 패키지 설치. 이제 pm2 명령어 사용 되겠지? ㅎㅎ 또 안되네 구글링 결과 노드 버전 문제인듯? pm2 node 버전이 업데이트 되어버린 것을 확인…nvm use 16로 해결함 인스턴스 새로 들어오면 똑같은 노드 버전 오류 => nvm alias default 로 해결 참조: https://emessell.tistory.com/197

pm2 를 활용해서 Node.js 무중단 서비스를 위한 커맨드 플로우 예시

pm2를 글로벌로 설치 한 이후 인스턴스 터미널에서 아래 명령어를 차례대로 입력하여 authbind를 설치한다.

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

authbind의 설치를 완료한 뒤, 먼저 ‘pm2 ls’ 명령어를 통해 어떤 프로그램이 PM2의 프로세스 리스트에 등록 되어 있는지 확인

‘app’ 프로세스가 리스트에 있다면 ‘pm2 delete app.js’ 명령어를 통해 프로세스를 삭제

authbind 설치 전에 실행되고 있던 프로세스에는 관리자 권한을 부여하지 못하기 때문

PM2에 관리자 권한을 부여하기 위해서는 ‘authbind –deep’ 명령어를 앞에 추가

‘authbind –deep pm2 start app.js’ 명령어를 통해 서버를 다시 실행하면 이번에는 문제없이 작동

S3 버킷을 이용하여 정적 웹 사이트를 호스팅

  1. 구현이 완성된 정적 웹 페이지를 빌드
  2. 빌드 과정이 끝나면 S3 대시보드에 접속하여 버킷 생성, 버킷을 정적 웹 사이트 호스팅 용으로 구성
  3. 빌드된 정적 웹 페이지를 버킷에 업로드.
  4. 퍼블릭 액세스 차단 해제 및 접근 권한을 부여하는 버킷 정책 생성 **.env파일 확인, 요청 서버 주소를 환경 변수에 담을때 ‘http://’, ‘https:// 포함시키기, 버킷 정책 생성시 arn:aws:s3:::<버킷이름>/별표**

데이터베이스 연결 (RDS)

  • MySQL 데이터베이스 엔진을 사용하는 DB 인스턴스를 생성한 뒤, 로컬 환경에서 MySQL 클라이언트를 활용하여 DB 인스턴스에 연결.

베포 과정에서 근거를 바탕으로 차근차근 진행해야 했지만 조급하게 진행하다보니 잦은 오류를 마주쳤다. 팀원분과 골머리를 싸매고 어디가 문제일까 다 제대로 한것 같은데 라는 생각도 했지만 결국 사소한 부분을 놓친 부분인 경우가 많았다. 오류에는 반드시 이유가 있고 반드시 무조건 해결 할수 있다는 점을 다시 한번 리마인드 하게 되었다.


© 2021. All rights reserved.

----------Powered by Hydejack----------

woobaeh