TIL 220106

soyoungdl·2022년 1월 6일
0

TIL

목록 보기
18/34

😎 Today

두번 째 배우는 AWS라 그런지 저번달 보다 이해가 잘간다. 크게크게 흐름을 보려고 노력하자

오늘 배운것

  • PM2
  • 프론트엔드 배포 - S3
  • 데이터베이스 연결 - RDS 인스턴스 생성/연결

😎 AWS

간단하게 정리하자면..

👄 서버 배포(EC2)

  • AWS에서 가상으로 컴퓨터 한대를 빌려오는 개념으로 EC2를 생성해주자.
  • 간단한 서버 애플리케이션을 생성하고 EC2인스턴스에 코드를 배포하자
  • 서버를 실행시키고 브라우저에서 서버에 접속할 수 있어야 한다.(퍼블릭DNS나 퍼블릭IP로 포스트맨에서 확인해보자)

👄 클라이언트 배포(S3)

  • S3 콘솔을 통해 버킷을 생성해야한다.
  • 클라이언트 앱에 들어가서 환경변수를 바꿔준다.(EC2와 연결, http:// 꼭 붙여주자. EC2의 애플리케이션에서 환경변수를 바꿔준다., 내 컴퓨터에는 안바꿔주어도 되는듯?, 다음의 빌드 과정에서 내 컴퓨터의 환경변수는 상관없는것같다. )

  • 클라이언트 파일을 빌드하고 결과물을 버킷에 업로드해야 한다.(npm run build)
    빌드에 성공하면 터미널 화면에 'Compiled Successfully'
  • 정적 웹 호스팅 기능을 이용하여 클라이언트 코드를 배포해야한다.(호스팅활성화 하자, 버킷에 빌드파일 넣어주자. 정책 설정을 해주자.속성 정적 웹 사이트 호스팅으로 들어가면 맨 밑에 생성된 웹 사이트 엔드 포인트 주소가 있다.)

👄 데이터베이스 연결(RDS)

  • RDS 콘솔을 통해 RDS 인스턴스를 생성해야 한다.(퍼블릭 액세스를 허용해주고, 포트 설정해주고, 초기 데이터베이스 이름 정해주고, EC2 환경변수에 데이터베이스 연결해주자)
  • 로컬 터미널 혹은 EC2 인스턴스가 실행되고 있는 터미널을 통해 RDS 인스턴스에 연결해야 한다.

<MySQL클라이언트를 통해 RDS의 DB 인스턴스에 연결하기 위해서는 세 가지 정보가 필요하다>
1. DB 인스턴스 생성 시 기재한 마스터 이름, 마스터 비밀번호
2. 포트번호
3. 생성한 DB 인스턴스의 엔드 포인트 주소

MySQL 을 통해서 DB 인스턴스에 접속(EC2에서 안하고 내 컴퓨터에서 해도됨)
'mysql -u [마스터 이름] --host [엔드 포인트 주소] -P 13306(설정한 포트 번호) -p' 명령어를 입력

🖐 서버 환경 설정

-EC2 인스턴스에서 실행되고 있는 서버는, 그 자체로는 작동하고 있지만, 아직 데이터베이스에 연결하지는 않았다. RDS 인스턴스에 접속하고, 클라우드 데이터베이스를 사용할 수 있게 해보자.

  1. 서버 코드에 저장된 .env 파일에 환경 변수 설정하기 pm2 stop <id>
    일단 EC2 인스턴스에서 실행하고 있는 서버를 종료한다.(환경변수 설정하기 전에 실행되는 서버를 종료 혹은 중단을 하고 설정을 해야 함)

DATABASE_HOST 변수에는 생성한 DB 인스턴스의 엔드포인트 주소를 넣는다.(http:// 붙이지 말자)
DATABASE_USER 변수에는 마스터 사용자 이름을 넣는다.
DATABASE_PASSWORD 변수에는 마스터 암호를 넣는다.
DATABASE_PORT 에는 DB 인스턴스의 port 번호를 넣는다.

  1. 서버실행
    sudo npm start 명령어를 입력해 서버를 재실행 하거나 혹은 PM2를 사용한 경우 authbind --deep pm2 start app.js명령어를 이용하여 프로세스를 시작하자.

-- 만약 오류가 발생하면 크롬 개발자 도구의 Network 탭에 들어가서 요청, 응답 과정에서 어떤 오류가 발생하는지 확인해보자.

💀 빌드

빌드란 작성한 코드의 불필요한 데이터를 없애고, 통합 및 압축하여 배포하기 이상적인 상태를 만드는 과정을 말한다. 빌드 과정을 통해 코드를 담고 있는 데이터의 용량이 줄어들고, 웹 사이트의 로딩 속도가 빨라진다.
빌드하기에 앞서 환경변수를 담은 .env 파일을 확인하자. 그리고 환경변수에 담긴 서버의 주소는 문제가 없는지 확인해보자

💀 PM2

프로세스 매니지먼트 도구 PM2
PM2는 node.js로 실행되는 프로그램(프로세스)를 관리해주며, 백그라운드에서 실행되게 만들어 줄 수 있다.

  • 프로세스는 "컴퓨터 프로그램이 실행될 때 프로그램 실행에 필요한 내용이 컴퓨터 메모리에 적재된다는 의미"를 담고 있다.'실행 중인 프로그램'이라는 의미로 기억해도 괜찮다.

    프로세스를 보는 방법
    작업 관리자
    활성 상태 보기
    "ps"명령어
    운영체제는 다양한 프로세스 관리 툴을 제공하는데, 이 중 ps 명령어를 기억하자. ps 명령어의 사용법을 통해 프로세스를 확인하는 방법을 알아두면 서버 운영에 큰 도움이 된다.


그림출처: 코드스테이츠

profile
개발자

0개의 댓글