내가 잊지않기 위해 기록하는 AWS의 S3, EC2, RDS를 활용한 초간단 배포 과정
내 컴퓨터에서 짜놓은 코드를 다른 컴퓨터에서도 접근 가능하게 만드는 것이 개발의 궁극적인 결과가 되어야 하므로 우리는 deploy(배포) 과정이 필요하다.
일단 크게 말해 풀스택 개발을 할 때 클라이언트, 서버, 데이터베이스의 코드를 짜게되는데 배포과정에서 각각을 누구라도 접근할 수 있는 퍼블릭으로 만들어주는 것이 S3, EC2, RDS이다.
S3는 Amazon Simple Storage Service
라는 말 그대로 인터넷용 스토리지 서비스이다. S3에 데이터를 업로드하기 위해 우선 S3버킷을 만들고 이 버킷에 원하는 데이터를 업로드하면 된다.
npm build
명령어로 build 파일들을 생성한다.속성
-정적 웹사이트 호스팅
이 버킷을 사용하여 웹사이트를 호스팅하도록 체크하고 인덱스 문서, 오류 문서를 설정(엔트리포인트가 되는 문서) 여기에 적혀있는 엔드포인트의 주소가 퍼블릭으로 공유 될 url 주소권한
차단된 퍼블릭 엑세스 설정
을 모두 풀어준다.권한
-버킷 정책
정책 생성기로 정책을 생성한다.
6. 생성 후에 생긴 JSON 형태의 정책을 복사해서 등록한다.
7. 버킷에 사전에 만들어두었던 build 파일들을 업로드한다.
내 컴퓨터에서 호스팅하고 있는 서버를 배포하는 과정에서 수많은 유저들이 내 컴퓨터에 직접 접속하게 되면 보안상의 위험과 성능을 장담할 수 없게 된다. 그래서 우리는 EC2를 이용해 가상의 컴퓨터를 임대 받고 유저는 이 EC2에 접근하여 API를 받을 수 있게 한다.
package.json
의 dependency
를 정확하게 확인해야하는 이유!ex) .ssh ~/Downloads/mykeyname.pem ./
인스턴스에 연결
에 나와있는 명령어를 pem키를 다운 받은 .ssh 폴더에서 실행한다.ex)
chmod 400 mykeyname.pem
ssh -i "mykeyname.pem" ubuntu@[myServerIpNumber]
ex)
sudo apt update
sudo apt install nodejs
sudo apt install npm
git clone <내 저장소 주소>
보안 그룹 설정
을 진행한다.HTTP
위치무관 / 사용자지정 TCP
에 열어놓은 서버 포트 설정, 위치무관/ mysql
에 열어놓은 서버 포트 설정, 위치무관 추가node app.js
로 서버를 키고 ip로 접근해보면 접근이 가능해진다. 9.터미널을 끄고도 서버가 계속 켜져 있도록 하기 위해 pm2를 설치한다. (pm2를 설치한 후에 8번의 방법으로 서버에 접근하면 오류가 생기니 주의!)
해당 서버 폴더에서 진행
sudo npm install pm2 -g --> 정상 설치 시 pm2 명령어 입력시 뭔가 나옴
pm2 start <엔트리포인트 파일> --> 프로세스에서 작동하게 됨
pm2 list --> 작동 중인 pm2 파일 확인 가능함.
클라우드의 관계형 데이터베이스인 RDS는 말 그대로 클라우드 상의 데이터베이스이다. 개발 시에 내 데이터베이스에 저장된 내용을 유저나 협업자가 접근할 수 없기 때문에 관계형 데이터베이스가 필요하다.
sudo apt-get update
sudo apt-get install mysql-client
-DB인스턴스 식별자
-마스터 사용자 이름
-마스터 암호
-데이터베이스 이름
-포트
-퍼블릭 엑세스 가능성 -> 예로 변경
를 주의해서 보기
mysql -u <마스터사용자이름> --host <엔드포인트> -P <포트> -p
입력한다.해당 데이터베이스에 내가 설정한 database가 존재해야, 포트번호가 모두 일치하는지 확인해야 하며 그렇지 않으면 작동하지 않으니 주의하기 !