AWS EC2 서버뚫기 도전도전

둘둘·2020년 5월 8일
9
post-thumbnail

아마존 하면 원더우먼쓰~

EC2 정복하기도 중요하지만 잠깐 용어 한번 살펴볼까요~ 😜

IDC(Internet Data Center)란?

사진과 같은 서버 방 같은거! 층이나 장을 빌려서 서버 쓰는 것.
But, 관리 비효율성, 인건비... 등의 문제로 인해
가상화 해보자! 해서 나온게 바로!

EC2

아마존 입장에선 컴퓨터 하나 만든다고 생각하면 되고, 우리는 아마존한테 서버를 빌린다고 생각하면 된다.

우리는 돈을 내면 안되니깐 프리티어라고 750시간 무료로 쓸 수 있는 걸 쓸것. 사용한 기준으로 월 750시간이 무료이다! 아마..?ㅋㅋ 자세한 건 aws 홈페이지에서 확인할 수 있다

그 밖에 알면 좋은 것들...

Secuirty Group

IP주소에 대한 방화벽

RDS(Relational Database Service)

AWS의 데이터베이스 서비스

Load Balancer

동일한 서버가 있으면 load balancer가 중간에서 골고루 들어가도록(?) 분배를 해줌


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ절 취 선ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

시작은 1달러 지불부터..

AWS에 횐갑하고, 카드 정보를 등록하면 1달러가 나간다.
나중에 다시 환급 되긴 하는데.. 나는 돈이 두번 나갔다...왜죠..? 😭

EC2 용량 많이 준다 했지만.. 한 달 열어놓으니 돈이 저정도 나온다
백앤드는 치킨값 뽑은 분도 있다 ㅋㅋㅋㅋㅋ 다들 과금 조심!

👀 EC2 생성해보자!

일단 https://aws.amazon.com/ko/ 접속 고!

👉 서비스탭의 EC2 클릭 그리고 인스턴스 시작

👉 AMI 선택

3번째에 있는 우분투 서버 18.04 선택 고고!(프리티어 사용 가능이라고 써있음)

👉 인스턴스 유형 선택

👉 인스턴스 구성

인스턴스 세부 정보 구성 설정은 이렇게..

  • 인스턴스 개수 : 1
  • 네트워크 : 기본값
  • 서브넷(Sub-network) : 기본값 2a(처음껄로)
  • 퍼블릭 ip 자동할당 : 기본값 활성화로
  • 종료방식 : 중지 => 종료 하면 서버 날려버림(우발적인 종료로부터 보호 체크)
    종료방지 기능 활성화를 눌렀기 때문에 ec2를 종료하려면 미리 설정변경하고 종료해야됨!

👉 스토리지 추가

👉 태그추가

key를 Name으로, 값은 프로젝트 이름으로 설정해준다!

👉 보안 그룹 구성

매번 새로 만들 필요 없고 지난번에 만든 보안그룹 불러오기 하면 됨

👉 검토

나는 포트를 공용포트인 3000으로 설정해놨기 때문에 보안 경고가 뜨긴 하는데 무시 ㄱㄱ

👉 기존 키 페어 선택 or 새 키 페어 생성

기존 키 갖다쓰기 클릭하면...

짠! Ec2서버가 두개 되었다!

(혹시 몰라 어설픈 모자이크 해보기)

🗝 키 발급받기

앞서 인스턴스 시작하는 과정에 대해 써봤는데 키가 있어야 인스턴스 시작 할 수 있다!

새 키 페어 생성 옵션 선택 궈궈!
키 생성하고 잘 보관해야함.

이어서...

터미널에서 cd ~/.ssh 한담에

ssh 키 생성

ssh-keygen 하면 키를 생성할 수 있음

엔터 쭉쭉~
저기서 비번 설정하면 실행 할때마다 비번 입력해야되서 비번 노노~

다시 ssh 디렉토리에서 ls 해보면 id_rsa id_rsa.pub known_hosts 세개가 생겼음

cat id_rsa.pub 하면 키 생성할 수 있음
키 복붙하고 깃허브로 고고

그 전에!! chmod -R 400 명령어를 통해 권한설정을 해야함.
권한설정을 하지 않으면 아마존에서 나의 키를 쓸 수가 없음 ㅠㅠ

github settings 들어가서 SSH Keys 누르면 New SSH Keys 눌러
title은 내맘대로 고~ 나는 ubuntusiro로 했음
(지금은 아기사과의 주인이지만 이때만 해도 그램에 우분투 설치했던 유저였음)

👐 우분투 서버 열기

ssh -i 다운로드/dooreplay.pem ubuntu@나의 aws ip주소

여기서 각자 다른 점!

  • 다운로드 자리에 키 다운받은 경로 쓰기
  • dooreplay.pem 자리에 각자 키이름 쓰기!!

우분투에 node랑 다시 깔기 왜냐

우분투 서버엔 아무것도 안 깔려있거든.. 내가 지금 쓰고있는 노트북과는 다르게!
그냥 새 컴터 샀다고 생각하고 개발에 필요한 프로그램들을 다 다운받으면 된다.

curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -

sudo apt-get update
sudo apt-get install nodejs

플젝 clone해오기

git clone 프로젝트 repo 주소

그러면 우리는 아마존 서버에 repo를 까는거!

npm 혹은 yarn 깔기

yarn러버들은 sudo apt-get install yarn
npm 깔 사람은 npm install 고고!

일단 npm install 하고.. 안되면 갓 sudo 찬양하라!
sudo 명령어를 쓰면 웬만한 건 다 해결쓰

(과정 중간중간에 npm -v 이런식으로 버전 체크 꼭! 그럼 깔았는지 안 깔았는지 알 수 있음)

express

yarn add express 혹은 npm install express 고고
express를 프로젝트 폴더 내부에서 해줘야 함!

로컬 서버 바꿔주기

vi 치고 i 눌러서 입력모드로 들어가기
근데 여기서 잠깐! 제목을 입력 안해주면 안된다리

vi server.js 라고 써주기

const express = require('express');
const path = require('path');
const env = process.env.ENV;
const app = express();
app.get('/ping', function(req, res) {
  res.send('pong');
});
app.use('/', express.static(path.join(__dirname, 'build')));
app.get('/*', function (req, res) {
  res.set({
    "Cache-Control": "no-cache, no-store, must-revalidate",
    "Pragma": "no-cache",
    "Date": new Date()
  });
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.listen(8080, () => {
  console.log('listening: ' + env);
});

이거 쓴 다음에 밑에서 두번째 줄 port 8080->3000으로 바꾸기
(내가 ec2 port를 위에서 3000으로 설정해주었기 때문)

편집기 모드를 나가려면 esc:wq + Enter

이 명령어 쓸 때 주의사항.. 한꺼번에 누르지 말고 순차적으로 누르자.

build하기

sudo yarn build 혹은 npm run build
명령어를 쓰면 모든 개발코드들이 합쳐지게 됨

뭔가 성공적인 느낌쓰...! 그래도 명령어를 또 입력해야 한다.

node server.js server.js 파일을 읽어서 node가 돌아간것
nohup node server.js 이걸 해줘야지 서버를 꺼도 주소창 입력하면 됨

--> 작년 11월 쯤부터 nohup 명령어가 안 먹혔는데 요즘도 그런지는 모르겠음 🤔🤔

💔만났던 에러

위의 과정을 다 거치면 정상적으로 우분투 서버에 내 플젝이 떠야 하는데
첫 시도 했을때의 나는 node.scss가 안 깔려 있단 에러가 났다..

이렇게.

우분투의 문젠가 싶었는데 맥을 쓰는 동기님도 나와 같은 에러가 떴다...
그 분이 맥을 사기 당한 것인가.. 아니면 나와 같은 똥손인가 ㅋㅋㅋㅋㅋ

첫 시도에 npm으로 깔아서 두번째엔 yarn 으로 깔았더니 이 에러가 생기지 않았는데
이게 해결책인것 같진 않고...
stackoverflow 검색해봐도 해결한 사람이 없었던 걸로 기억한다 ㅋㅋㅋㅋ

나중에 또 이 에러를 만나면 꼭 해결하고 다시 포스팅해야지!!

추후.. Repo가 업데이트 되었다면..

분명 최종본을 git에서 merge했는데 그게 안 뜬다!! 그 이유는.. 나의 로컬 서버는 업데이트를 했지만 우분투 서버는 업데이트 해주지 않았기 때문 ㅠㅠ 그럴땐..!

우분투 서버 접속
cd 명령어로 내 프로젝트 디렉토리에 접근

git pull origin master
npm build 

pull과 build까지 마치면 성공적으로 아마존 서버에 있는 작업물도 업데이트 할 수 있다!!
룰루~~♬

profile
Dooreplay! 안 되면 될 때까지,

3개의 댓글

comment-user-thumbnail
2020년 6월 2일

앞으로 이걸로 즐찾 수정

답글 달기
comment-user-thumbnail
2020년 8월 23일

앞으로 이걸로 즐찾 수정

1개의 답글