두번 째 배우는 AWS라 그런지 저번달 보다 이해가 잘간다. 크게크게 흐름을 보려고 노력하자
오늘 배운것
- PM2
- 프론트엔드 배포 - S3
- 데이터베이스 연결 - RDS 인스턴스 생성/연결
간단하게 정리하자면..
- AWS에서 가상으로 컴퓨터 한대를 빌려오는 개념으로 EC2를 생성해주자.
- 간단한 서버 애플리케이션을 생성하고 EC2인스턴스에 코드를 배포하자
- 서버를 실행시키고 브라우저에서 서버에 접속할 수 있어야 한다.(퍼블릭DNS나 퍼블릭IP로 포스트맨에서 확인해보자)
- S3 콘솔을 통해 버킷을 생성해야한다.
- 클라이언트 앱에 들어가서 환경변수를 바꿔준다.(EC2와 연결, http:// 꼭 붙여주자.)
- 클라이언트 파일을 빌드하고 결과물을 버킷에 업로드해야 한다.(npm run build) 빌드에 성공하면 터미널 화면에 'Compiled Successfully'
- 정적 웹 호스팅 기능을 이용하여 클라이언트 코드를 배포해야한다.(호스팅활성화 하자, 버킷에 빌드파일 넣어주자. 정책 설정을 해주자.속성 정적 웹 사이트 호스팅으로 들어가면 맨 밑에 생성된 웹 사이트 엔드 포인트 주소가 있다.)
- RDS 콘솔을 통해 RDS 인스턴스를 생성해야 한다.(퍼블릭 액세스를 허용해주고, 포트 설정해주고, 초기 데이터베이스 이름 정해주고, EC2 환경변수에 데이터베이스 연결해주자)
- 로컬 터미널 혹은 EC2 인스턴스가 실행되고 있는 터미널을 통해 RDS 인스턴스에 연결해야 한다.
<MySQL클라이언트를 통해 RDS의 DB 인스턴스에 연결하기 위해서는 세 가지 정보가 필요하다>
- DB 인스턴스 생성 시 기재한 마스터 이름, 마스터 비밀번호
- 포트번호
- 생성한 DB 인스턴스의 엔드 포인트 주소
MySQL 을 통해서 DB 인스턴스에 접속(EC2에서 안하고 내 컴퓨터에서 해도됨) 'mysql -u [마스터 이름] --host [엔드 포인트 주소] -P 13306(설정한 포트 번호) -p' 명령어를 입력
-EC2 인스턴스에서 실행되고 있는 서버는, 그 자체로는 작동하고 있지만, 아직 데이터베이스에 연결하지는 않았다. RDS 인스턴스에 접속하고, 클라우드 데이터베이스를 사용할 수 있게 해보자.
- 서버 코드에 저장된 .env 파일에 환경 변수 설정하기
pm2 stop <id>
일단 EC2 인스턴스에서 실행하고 있는 서버를 종료한다.(환경변수 설정하기 전에 실행되는 서버를 종료 혹은 중단을 하고 설정을 해야 함)
DATABASE_HOST 변수에는 생성한 DB 인스턴스의 엔드포인트 주소를 넣는다.(http:// 붙이지 말자) DATABASE_USER 변수에는 마스터 사용자 이름을 넣는다. DATABASE_PASSWORD 변수에는 마스터 암호를 넣는다. DATABASE_PORT 에는 DB 인스턴스의 port 번호를 넣는다.
- 서버실행
sudo npm start
명령어를 입력해 서버를 재실행 하거나 혹은 PM2를 사용한 경우authbind --deep pm2 start app.js
명령어를 이용하여 프로세스를 시작하자.
-- 만약 오류가 발생하면 크롬 개발자 도구의 Network 탭에 들어가서 요청, 응답 과정에서 어떤 오류가 발생하는지 확인해보자.
빌드란 작성한 코드의 불필요한 데이터를 없애고, 통합 및 압축하여 배포하기 이상적인 상태를 만드는 과정을 말한다. 빌드 과정을 통해 코드를 담고 있는 데이터의 용량이 줄어들고, 웹 사이트의 로딩 속도가 빨라진다. 빌드하기에 앞서 환경변수를 담은 .env 파일을 확인하자. 그리고 환경변수에 담긴 서버의 주소는 문제가 없는지 확인해보자
프로세스 매니지먼트 도구 PM2 PM2는 node.js로 실행되는 프로그램(프로세스)를 관리해주며, 백그라운드에서 실행되게 만들어 줄 수 있다.
- 프로세스는 "컴퓨터 프로그램이 실행될 때 프로그램 실행에 필요한 내용이 컴퓨터 메모리에 적재된다는 의미"를 담고 있다.'실행 중인 프로그램'이라는 의미로 기억해도 괜찮다.
프로세스를 보는 방법 작업 관리자 활성 상태 보기 "ps"명령어 운영체제는 다양한 프로세스 관리 툴을 제공하는데, 이 중 ps 명령어를 기억하자. ps 명령어의 사용법을 통해 프로세스를 확인하는 방법을 알아두면 서버 운영에 큰 도움이 된다.