[AWS] VPC 만들기

서버/AWS 2017. 12. 21. 11:46

AWS에서 이것저것 지우다가 VPC도 지워버렸다. 서브넷도 지웠다. 

뭔지는 몰랐지만, 매우 중요한 것임에는 틀림없다. 

이것이 없어서 EC2인스턴스조차 생성하는데 에러가 발생하였다.

옆에 새 VPC 생성 링크를 클릭해서 VPC 대시보드로 이동한 뒤, 직접 만들 필요없이 기본 VPC만들기를 클릭!

이렇게하면 자동으로 생성된다. 

굳이 직접 만들어서 문제가 발생할 수 있으니, 디폴트 값으로 자동 생성을 추천~



 



Posted by sungho88
,

(참고 자료)

참고 블로그01

참고 블로그02(공홈)


먼저, ELB는 Elastic Load Balancing의 약자. 

EC2를 대상으로 여러대의 EC2 인스턴스로 자동으로 분배하여 웹 트래픽을 분산시켜 주는 역할을 함.


1. 두개의  EC2를 먼저  생성한다. 생성시 Security Group에서 HTTP를 반드시 설정하도록 하자. 


2.왼쪽 탭에서 로드 밸런스를 선택, 로드 밸런스 생성 버튼을 눌러서 진행.



3-1) 원하는 유형을 선택한다. 고성능을 사용할 것이 아니므로 클래식 로드 밸런서를 선택하였다.



3-2) 로드 밸런서 정의에서 로드 밸런서 이름을 기입한다. 그 외에는 건들지않고 다음 버튼 클릭~


하단에 로드 밸런서 포트와 인스턴스 포트


로드 밸런서 포트 : 사용자가 ELB로 접속하는 포트

인스턴스 포트 : ELB에서 웹 서버 인스턴스로 보낼 때 접속하는 포트 


3-3) 보안 그룹 할당! 기존 보안 그룹을 선택할 것인지, 새 보안 그룹을 생성할 것인지 선택!



3-4) 모르겠다. 그냥 패스하고 다음을 클릭하자.



3-5) Ping 경로를 /index.html이 아니라 /으로 변경하자. 그 외에는 그냥 기본으로 두고 넘기자.



3-6) ELB를 통해 로드 밸런스로 등록할 EC2를 체크한다. 하단에 체크는 그대로 놔둔자..


교차 영역 로드 밸런싱 활성화 :

연결 드레이닝 활성화 :


3-7) 태그는 옵션이므로 추가하지 않아도 된다. 그냥 패스~


3-8) 여태까지 했던거 설정 검토!





테스트 타임~


맨 위에서 만들었던 두 개의 인스턴스에 각각 node.js를 설치한다.

적당한 경로에 app.js라는 파일을 생성한다.

그 다음에 서버를 생성하기 위해 다음과 같은 코드를 붙여넣는다.


var http = require("http");

  

http.createServer(function(request, response) {

   response.writeHead(200, {"Content-Type" : "text/html" });

   response.write("Hello ELB - Instance01");

   response.end();

}).listen(80);


response.write("Hello ELB - Instance01");

이 부분을 각각 인스턴스에 다르게 쓴 뒤에 


node app.js를 입력하면 서버가 실행된다.


이제 접속하면 ELB가 적용된다.



Posted by sungho88
,

윈도우에서 Putty를 쓰다가 Mac을 사용하니 미친듯이 쉽다.


먼저, 인스턴스 즉, EC2만든 곳으로 가면 인스턴스 생성 옆에 연결(Connect) 버튼이 존재한다.


연결 버튼을 누르면 연결 방법이 나온다.


첫 번째. 터미널을 오픈한다.(Command + Space한 뒤, 터미널 또는 terminal로 검색)

두 번쨰. EC2 생성할 때 만들었던, 또는 기존에 존재하는 .pem 파일이 존재하는 경로로 이동한다.

세 번째. 그 경로에서 chmod 400 파일이름.pem 을 입력한다.

네 번째. 아래와 같이 예 : 라고 쓰여진 오른쪽 문장을 터미널에 붙여넣는다.


이렇게하면, 터미널에서 접속이 진행되며 yes/no를 물어본다. 이 때, yes를 입력하면 바로 로그인 완료!


이상으로 맥에서 EC2 인스턴스에 접속하는 방법을 정리해보았다.

윈도우의 경우


Puttygen을 찾아서 다운받고,Putty도 다운받고,다시 Puttygen에서 복잡한 과정을 통해

.pem파일을 .ppk로 변경한뒤에 다시 Putty를 열고 생성한 .ppk파일을 더 복잡한 과정을 통해 등록한 뒤에

다시 AWS에 들어가서 IP주소를 복사해서 PUTTY에 붙여넣고 접속.


너무 어렵다.

맥 짱

Posted by sungho88
,

 rm -f test


단순히 파일을 지우고 싶다면, rm(아마도 remove의 약자) -f 파일명 

으로 하면된다.


주의할 점


위 -f의 의미는 묻지도 따지지도 않겠다는 뜻.

파일명을 입력하고 엔터를 치는 순간 파일은 제거된다.



Posted by sungho88
,

아파치에 업로드시킨 후, 웹 브라우저로 접속을 해보았다.


그런데 mysql DB로부터 데이터를 읽어오는데 문제가 발생했다.


영어나 숫자로 된 게시물은 정상적으로 출력되는 반면에,


한글로 된 게시물은 비정상적으로 출력되었다.


즉, 한글을 인식하지 못하여 물음표로만 출력되는 것이었다.


 

뭔가 인코딩 문제라 생각이 들어 구글을 통해 열심히 찾아보았다.


지금 사용하고 있는 우분투 버전은 16.04 최신 버전인데 이것때문에 그럴까?


그것은 아니었다. mysql에 설정이 latin1이 기본적으로 설정되어 있기 때문이라는것을 알게 되었다.


이것을 어떻게 utf8로 변경할까?


이 고마운 블로그


에서 해답을 알 수 있었다.


그 전에,


많은 블로그들이 my.cnf를 고치면 된다고들 했다. (설치 경로 : /etc/mysql)


하지만, 버전이 올라가면서 이 파일에서는 그냥 includedir로 다른 파일을 불러들이는 용도로 변했다.


그래서, 두 가지을 각각 찾아가서 열어보았다.


그 결과 밑에 있는 경로 /etc/mysql/mysql.conf.d/에 있는 mysql.cnf가 중요한 파일이다.


이 파일을 열면


$ sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

또는 


$nano /etc/mysql/my.conf


뭔가 샵#이 붙은 내용이 줄줄이 나오는데, 그 중에서 



[mysqld] 이 부분을 찾아서, 맨 마지막에 캐릭터셋을 지정하주면 된다.


character-set-client-handshake=FALSE 

collation-server=utf8_general_ci 

character-set-server=utf8


그 다음 재부팅~


sudo /etc/init.d/mysql restart


이렇게 복붙하면 utf8로 설정이 되어, 정상적으로 한글이 나오게 된다.

짜잔.






//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////


블로그에 적어놓은 것을 잊고, 한참을 다시 검색하였다.

이번에는 우분투14.04에서 환경을 설정하는 중인데 우분투16.04와 몇 가지 차이점이 있다.


위에서 언급한것과 같이 14.04에서는 


/etc/mysql/my.conf에서 직접 수정이 가능하다(16.04의 경우 Include의 기능만 갖는다)


다음과 같이 


[client]에도,

default-character-set=utf8  추가


[mysqld]에는 이렇게, 여러개   추가

character-set-server=utf8

collation-server=utf8_general_ci

init_connect=SET collation_connection=utf8_general_ci

init_connect=SET NAMES utf8


[mysqldump]에도,

default-character-set = utf8  추가


[mysql]에도, 

default-character-set=utf8  추가


해주면 mysql 설정이 모두 utf-8로 변경이 되었다는 것을 mysql> status를 통해 볼 수 있다.

하지만, 사이트는 여전히... 물음표다. Mysql은 모두 변경되었는데...무엇이 문제일까?

음... 


한참을 검색하다가 많이 눈에 익은 사이트에 들어와서 정답을 알게 되었다.

그 사이트가 바로 내 블로그다ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ


내가 적어두고 다른데가서 삽질하다니.... 삽질 안 하려고 적어두고는 다른데가서 삽질을...


내가 입력한것과 이전에 작성해둔 코드와 비교하니 한 가지만 없었다.

바로바로바로바로


character-set-client-handshake=FALSE 


이것!!!!!!!!!!!!

이것을 


[mysqld] 하단에 넣어주면~?

???????????

?????????????????

????????????????????????


물음표를 좋아하던 사이트가 !

한글로 변환되어 보여지는것을 알 수있다.


정리.

[mysqld]에는 총 5개를 추가해준다.


character-set-client-handshake=FALSE

character-set-server=utf8

collation-server=utf8_general_ci

init_connect=SET collation_connection=utf8_general_ci

init_connect=SET NAMES utf8


Posted by sungho88
,

웹페이지를 만드는 도중에, 파일질라를 통해서 Apache2에 PHP파일을 올렸다.


하지만, Ubuntu에 설치된 PHP 버전과 로컬에서 개발한 PHP 버전이 다를 경우에 문제가 발생한다.


이클립스같은 IDE 툴이 아니기떄문에 어떠한 에러 문구나 틀렸다고 출력해주지 않는다.


단지 접속했을떄 빈 화면만 나올뿐이다.


접속은 된 상태지만 뭔가 코드가 잘못되어 아무런 화면이 나오지 않을 경우 어디가 문제인지 확인하고 싶다면 아파치 내에 error log파일을 열어보면 된다.


접속 도중 에러가 발생하면 이곳에 로그로 쌓이기 떄문이다.


경로는 /var/log/apache2/error.log 이다.


$ sudo nano /var/log/apache2/error.log 


이런식으로 입력하면 열린다.


몇 천줄씩 나오기떄문에 


Ctrl + _ 


명령어를 통해 가장 아래줄로 내려가서 에러를 확인할 수 있다.



Posted by sungho88
,

벌써 몇 번째 재생성인지 모르겠다.

인스턴스 만들고 접속하는데 하루종일 걸릴때가 있었는데 하도 많이 만들어서

설치방법 블로그 등을 참고하지 않고도 만들 수 있게 되었다.


어쩃거나 방금전에 


puttygen을 이용하여 putty로 접속하는데 필요한 ppk파일을 만드는 방법



을 적었다. 


이번에는 만들어진 ppk를 갖고 AWS에서 만든 원격 인스턴스로 접속하는 방법을 작성하려한다.


1. 일단 putty를 연다.


2. Host Name(or IP Address)에다가 다음과 같이 작성한다.


 

ubuntu@ec2-xxxxxxxxxxxxxxxxxxx


앞에는 우분투 운영체제이기떄문에 기본값으로 ubuntu로 했고, 뒤에는 본인의 주소를 쓰면된다.

그게 뭐냐면 AWS에 로그인해서 생성된 인스턴스를 눌러보면 하단에 자세히 나온다.

다음과 같이...

위 - Public DNS나

아래 Public IP나 둘 중 아무거나 써도 된다.


3. 그다음 옆에 Port의 경우 SSH이므로 22로 하고


4. 밑에 Connection type의 경우 SSH로 둔다


위 순서는 어떤 SSH 접속에서나 작성하는 일반적인 순서였지만, 특이한 것은 다음과 같다



5. 왼쪽 카테고리에서 


Connection - SSH - Auth를 클릭 


Browse... 를 선택한 후, 변환한 ppk파일을 Open해주어야한다.


그러면 세팅 끝


다시 Session 카테고리로 돌아와서 Open을 누러면 접속이 될 것이다.

만약 이 정보를 다시 입력하지 않고 싶다면 Save Session에 원하느 이름을 입력한 뒤 Save를 누른다.

그러면 정보가 저장되어 다시 위와같은 순서를 거치지 않고 로그인할 수 있다.


접속 전 무슨 경고창이 뜨는데, 그냥 무시하고 OK눌러도 아무 문제없으므로 설명은 패스...




이상으로 putty를 통해 AWS내 EC2 인스턴스로 접속하는 방법에 대해 마치도록 하겠습니다.

Posted by sungho88
,

AWS를 생성했으면, putty등을 통해 SSH로 접속해야한다.

맥에서는 터미널을 통해 pem파일로 접근이 가능하지만, 윈도우의 경우에는 불가능하다.

참고로 pem파일은 AWS을 통해 인스턴스를 생성할 때 다운로드받을 수 있다.


그래서 pem파일을 ppk파일로 변경해주는 쓸데없는 작업을 해주어야한다.

이를 위해서 Puttygen이라는 툴을 받아준다.(puttygen 다운로드)


별도의 설치가 필요없이 바로 실행파일이 열리며 아래와 같이 나온다.

그러면 


첫번째.  Load를 통해 pem파일을 불러온다.

불러올때는 ppk파일만 찾으려하므로 모든 파일을 놓아야 모든 파일이 보일 것이다.



성공적으로 불러왔다면 아래 이미지와 같이 성공적으로 임포트했다고 창이 뜬다.

확인을 눌러 닫는다.


아래에서 SSH-1로 체크를 한 뒤,

Save private key를 누르면 ppk를 저장할 위치와 저장할 이름을 입력하는 창이 뜬다.

가급적이면 pem파일과 동일하게 작성을 한 뒤, 저장을 하게 되면 ppk파일이 생성된다.

참고로 뭐라뭐라 영어로 물어보는데, 비밀번호 설정을 안 할 것인지에 대한것이다.

그냥 OK누르면 진행된다.







이상으로 puttygen을 통해 pem파일을 ppk로 변환하는 과정을 정리해보았다.


Posted by sungho88
,

EC2의 개념정리


EC2는 Elastic Compute Cloud의 약자.

아마존 웹 서비스(AWS)에서 가장 중요한 서비스이다.


한 대의 컴퓨터를 임대한다는 개념이며 특별한 컴퓨터도 아니다. 

우리가 흔히 사용하는 컴퓨터와 같다고 할 수 있으며, 

실제 컴퓨터로 할 수 있는 광범위한 작업들을 EC2를 통해 작업을 할 수 있다.


다만, EC2는 물리적이 아니라 아마존에서 세계 각 지역에 만들어놓은 인프라(데이터 센터)에 

만들어지는 것이기때문에 네트워크를 통해 제어를 해야한다.

(참고로 2016년. 서울에도 데이터 센터가 생겼다. 좀 더 빨라지지 않을까?)


AWS의 경우 클릭 몇 번만에 컴퓨터 1대를 설치할 수 있으므로 편리하다.

또한, 컴퓨터가 필요없게 됐을때 클릭 몇 번만에 컴퓨터를 설치할 수 있으므로 편리하다.

즉, 유연하며, 탄력이 있는 컴퓨팅이 가능하다.

EC2에 Elastic도 "탄력이 있는, 유연한" 이라는 뜻이다. 그래서 EC2로 이름을 만들은 것일수도 있겠다.

즉, 컴퓨터 생성 및 삭제가 매우 쉽다.


자신이 선호하는 OS를 설치하고, 웹 서비스를 위해 필요한 프로그램(웹 서버, DB)을 설치하면 된다.


EC2를 통한 가장 기본적인 업무는 


웹서버를 설치하고 이 웹서버를 통해서 

사용자가 웹브라우저를 통해 요청하는 웹페이지나 이미지, 동영상 등을 제공하는 것이다.


인스턴스란 1대의 컴퓨터를 의미하는 단위이다.



결론.


특징


1. 인터넷을 통해서만 접속을 할 수 있다.

2. 컴퓨터 주문 후 1분안에 생성이 가능하며 삭제 역시 즉시 제거가 가능하다.

3. 초기 구입비가 전혀 없고, 사용한만큼 비용을 지불하면 된다.

4. 컴퓨터를 사용할때 프로그램 설치, 파일 저장, 설정 변경... 이 상태 그대로 저장이 가능하다.

이를 이미지라고 한다. 이 이미지를 이용해서 새 컴퓨터를 만들면 저장된 상태와 똑같은 컴퓨터를 

생성할 수 있다. 컴퓨터를 생성할때마다 반복적으로 설치하는 작업을 하지 않아도 되는 것이다.


AWS에서 EC2 서비스 - 인스턴스를 생성하는 방법은 이미 블로그에 작성을 해놨다.


인스턴스는 AWS에서 컴퓨터 하나를 의미한다.

인스턴스를 4개 생성한다는 표현은 4개의 컴퓨터를 AWS 인프라 위에 생성한다는 뜻이다.

 



EC2와 웹 서버


다시 말하면,

EC2의 인스턴스는 한 대의 독립적인 컴퓨터이기 때문에 뭐든 일을 EC2로 할 수 있다.

하지만, AWS를 위해 고안된 인프라 서비스이고, AWS에서 제공하는 서비스 중에 웹서버 역할을 할 수 있는 서비스는 EC2밖에 없기때문에 가장 중요한 기능은 역시 웹서버라고 할 수 있다.

즉, 인스턴스에 웹서버를 설치하는 방법에 대해 알아보고, 웹서비스를 하는 방법에 대해 알아보자.


웹서버인 Apache를 설치하기위해 SSH를 통해 인스턴스에 접근을 해야한다.

이것역시 이전에 블로그에 작성해놨다.


PUTTY를 이용하여 인스턴스에 접근하는 방법



이와같은 Welcome to ubuntu  ~~~~~~

라고 나온다면 정상적으로 접속한 것!!!!



접속을 완료했다면, 다음과 같은 명령어를 입력한다.



sudo apt-get update;


뭔가 쭉쭉쭉 쫙쫙쫙 올라가면서 자동으로 뭔가가 설치된다.

설치되어있는 모둔 패키지를 새 버전으로 업데이트 시키라는 명령어다.



sudo apt-get install apache2;

아파치(Apache) 웹서버가 설치되었다.



정리.


Linux 기반의 ubuntu 환경의 인스턴스를 만들었고, 그 위에 아파치를 설치했다.

이제 접속이 되는지 테스트를 해봐야겠다.


웹브라우저에 Public DNS 주소를 쳐보자.



이런 화면이 나온다면 정상적으로 동작하고 있는것이다!!!!!!!!!!!










Posted by sungho88
,

아마존 웹 서비스(Amazon Web Service)는 줄여서 AWS라고 부른다.


클라우드(Cloud) & 아마존 웹 서비스(AWS)

- 인프라 제공하는 역할을 하고, 웹 서비스를 해야하는 개발자들은 이 인프라를 임대하여 사용한다.

- 즉, 서버의 구매, 구축, 운영을 대행해주는 서비스이다.(웹 호스팅과 유사함)

- 탄력적인 인프라 운영(사용자의 폭주 시 서버의 성능, 갯수를 유동적으로 빠르게 변경이 가능하다)

- 사용한만큼 과금하는 방식이다.

  

EC2 

- Elastic Compute Cloud

- 쉽게말해 1대의 독립적인 컴퓨터를 임대한다고 생각하면 된다. 평범한 컴퓨터처럼 사용할 수 있다.

- 다만 물리적인 컴퓨터가 아니라 가상의 컴퓨터이다.

- Linux, Window 운영체제 제공한다.

- 웹서버 또는 애플리케이션 서버로 사용된다.


S3

- Simple Storage Service

- 파일 서버라고 할 수 있다.(이미지나 동영상을 갖고 있다가 제공)

- EC2에도 할 수 있지만, S3의 경우 특정 변경없이 무제한 저장이 가능하기 때문에 주로 사용된다.

- 스케일은 아마존 인프라가 담당하기때문에 편리하다.

- 1바이트 ~ 5테라 바이트의 단일 파일을 저장하는 것이 가능하다.


RDS

- Relational Database Service

- MySQL, Oracle, MsSQL 등등이 존재한다.

- DB를 쉽게 운영할 수 있게해주는 서비스이다.

- 백업, 리플리케이션과 같은 것을 아마존 인프라가 자동으로 제공한다.


EDB

- Elastic Load Balancing

- EC2로 유입되는 트래픽을 여러대의 EC2로 분산하는 기능을 한다.

- 장애가 발생한 EC2를 감지해서 자동으로 배제하는 기능을 한다.

- Auto Scaling 기능을 이용해서 EC2를 자동으로 생성 및 삭제를 한다.


위와 같은 서비스들을 조합해서 웹 서비스를 만들면 되는것이다.

AWS를 제어하는 방법에는 세 가지가 존재한다.


첫 번째. AWS Management Console

두 번째. CLI

세 번째. SDK


(1)AWS Management Console

웹에서 접속하기 때문에 언제 어디서든 접속이 가능하며 다른 것들에 비해 쉽고 사용하기 편하다.

하지만, 일부 기능의 경우 CLI를 통해서만 제공되기떄문에 상호보완적인 관계라 할 수 있다.


(2)CLI

Command Line Interface의 약자로 명령어를 이용해서 서비스를 제어한다.

아이콘과 같은 GUI 환경이 컴퓨터 세계를 장악했지만, 코딩으로 해야하는 부분이 존재한다.


(3)SDK

Software Development Kit의 약자로 각 언어(Java, Python, PHP ..)별로 AWS를 프로그래밍으로 제어할 수 있는  API 묶음이다. 이를 이용해서 AWS 인프라를 제어할 수 있는 명령어라고 할 수 있다. 

Posted by sungho88
,