EC2 정복하기도 중요하지만 잠깐 용어 한번 살펴볼까요~ 😜
사진과 같은 서버 방 같은거! 층이나 장을 빌려서 서버 쓰는 것.
But, 관리 비효율성, 인건비... 등의 문제로 인해
가상화 해보자! 해서 나온게 바로!
아마존 입장에선 컴퓨터 하나 만든다고 생각하면 되고, 우리는 아마존한테 서버를 빌린다고 생각하면 된다.
우리는 돈을 내면 안되니깐 프리티어라고 750시간 무료로 쓸 수 있는 걸 쓸것. 사용한 기준으로 월 750시간이 무료이다! 아마..?ㅋㅋ 자세한 건 aws 홈페이지에서 확인할 수 있다
그 밖에 알면 좋은 것들...
IP주소에 대한 방화벽
AWS의 데이터베이스 서비스
동일한 서버가 있으면 load balancer가 중간에서 골고루 들어가도록(?) 분배를 해줌
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ절 취 선ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
AWS에 횐갑하고, 카드 정보를 등록하면 1달러가 나간다.
나중에 다시 환급 되긴 하는데.. 나는 돈이 두번 나갔다...왜죠..? 😭
EC2 용량 많이 준다 했지만.. 한 달 열어놓으니 돈이 저정도 나온다
백앤드는 치킨값 뽑은 분도 있다 ㅋㅋㅋㅋㅋ 다들 과금 조심!
일단 https://aws.amazon.com/ko/ 접속 고!
3번째에 있는 우분투 서버 18.04 선택 고고!(프리티어 사용 가능이라고 써있음)
인스턴스 세부 정보 구성 설정은 이렇게..
key를 Name으로, 값은 프로젝트 이름으로 설정해준다!
매번 새로 만들 필요 없고 지난번에 만든 보안그룹 불러오기 하면 됨
나는 포트를 공용포트인 3000으로 설정해놨기 때문에 보안 경고가 뜨긴 하는데 무시 ㄱㄱ
기존 키 갖다쓰기 클릭하면...
짠! Ec2서버가 두개 되었다!
(혹시 몰라 어설픈 모자이크 해보기)
앞서 인스턴스 시작하는 과정에 대해 써봤는데 키가 있어야 인스턴스 시작 할 수 있다!
새 키 페어 생성 옵션 선택 궈궈!
키 생성하고 잘 보관해야함.
터미널에서 cd ~/.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주소
여기서 각자 다른 점!
우분투 서버엔 아무것도 안 깔려있거든.. 내가 지금 쓰고있는 노트북과는 다르게!
그냥 새 컴터 샀다고 생각하고 개발에 필요한 프로그램들을 다 다운받으면 된다.
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
sudo apt-get update
sudo apt-get install nodejs
git clone 프로젝트 repo 주소
그러면 우리는 아마존 서버에 repo를 까는거!
yarn러버들은 sudo apt-get install yarn
npm 깔 사람은 npm install
고고!
일단 npm install
하고.. 안되면 갓 sudo 찬양하라!
sudo
명령어를 쓰면 웬만한 건 다 해결쓰
(과정 중간중간에 npm -v
이런식으로 버전 체크 꼭! 그럼 깔았는지 안 깔았는지 알 수 있음)
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
이 명령어 쓸 때 주의사항.. 한꺼번에 누르지 말고 순차적으로 누르자.
sudo yarn build
혹은 npm run build
명령어를 쓰면 모든 개발코드들이 합쳐지게 됨
뭔가 성공적인 느낌쓰...! 그래도 명령어를 또 입력해야 한다.
node server.js
server.js 파일을 읽어서 node가 돌아간것
nohup node server.js
이걸 해줘야지 서버를 꺼도 주소창 입력하면 됨
--> 작년 11월 쯤부터 nohup 명령어가 안 먹혔는데 요즘도 그런지는 모르겠음 🤔🤔
위의 과정을 다 거치면 정상적으로 우분투 서버에 내 플젝이 떠야 하는데
첫 시도 했을때의 나는 node.scss가 안 깔려 있단 에러가 났다..
이렇게.
우분투의 문젠가 싶었는데 맥을 쓰는 동기님도 나와 같은 에러가 떴다...
그 분이 맥을 사기 당한 것인가.. 아니면 나와 같은 똥손인가 ㅋㅋㅋㅋㅋ
첫 시도에 npm으로 깔아서 두번째엔 yarn 으로 깔았더니 이 에러가 생기지 않았는데
이게 해결책인것 같진 않고...
stackoverflow 검색해봐도 해결한 사람이 없었던 걸로 기억한다 ㅋㅋㅋㅋ
나중에 또 이 에러를 만나면 꼭 해결하고 다시 포스팅해야지!!
분명 최종본을 git에서 merge했는데 그게 안 뜬다!! 그 이유는.. 나의 로컬 서버는 업데이트를 했지만 우분투 서버는 업데이트 해주지 않았기 때문 ㅠㅠ 그럴땐..!
우분투 서버 접속
cd 명령어로 내 프로젝트 디렉토리에 접근
git pull origin master
npm build
pull과 build까지 마치면 성공적으로 아마존 서버에 있는 작업물도 업데이트 할 수 있다!!
룰루~~♬
앞으로 이걸로 즐찾 수정