일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- HOC
- v-html
- TypeScript
- express
- 쉬운설명
- Vue
- Vue transition
- scss
- event
- webpack
- storybook
- 자바스크립트
- ES6
- MySQL
- nodejs
- 자료구조
- CSS
- sass
- input
- App.vue
- 댓글달기
- Vue.js
- Wecode
- vuex
- 리액트
- react
- JavaScript
- jsx
- State
- mapGetters
- Today
- Total
익명의 개발노트
[EC2] 설정 본문
EC2 서버는 인스턴스라고 부른다.
1. 지역을 먼저 설정한다. (기본값이 아마 미국으로 되어있을 것임)
2. 위 그림에서 파란버튼(lunch instance) 클릭.
3. 클릭후 원하는 OS 선택한다.
4. OS 를 선택한 후에 사양을 결정하게 된다. 사양이 좋을 수록 비싸다.
5. 하단 부의 버튼 중 next로 표기 된 것을 선택하자.
가운데 버튼은 디폴트값으로 지정하는 거고, NEXT 버튼은 세부설정 버튼이다.
6. 세부설정
네트워크는 하나밖에 없고, 서브넷은 No preference로 지정한다. (백엔드 개발자는 알아둬야한다.)
auto-assign public IP는 자동 퍼블릭 ip설정 할 것인지 설정하는 것이며, 원래는 퍼블릭을 disable해야한다.
왜? 서버는 원래 외부에서 아무나 접근하면 안되기 때문이다.
교육용 개인플젝등을 하려면 사용해도 된다.
나머지 설정은 디폴드값으로 한다.
설정이 끝났으면 Next : Add Storage 누른다.
7. 스토리지 값은 수정사항없으면 그냥 다음 누른다.
8. add tag는 서버가 여러개일때 서버에 대한 이름?이나 메타 정보를 적어놓는 곳이다. 교육용에서는 별필요없다. 다음버튼 누르자
9. 보안그룹 설정(방화벽역할)
타입은 통신방법을 설정하는 것이다. 여러가지방식이 있다.
기본적으로 서버에 접속하는 방식이 SSH방식 밖에 거의 없기 때문에 SSH 방식으로 설정하고,SSH는 TCP방식이고 기본포트값이 22번 포트이다. (HTTP는 80포트, HTTPS는 443포트)
나는 프론트엔드 서버를 띄울꺼라 3000포트를 사용해서 할 것이다(포트설정은 자기마음대로 하면된다)
나중에 서버포트랑 맞춰줘야한다.
타입에서 custom TCP rule를 선택하고, port range에 원하는 포트를 적는다.
Source는 어디서만 접근가능하게 할 것인지 정하는 부분이다.
내 IP만 접속하게하냐, 어디서든 접속하게하냐(any where)아니면 커스텀으로 설정할 수있다. 개인플젝은 어디서나 하니깐 anywhere로 하겠다. 이렇게 지정하면 밑에 경고창들이 많이 뜨는데.. 실제 서비스가서는 지금 설정한 거 처럼하면 안된다.
보안을 신경써야한다.
다음버튼을 누른다.
10. 설정한 내용 재 확인
우측 하단 파란버튼 누르면
위와 같은 모달창이 뜨고 .pem 키를 생성하라고 한다.
* 여기서 pem키는 매우 중요하다. 잃어버리면 서버 지웠다가 다시 설치해야한다.
create a new key pair 로하면 키를 다운로드 받을 수 있게 해준다. 여기서만 다운로드 받을 수 있기때문에 절대로 잃어버리면 안된다.
11. 생성을 완료하면
좌측메뉴에서 인스턴스를 클릭하자.
클릭하면 아래 Description이 있고, IPv4 Public IP의 주소를 복사하자.
이 주소가 내가 부여받은 EC2주소이다
12. 이제 EC2에서 사용할 수 있게 배포키(Deploy 키)를 생성한다.
배포에만 사용할 수 있도록 readonly의 특성을 가지고 있다.
https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
위 주소에서 밑에꺼 전 순번까지만 실행하면된다.
$ ssh-add ~/.ssh/id_rsa //여기까지만!
그리고 터미널에서 아래와 같이 명령어를 작성한다.
cat ~/.ssh/id_rsa.pub
입력하면 키값이 나온다.
키값은 배포할 플젝 repository에 들어가면 settings있는데, settings 로 들어가면 deploy가 있다. 여기에 키값을 넣으면 된다.
(레포 관리자만 볼 수 있음, 프로젝트중이면 관리자에게 키값 보내주면 관리자가 직접 등록할 것임)
깃헙에 관리자가 등록을 했으면, 이제 클론을 할 수있다.
클론전에 EC2서버로 접속하자.
13. EC2 서버 접속
명령어
ssh -i ~/Downloads/aws-lunch-buddy.pem ubuntu@퍼블릭IP
ssh -i ~팸키설치경로 os명@퍼블릭IP
14. 깃에서 클론
클론 with SSH로 바꿔준 후 (use SSH 누르면됨) 주소값 복사해서 클론한다.
15. 프론트엔드, 백엔드 기술을 어떤 것을 쓰냐에 따라 다르게 설정한다.
프론트엔드는 js기반이다 보니 노드, npm을 설치해주어야한다. 백엔드를 노드로 하는 경우 이렇게 한번만 하면 된다.
sudo apt update
sudo apt install nodejs
sudo apt install npm
백엔드를 장고로 할경우에는 가상환경 설치하고 환경변수 잡아줘야한다.
16. 클론받은 소스 코드를 실행하기 위해서 서버를 켜줘야하는데, server.js 파일에 express, koa, node 중 하나로 서버를 작성해서 서버를 열어준다.
로컬에서 root에 server.js를 만들고 아래와 같이 작성한다.
const express = require('express');
const path = require('path');
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(3000, () => {
console.log('success!');
});
17. 작성하였으면 git add / commit / push 한 후 merge 된 후 EC2 서버에서 pull로 댕겨받는다.
18. package.json에 express가 추가되었으므로 npm install를 해준다
19. pull받은 후에 npm run build 를 한다.
에러 날 경우 npm 버전이 낮아서 발생할 확률이 높다. 에러발생하면 아래와 같이 입력한다.
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
20. 터미널이 꺼지면 서버도 꺼지는데, 터미널 종료 후에도 서버가 돌아가게 하려면
nohup node server.js &
입력하면된다.
이제 로컬에서 수정하고 reposiroty로 push하면, 서버에 접속해서도 pull 당겨줘야한다.
'Cloud > AWS' 카테고리의 다른 글
[RDS] 데이터베이스 설정. (0) | 2019.07.11 |
---|---|
AWS의 정의와 종류 (0) | 2019.07.11 |