AWS 정리

LANA·2020년 6월 26일
0

AWS

목록 보기
4/4

S3

React build

npx create-react-app practice-react-deploy
  • react에 필요한 dependencies를 설치함
  • 가장 기본적인 react app이 세팅됨
npm start // react앱 실행... 우리가 해야할 건 localhost:3000에 띄우는 게 아님...!
npm run build 
//webpack을 통해 react의 여러 파일들을 하나의 폴더에 묶어 합쳐서
하나의 정적인 파일로 만들어줌

Create Bucket

  1. AWS Management Consle
  2. S3 클릭
  3. 개요 - 버킷 이름 설정 (고유한 이름으로)하여 버킷 생성
  4. 속성 - 정적 웹 사이트 호스팅 -  '이 버킷을 사용하여 웹사이트 호스팅' 클릭
    (오류문서 없으면 그냥 인덱스 문서랑 이름 같이 적음)

Public Access

What is ARN?
What is principal in policy?

퍼블릭 액세스 설정 -  모두 체크 해제
1. 버킷정책  - 정책 생성기
1) S3 bucket policy
2) Principal:  *
3) Actions 1 Action(s) Selected
4) Amazon Resource Name : 아래의 형식대로 수정
2. 정책 복사 후 정책 편집기에 등록. 이 버킷에 퍼블릭 액세스 권한 경고창 나옴. -- 이때까지는 페이지가 403 나옴..

  1. client의  build 폴더 안의 정적 파일들을 drag하여 버킷 안에 넣는다. -- 이때서야 페이지가 제대로 나옴.

EC2

Create Server Application

배포에 사용하기 위한 기본 server application을 만들어 봅니다.

간단한 노드 서버 app을 만들기 위해 폴더를 만들어 들어간다.

1) mkdir practice-node-server
2) cd practice-node-server

express를 사용하기 위해서

npm init // 애플리케이션에 대한 package.json 파일을 작성
npm install express --save // 서버를 열기 위해서 express를 다운로드 받고(save는 넣어야 하지 않을가...)

배포를 하면서 cors문제를 겪게 될텐데,  그 문제를 해결하기 위해서 cors를 설치해ㅈ...지 않는다..(client를 여기에 만들지 않기 때문에 따로 cors 처리 안해줘도 된다고함)

index.js를 만들어 아래와 같이 적어준다.

Start Instance

실제로 AWS 클라우드 컴퓨터인 EC2를 사용해봅니다.

간단한 node server app.을 github 저장소에 올렸다면,
EC2는 인스턴스 개념으로 시작.  인스턴스 시작을 누르고 거긴 다양한 OS를 제공한다(프리티어 사용 잊지마!)
인스턴스 유형선택도 프리티어 선택!  그다음 배포(파란버튼)

인스턴스 시작 검토 -> 시작하기 -> 새 키 페어 생성 -> 키 페어 이름(맘대로. but 그페이지가 넘어가면 다시는 그 키 페어를 넘어갈 수 없음)-> 키 페어 다운로드(pem파일..관리잘해) ->인스턴스시작 ->  뺑뺑이 돌아가고 있는 곳 Name 설정해주기(많으면 헷갈리니까)
좌측 상단 연결 탭을 누르면 어떤 것을 해야하는 지 잘 나와있음..
리눅스기반의 컴퓨터들은 root directory 에

.ssh

가 기본적으로 설정이 되어있는데, 만약 없다면

mkdir .ssh

로 ssh 폴더를 만들면 된다. 이 폴더에

mv <pem 있는 폴더 ex) ~/Downloads/practice-server-deploy.pem>

로 pem을 넣는다.

chmod 400 < 컴터에 pem이 있는 주소> // 우리가 만든 pem키에 권한 부여
ssh -i ~/.ssh/< 컴터에 pem이 있는 주소> 
//ssh 프로토콜을 통해 username@path <instance-user-name>@<퍼블릭IP> 가 들어가야 함

Environment Settings

EC2에서 우리가 작성한 server Application을 구동할 수 있도록 환경 셋팅.

sudo apt update
sudo apt install nodejs
node -v
sudo apt install npm
npm -v

github에 접속해서 아까 우리가 작성했던 server app.을 github에 push하고, 그 github repo를 그대로 clone해야 함.
node module이 현재 설치되지 않은 상태로. package.json에 있는 dependencies만 npm install을 통해 설치함. 이후 ls를 쳐보면 node_modules가 들어간걸 볼 수 있음.
node index.js를 통해 서버를 실행시켜준다. 서버구동이 확인 된 걸 알 수 있음.
아까 퍼블릭IP가 있어서 그 <퍼블릭IP>:<서버포트>들어가면 구동이 될 것 같지만, 안됨. 또다른 보안 설정을 거쳐야한다.(아래)

Environment Settings

외부에서 우리 서버어플리케이션으로 접속 할 수 있도록 보안 설정을 합니다.

우리가 만들었던 인스턴스의 가장 오른쪽에 보안그룹이 있음.
EC2를 만들었을 대 default 이름으로 설정된 그룹이 있을텐데,
인바운드 규칙 편집에서 새 규칙을 추가하여 HTTP유형, 소스는 위치무관을 넣어주고, 또 새규칙 추가하여 유형은 사용자지정 TCP(?)에 포트범위:<서버포트> 소스는 위치무관 넣어준다. 이후 저장.
<퍼블릭IP>:<서버포트> 들어가 다시 새로고침을 해보면 hello practice node server 가 되는것을 알 수 있음.
여기서 문제는 터미널을 끄면 연결이 끊긴다는것.
PM2

터미널을 종료해도 서버가 계속 켜져 있을 수 있도록하는 proccess manager tool인 PM2에 대해서 알아봅니다.

EC2를 통해 형성한 컴퓨터에 pm2를 설치한다.
pm2는 해당 프로젝트뿐아니라 여러 방면에 사용될 수 있어 글로벌 설치를 한다.

//만든 폴더 안에서(ex. practice-server-deploy)
sudo npm install pm2 -g // global은 사용자권한 필요
pm2 start <엔트리포인트 ex) index.js>
pm2 list
pm2 stop <id>
pm2 kill

RDS

Create RDS Instance

데이터베이스 생성 -> MYSQ -> 프리티어 -> 엔진버전: 8번대 선택 -> DB인스턴스식별자: 고유한이름 -> 마스터사용자이름은 아무거나 해도 좋음 -> 암호: 맘대로 -> 퍼블릭액세스:  YES -> 데이터베이스이름 : 암거나 -> 포트: 3306이 기본이나, 보안상 그대로 사용하는건 위험에 노출시킬 수 있음. 앞에 1을 붙이든 뭘하든 해야함. -> 기본세팅은 그냥 넘어가쟈~
. . . DB 생성중 . . .

Connect RDS Database

RDS 생성이 완료가 되었다면 꽤 오랜시간이 지난 후에 정보 사용가능하다는 상태가 뜨게 됨.
엔드포인트와 포트, 마스터 유저네임 그리고 비밀번호 기억하고 가야함.

서버를 통하지 않더라도 mysql cli를 통해 해줘야함.

sudo service mysql start
sudo service mysql restart //우분투 (수정후)
mysql -u <마스터사용자이름> --host <엔드포인트> -P <설정한 포트> -p (엔터)
Enter Password: <패스워드 입력>

// mysql
show databases;
use <DB인스턴스식별자이름 확인 가능하면 그거 넣음>

명령줄 인터페이스(CLI)는 Command-Line Interface 또는 Character User Interface이다. TUI와는 조금 다른 개념이다. 가장 대표적인 예시로는 도스, 명령 프롬프트, bash로 대표되는 유닉스 셸 환경이 있다.

mysql Workbench로 사용할 시 host, username(마스터사용자 이름), password, port 설정해주고 name은 optional로 원하는 이름대로 적어주면 됨

profile
Let's code like chord !

0개의 댓글